Skocz do zawartości

Kurs Arduino II - #4 - przerwania, kontaktron, czujnik PIR


Pomocna odpowiedź

@drozdziak, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Dnia 8.11.2018 o 22:18, drozdziak napisał:

mega fajny artykuł! idealny do nauki 🙂

mam taki maly problem, bo napisalem prosty program ktory, jeśli odległość wskazania czujnika jest mniejsza niż 100 cm to włącza monitor i wyświetla tą wartość na monitorku przez 5 sek.

Cieszę się, że artykuł nadal jest pomocny. Jeśli chodzi o Twoje problemy to oczywiście warto zająć się dalszym rozwijaniem programu (filtrowanie i uśrednianie pomiarów), ale zacząłbym też od sprawdzenia elektroniki. Upewnij się, że masz dobre zasilanie, nie ma luźnych przewodów itd. Sprawdź też ustawienie czujnika, jeśli "patrzy" minimalnie w dół to możesz mieć czasami zakłócenia, bo czujnik np. zobaczy biurko, na którym leży itd.

Link to post
Share on other sites

Witam wszystkich serdecznie. Na wstępie chciałbym bardzo podziękować za kurs, który jest naprawdę świetnie napisany! Kawał dobrej roboty! 😄

Mam jednak problem który odkryłem podczas tej lekcji, mianowicie kontaktron podpięty do pinu 0 nie działa, przy sprawdzaniu problemu okazało się że to samo dotyczy np. diody LED. Nigdy nie miałem problemów z płytką aż do tej pory 😕 Możliwe jest uszkodzenie jedynie pojedynczego portu płytki? W moim przypadku wszystko oprócz pinu 0 działa poprawnie 😞 

Link to post
Share on other sites

W ramach testów wrzuciłem na płytkę kod żywcem skopiowany z kursu więc kod nie jest tutaj problemem. Zmiana definicji kontaktronu z pinu 0 na np pin 1 (oraz przepięcie kabla kontaktronu ;)) zalatwia sprawę, kontaktron działa prawidłowo 

Link to post
Share on other sites

Więc nadal nie wiesz co z tym portem. Do testów to sobie uruchom np. taki programik:

void setup() 
{
  pinMode(0,OUTPUT);
}

void loop() 
{
digitalWrite(0,HIGH);
delay(500);
digitalWrite(0,LOW);
delay(500);
}

Tu sprawdzisz działanie portu jako WYJŚCIE. Podłącz do niego katodę diody LED, a anodę tej LED przez rezystor np. 330R do +5V. LED powinien migać.

Jeśli chcesz sprawdzić działanie tego portu jako WEJŚCIE to możesz się posłużyć np. takim programem:

void setup() 
{
  pinMode(0,INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() 
{
Serial.println(digitalRead(0));
}

Teraz uruchamiasz monitor portu szeregowego i na port podajesz 0 czyli GND i nie podajesz (będzie 1 przez wewnętrzny PULLUP). W monitorze powinieneś widzieć 0 i 1.

Link to post
Share on other sites

Dzięki za odpowiedź, tak jak pisałem w pierwszym poście, sprawdzałem działanie LEDa na pinie 0 i dioda się wgl nie zaświeca. Przetestowałem drugi program który podesłałeś i Arduino wysyła do ciągle wartość 1, nie reaguje na wpięcie/wypięcie GND 😕

Link to post
Share on other sites

No to przy założeniu, że do Arduino nic nie było podpięte (nawet PC - Arduino zasilane np. z bateryjki nie z USB!) to może mamy do czynienia z fizycznym uszkodzeniem portu.

Edytowano przez Belferek
Link to post
Share on other sites

@Rafgart, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Dnia 15.11.2018 o 15:47, Rafgart napisał:

Witam wszystkich serdecznie. Na wstępie chciałbym bardzo podziękować za kurs, który jest naprawdę świetnie napisany! Kawał dobrej roboty! 😄

Miło słyszeć, że kurs jest pomocny 🙂

Jeśli chodzi o Twój problem to akurat testowanie go przez UART (w taki sposób) nie jest zbyt dobrym wyborem. Pin 0, który testujesz jest wykorzystywany do komunikacji przez UART i nie powinno się w takim przypadku podłączać do niego żadnych elementów (mogą zakłócać komunikację). Lepiej zrobić test takim programem:

int incomingByte = 0; 

void setup() {
    Serial.begin(9600); 
}

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    Serial.print((char)incomingByte);
  }
}

Wgraj go i uruchom monitor portu szeregowego. Wszystko co wyślesz do Arduino powinno natychmiast wrócić do PC i być wyświetlone jako dane odebrane. Dzięki temu sprawdzisz działanie całego UARTu (czyli przy okazji sprawdzisz pin 0 oraz pin 1). Daj znać czy taki program u Ciebie działa. Pamiętaj tylko, aby ustawić w monitorze portu szeregowego odpowiednią prędkość transmisji tj. 9600. Sprawdziłem kod przed chwilą na Arduino UNO i działa na 100%.

Link to post
Share on other sites

Dodam tylko, że programik jaki ja zaproponowałem też działa OK. Sprawdziłem "namacalnie" 🙂 z Arduino podpiętym przez USB do PC. To że D0 jest wykorzystywane do transmisji szeregowej z układami zewnętrznymi za pośrednictwem UART to tak na marginesie nawet jest "napisane" na płytce UNO (RxD czyli receiver - odbiornik).

Edytowano przez Belferek
  • Lubię! 1
Link to post
Share on other sites
8 godzin temu, Rafgart napisał:

Dzięki za program. Przetestowałem go na swojej płytce i działa bez zarzutu. Wychodzi na to że komunikacja płytki z PC działa poprawnie (ufff :D) 

To dobry znak, ale warto jednak iść dalej. Wgraj teraz zwykły program Blink z przykładów dostępnych w IDE. Sprawdź czy zadziała normalnie w domyślnej konfiguracji (miganie diody wbudowanej w Arduino - pin 13). Jak zadziała to podmień informacje o diodzie na pin 0 i sprawdź woltomierzem, czy na tym pinie będzie coś się zmieniało. Musiałbyś mieć pecha, aby tak uszkodzić płytkę, aby UART działał, ale zwykłe sterowanie portem cyfrowym było już uszkodzone. 

Dnia 17.11.2018 o 14:01, Belferek napisał:

Dodam tylko, że programik jaki ja zaproponowałem też działa OK.

Tak, w tym układzie będzie działał, ale jeśli ktoś chciałby testować pin nr 1, albo miałby podłączone jakieś "dziwne" peryferia do tych pinów to program nie działałby już poprawnie. Dlatego lepiej, akurat do testowania działania pinów numer 0 i 1 nie używać UARTa 😉

Link to post
Share on other sites
Dnia 22.11.2018 o 00:47, Treker napisał:

Jak zadziała to podmień informacje o diodzie na pin 0 i sprawdź woltomierzem, czy na tym pinie będzie coś się zmieniało. Musiałbyś mieć pecha, aby tak uszkodzić płytkę, aby UART działał, ale zwykłe sterowanie portem cyfrowym było już uszkodzone. 

@Treker Sprawdziłem tak jak radziłeś i niestety, port 0 nie podaje żadnego napięcia. Dla pewności wykonałem też pomiar dla innego portu i tam wszystko się zgadzało

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.