Для борьбы с дребезгом контактов при работе с кнопками в Arduino можно использовать как аппаратные, так и программные методы. 15
Аппаратные методы:
- Использование RS-триггера. 1 Схема применяется, когда кнопка или другой механический датчик выполнены в виде группы переключающихся контактов. 1 Триггер состоит из двух логических элементов И-НЕ и имеет вход установки S и вход сброса R. 1
- Применение RC-фильтров. 1 Они сглаживают колебания, а сглаженный сигнал затем подаётся на вход триггера Шмидта или другого логического элемента с высокоимпедансным входом. 1
Программные методы:
- Использование задержек. 1 Нужно обнаружить нажатие кнопки, приостановить выполнение программы и реализовать задержку. 1 Время задержки необходимо выбрать таким образом, чтобы оно превышало дребезг контактов. 1 Такую же процедуру задержки нужно реализовать и после обнаружения отпускания кнопки. 1
- Применение библиотеки Bounce2. 1 Она включает методы, которые позволяют установить время антидребезга в миллисекундах, задать вывод, к которому подключена кнопка, и другие. 1
- Обработка состояния кнопок параллельным процессом. 3 Нужно выделить обработку сигнала кнопки в отдельный программный блок и поставить условие, что этот блок должен регулярно вызываться. 3 Для связи с другими программными модулями создаются глобальные переменные, определяющие состояние кнопки. 3
Также можно использовать подтяжку пина к земле (pull down) или питанию (pull up) микроконтроллера при помощи резистора. 5 Подтяжка выполняется противоположно принимаемому сигналу: если нужно ловить высокий сигнал, подтяжка выполняется к земле, если ловить нужно сигнал земли — подтяжка выполняется к питанию. 5