Подключение элементов
Рисунок 1 – Подключение кнопки и светодиода к плате Arduino UNO
Ранее шла речь о резисторах, среди которых есть стягивающий и подтягивающий. Посмотрите внимательно на рисунок 1 и определите, какой резистор используется в данной схеме. На рисунке 2 приведен пример программирования схемы.
Рисунок 2 – Программирование кнопки и светодиода
2
Нажимаем и держим – светодиод мигает, отпускаем – он гаснет. Приступаем к анализу проделанного.
Давайте посмотрим на скетч внимательно. В нем мы видим довольно простую логику.
1.Определяем, зажата ли кнопка.
2.Если кнопка не зажата, то просто выходим из метода loop(), ничего не включая и не меняя.
3.Если кнопка зажата, то выполняем мигание, используя фрагмент стандартного скетча:
1.Включаем светодиод, подавая напряжение на нужный порт.
2.Делаем нужную паузу при включенном светодиоде.
3.Выключаем светодиод.
4.Делаем нужную паузу при выключенном светодиоде.
Дребезг кнопки
Вспомним ещё раз про явление дребезга кнопки.
В процессе работы с кнопками мы можем столкнуться явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хотя и очень быстро), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких «мусорных» сигналов, то будем реагировать на них каждый раз.
Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:
Добавляем в скетче паузу 10-50 миллисекунд между получением значений с пина Ардуино.
Если мы используем прерывания, то программный метод использоваться не может, и мы формируем аппаратную защиту. Простейшая из них — RC фильтр с конденсатором и сопротивлением.
Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера Шмидта. Этот вариант позволит получить на входе в Ардуино сигнал практически идеальной формы.
3
Программный способ устранения дребезга кнопок
Самым простым способом справиться с проблемой дребезга кнопки является выдерживание паузы. Мы просто останавливаемся и ждем, пока переходный процесс не завершится. Для этого можно использовать функцию delay() или millis(). 10-50 миллисекунд – вполне достаточное значение паузы для большинства случаев.
Рисунок 3 – Программный способ устранения дребезга кнопок
В данном примере мы использовали задержку в программе, чтобы не реагировать на случайные всплески и определить реальную смену сигнала.
4
