Skocz do zawartości

Szumy na pinach wejściowych


rootman

Pomocna odpowiedź

Witam. Mam problem z odczytem stanu wysokiego na arduino uno.

Napisałem taki kod:

int val = digitalRead(2); 
if(val==1) {digitalWrite(9, HIGH);p2=1;zmiana=1;Serial.print("Wykryto stan +");}

Są sekundy że działa ok, ale co chwile pokazuje że ma stan wysoki a jest niski. Wystarczy że kabelek jest wsadzony z jednej strony do 2 pinu, a z drógiej strony wisi w powietrzu i nim lekko poruszam i juz mam stan wysoki. Co mogę z tym zrobić?

Link do komentarza
Share on other sites

Skoro kabelek "wisi" to nie jest tam stan niski, a stan nieokreślony...

Musisz wprowadzić jakiś stan domyślny, co robisz poprzez dodanie dużego rezystora (typu 10k..100k) pomiędzy to wejście a GND/VCC (w zależności czy domyślnie chcesz "0" czy "1").

W przypadku Twojej płytki masz dwie możliwości;

1. Użyć wewnętrznego pullupa do VCC (to jest wew. rezystor kilkadziesiąt k omów, który możesz programowo podłączyć do każdej linii wejściowej)

2. Użyć zewnętrznego rezystora pullup/pulldown wlutowanego pomiędzy linię wejściową a odpowiednio VCC/GND.

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.