Kiedy przycisk jest podłączony w tej konfiguracji, wejście jest tak zwane pływające , co oznacza, że nie jest to 0 ani 1. Po naciśnięciu przycisku jest on podłączony do uziemienia, więc jest to z pewnością 0, ale kiedy nie jest wciśnięty, nie znamy wartości szpilki.
Pull Up Resistor
Musimy uwzględnić tak zwany rezystor „pull-up”, aby podciągnąć sygnał do logiki 1, gdy przycisk nie jest wciśnięty.
Zdjęcie z Sparkfun
Oznacza to, że gdy przycisk nie jest wciśnięty, Arduino odczytuje logikę 1. Po naciśnięciu przycisku prąd przepływa przez rezystor do masy, a Arduino odczytuje logikę 0.
Wewnętrzny rezystor podciągający
Arduino ma również wewnętrzne rezystory podciągające, więc niekoniecznie musisz dodawać dodatkowy komponent do swojego obwodu. Istnieje kilka sposobów korzystania z tego.
Kiedyś musiałeś to robić w ten sposób:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Teraz możemy to zrobić po prostu w jednym wierszu:
pinMode(pin, INPUT_PULLUP);
Umożliwia to rezystor podciągający 20k na tym pinie. Sygnał wejściowy przestanie być pływający, gdy przycisk nie zostanie naciśnięty.
Uwaga: Działa to tylko wtedy, gdy drugi koniec jest podłączony do uziemienia.