Как подключить кнопку к Ардуино

СОДЕРЖАНИЕ ►
Как подключить тактовую кнопку к цифровым и аналоговым входам на Arduino Uno правильно. Расскажем, как избежать «дребезг контактов», рассмотрим схему подключения одной и нескольких кнопок к плате Ардуино. Рассмотрим функции digitalRead и analogRead в языке программирования C++, которые часто требуется использовать при создании различных проектов на Ардуино для начинающих.
Работа с тактовыми кнопками на Ардуино
Главная проблема использования кнопок для управления Arduino заключается в «дребезге контактов». Дело в том, что механические контакты в тактовых кнопках никогда не замыкаются и размыкаются мгновенно. В течении нескольких миллисекунд происходит многократное замыкание и размыкание контактов — в итоге на микроконтроллер поступает не единичный сигнал, а серия импульсов.

Для того, чтобы исключить на микроконтроллере Arduino дребезг кнопки используют различные электрические схемы с триггерами и конденсаторами. Но намного удобнее и проще использовать программный способ борьбы с возможным дребезгом тактовой кнопки — для этого применяют задержку на несколько миллисекунд или используют библиотеку Bounce2.h для борьбы с дребезгом контактов для Arduino.
Подключение кнопки к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- 1 светодиод;
- резисторы на 220 Ом и 10 кОм;
- 1 тактовая кнопка;
- провода «папа-папа» и «папа-мама».

Используем цифровые порты на плате для подключения тактовой кнопки и команду digitalRead
для считывания данных. Соберите схему, как на рисунке выше и загрузите скетч. Обратите внимание, что при отпущенной кнопке на Pin2 поступает логический «0». С помощью кнопки будем выключать и включать встроенный светодиод, подключенный к цифровому 13 порту на плате микроконтроллера Ардуино.
Скетч подключение кнопки к цифровому входу
void setup() { pinMode(13, OUTPUT); // объявляем пин 13 как выход pinMode(2, INPUT); // объявляем пин 2 как вход } void loop() { if (digitalRead(2) == HIGH) // когда на пин 2 поступает высокий сигнал { digitalWrite(13, HIGH); // зажигаем светодиод } if (digitalRead(2) == LOW) // когда на пин 2 поступает низкий сигнал { digitalWrite(13, LOW); // выключаем светодиод } }
Пояснения к коду:
- процедура
setup
выполняется один раз, используется процедура для конфигурации портов микроконтроллера (назначение режима работы портов); - процедуры
setup
иloop
должны присутствовать в любой программе (скетче); - использованные константы:
INPUT
,OUTPUT
,LOW
,HIGH
, пишутся заглавными буквами, иначе компилятор их не распознает и выдаст ошибку.
Скетч подключения кнопки к аналоговому входу
Можно также сделать подключение кнопок к аналоговому входу Ардуино (обозначены, как Analog In на плате). Принципиальное отличие данной схемы — это использование аналогового порта на микроконтроллере. Для включения и выключения светодиода будем также использовать встроенный светодиод на плате. Переключите тактовую кнопку к аналоговому входу A1 и загрузите в плату следующий скетч.
void { pinMode(13, OUTPUT); // объявляем пин 13 как выход pinMode(A1, INPUT); // объявляем пин A1 как вход } void loop() { if (analogRead(A1) > 300) // когда аналоговая кнопка нажата { digitalWrite(13, HIGH); // зажигаем светодиод } if (analogRead(A1) < 300) // когда аналоговая кнопка отпущена { digitalWrite(13, LOW); // выключаем светодиод } }
Пояснения к коду:
- в данном скетче мы используем функцию
analogRead
для считывания значений с аналогового входаA1
, при этом порт можно использовать, как цифровой; - значения на аналоговом входе могут отличаться (все зависит от сопротивления резистора в схеме) и могут принимать значения в диапазоне от 0 до 1023.
Подборка на тему: Как подключить кнопку к Ардуино
Один комментарий для “Как подключить кнопку к Ардуино”
Добавить комментарий
Записи похожие на: Arduino. Подключение кнопки
- Светофор на Ардуино для начинающих
- Приглашаем всех на Arduino Day 2018
- Светильник из адресной ленты на Ардуино
- Подключение датчика газа MQ2 Ардуино
Проекты похожие на: Arduino. Подключение кнопки
Здравствуйте. А почему не рассмотрели режим INPUT_PULLUP для кнопки?