Arduino dla początkujących · Wejścia i wyjścia cyfrowe
Debouncing — dlaczego przycisk „drga” i jak to naprawić
Wejścia i wyjścia cyfrowe
Wprowadzenie
Metalowe styki przycisku nie łączą się czysto — przy wciśnięciu wielokrotnie zwierają i rozwierają obwód w ciągu ~1-20ms. Dla Arduino wygląda to jak seria naciśnięć, więc jedno wciśnięcie potrafi zostać policzone kilka razy. Ta lekcja tłumaczy mechanizm drgań styków (contact bounce), wykrywanie zbocza (zmienna lastState), debouncing programowy oparty na delay() (prosty, ale blokujący) i millis() (nieblokujący, okno 20-50ms) oraz debouncing sprzętowy (filtr RC, trigger Schmitta). Pokazuje też, dlaczego zliczanie naciśnięć bez debounce daje błędne wyniki i jak wybrać kompromis między długością okna a responsywnością.