Skocz do zawartości

Sprawdzenie, czy Arduino jest uszkodzone


kabaczek

Pomocna odpowiedź

Siemanko.

Po dłuższej przerwie odkurzyłem swoje stare Arduino i na początek chciałem zrobić brzęczek do sprawdzania ciągłości obwodów - nie mam przy sobie multimetru 😄

W skrócie - jak na wejściu jest stan wysoki, ustawiam stan wysoki na wyjściu - świeci dioda i brzęczy brzęczyk.

Niby nic skomplikowanego, ale mój układ robi czary, których nie potrafię wyjaśnić. Lampka zapala się jak chce - od dotknięcia pinu drutem, przesunięcia płytki, machnięcia ręką. Problem mniej więcej spróbowałem nagrać.

Zanim zdecyduję, że jest skopana płytka chciałbym, żebyście rzucili okiem. Może popełniłem jakiś błąd kardynalny, jako że od długich miesięcy nic nie robiłem, a może mam wszystko dobrze z układem i programem, ale problem jest z płytką i idzie go prosto naprawić.

Wrzucam kod, zdjęcie i link do filmu. Liczę na waszą pomoc.

void setup() {
  // put your setup code here, to run once:
  #define in 7
  #define out 2
pinMode(out,OUTPUT);
pinMode(in,INPUT);
Serial.begin(9600);
Serial.println("test");
}

void loop() {
  // put your main code here, to run repeatedly:
if(digitalRead(in)){
  digitalWrite(out,1);
  Serial.println("wysoko");
}
else{ 
  digitalWrite(out,0);
  Serial.println("nisko");
  }
delay(100);
}

film:

https://drive.google.com/file/d/1oc60N-kuy-NoqgvTRTCiKCs4GPN6iiQ9/view?usp=sharing

układ:

IMAG0754.thumb.jpg.818201c1ab71ae390e6f6e3e7695887c.jpg

Dodam jeszcze, że próbowałem użyć innych kabli oraz pinów.

Link do komentarza
Share on other sites

Ok, doczytałem, że należy połączyć wejście równolegle do masy z rezystorem pull up czy pull down 1k. Ma to na celu zapobieżenie stanom nieustalonym na wejściu, ale nie za bardzo czaję w jaki sposób. Prosiłbym jeszcze o udzielenie mi krótkiej lekcji elektroniki. Z chęcią przyjmę bluzgi na twarz za moją niewiedzę jeśli to kogoś zachęci

Link do komentarza
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

2 godziny temu, Gieneq napisał:

wetknij go pomiędzy wyjście Arduino a zasilanie

Oj, pisz dokładniej (między wyjście Arduino a Vcc czyli +5V), bo jak znam życie to połowa szanownych kursantów podepnie drugi koniec rezystora pod Vin albo jakimś drucikiem do gniazdka zasilania i będzie się zastanawiać dlaczego później coś nie działa 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

14 godzin temu, Gieneq napisał:

Tu masz kurs na temat wejść i PULL_UP 🙂 

Czyli daj zamiast INPUT coś takiego: INPUT_PULLUP i gotowe. Albo jak chcesz bardziej makersko to weź rezystor 10k i wetknij go pomiędzy wyjście Arduino a zasilanie i też masz PULLUP.

No jak pisałem dodanie rezystorka 10k pomogło, ale nie między wyjście a zasilanie, ale wejście a masę bez zmiany w kodzie. Z kolei tylko zamiana INPUT na INPUT_PULLUP nic nie pomaga.

Link do komentarza
Share on other sites

9 godzin temu, kabaczek napisał:

dodanie rezystorka 10k pomogło, ale nie między wyjście a zasilanie, ale wejście a masę bez zmiany w kodzie.

Czyli potrzebny był pull-down.

9 godzin temu, kabaczek napisał:

zamiana INPUT na INPUT_PULLUP nic nie pomaga

Bo INPUT_PULLUP podpina wewnętrzny rezystor do Vcc.

Niektóre płytki mają również INPUT_PULLDOWN (np. ESP32, ESP8266 na pinie 16 czy RPi), ale akurat nie AVR-y.

Link do komentarza
Share on other sites

@kabaczek bo jak robisz pullup to twój przycisk jest że tak ujmę musi przeciwstawić się temu do czego podciągasz (tu 5V) i musi być jedną nóżka na masie - wtedy gdy będzie wciśnięty to ściągnie stan wysoki do masy. A na zdjęciu drugi kabelek masz wetknięty w wyjście 5V. Przełóż je na masę, daj w kodzie PULL_UP i zewrzyj pin 7 i kabelek z masy.

I jeszcze uwaga #definy lepiej daj na gorze kodu, nie w żadnej funkcji, tam gdzie masz #import itp.

21 godzin temu, ethanak napisał:

Oj, pisz dokładniej

Ok, dzięki 🙂 

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

12 godzin temu, Gieneq napisał:

I jeszcze uwaga #definy lepiej daj na gorze kodu, nie w żadnej funkcji, tam gdzie masz #import itp.

 

Faktycznie, głupi błąd, dzięki

Za resztę też dzięki, bo działa, tylko odwrotnie, ale to wystarczy wykrzyknik dodać w jednym miejscu.

Wg mojego rozumienia to zarówno wejście jak i masa powinny mieć potencjał 0V dlatego takie rozwiązanie wydawało bez sensu. No ale widzę, że to trochę bardziej skomplikowane niż myślałem. Na co dzień pracuję przy PLC i tak sprawa jest łatwiejsza - 24V idą przez czujnik czy inny element na wejście i tyle, nie spodziewałem się, że tu to będzie bardziej skomplikowane.

Link do komentarza
Share on other sites

15 minut temu, kabaczek napisał:

zarówno wejście jak i masa powinny mieć potencjał 0V

Nie - wejście w układach CMOS po prostu "wisi w powietrzu". W przypadku czujników to wyjście czujnika podaje zero lub Vcc (w przybliżeniu) na wejście.

Link do komentarza
Share on other sites

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.