Sygnalizator revisited czyli przyciski i debouncing
Dawno temu pisałem o tym jak można korzystać z przycisków (tactile switch, pushbutton) na przykładzie kartonowego sygnalizatora. Wróćmy do tematu, tym razem na poważniej zajmując się przyciskami. Jeśli spojrzycie na kod tamtego sygnalizatora, możecie dostrzec następującą pętlę loop: void loop() { val = digitalRead(buttonPin); if (val == HIGH && prev == LOW) { next_status(); } prev = val; display_status(); delay(50); } Wykrywanie naciśnięcia odbywa się przez porównanie bieżącej wartości wejścia cyfrowego z poprzednią. Jeżeli aktualna wartość to HIGH a poprzednia to LOW, to wykonujemy akcję next_status(), która zmienia stan sygnalizatora. I wszystko działa. Ale nie ma problemów, tylko dzięki ostatniej linii kodu w loop:
Czytaj dalej...
Najnowsze komentarze