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