kabaczek Napisano Kwiecień 14, 2020 Udostępnij Napisano Kwiecień 14, 2020 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: Dodam jeszcze, że próbowałem użyć innych kabli oraz pinów. Cytuj Link do komentarza Share on other sites More sharing options...
kabaczek Kwiecień 14, 2020 Autor tematu Udostępnij Kwiecień 14, 2020 PS znalazłem jeszcze w szafie Arduino nano i jest podobny cyrk. Mało prawdopodobne jest, że mam 2 płytki uszkodzone, więc czekam na zjebkę gdzie zrobiłem błąd Cytuj Link do komentarza Share on other sites More sharing options...
kabaczek Kwiecień 14, 2020 Autor tematu Udostępnij Kwiecień 14, 2020 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 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Kwiecień 15, 2020 Udostępnij Kwiecień 15, 2020 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. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
ethanak Kwiecień 15, 2020 Udostępnij Kwiecień 15, 2020 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 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
kabaczek Kwiecień 15, 2020 Autor tematu Udostępnij Kwiecień 15, 2020 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. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Kwiecień 16, 2020 Udostępnij Kwiecień 16, 2020 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. Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Kwiecień 16, 2020 Udostępnij Kwiecień 16, 2020 @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 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
kabaczek Kwiecień 16, 2020 Autor tematu Udostępnij Kwiecień 16, 2020 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. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Kwiecień 16, 2020 Udostępnij Kwiecień 16, 2020 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. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!