Кнопка и серийный монитор в Arduino IDE
Реализуем контроль состояния кнопки с помощью серийного канала связи между платой Arduino и персональным компьютером через USB кабель.
Что вам понадобится для проекта
- Плата Arduino
- Переключатель, тактовая кнопка или что-то подобное
- Резистор на 10 КОм
- Макетная плата (breadboard)
- Перемычки (кабели, провода)
Схема подключения кнопки через резистор к Arduino
Подключите три коннектора к плате Arduino. Первые два - красный и черный - к двум длинным вертикальным рядам по краям макетной платы, чтобы обеспечить питание 5 вольт и землю. Третий коннектор идет от цифрового пина 2 к длинной ноге кнопки. Та же нога кнопки подключается через подтягивающий резистор (в данном случае - 10 КОм) к земле. Другая нога кнопки подключается к питанию 5 вольт.
Кнопки и переключатели замыкают цепь при нажатии. Когда кнопка не нажата, замыкание между ее двумя ногами отсутствует, то есть пин на плате подтянут к земле через резистор и выдает сигнал в виде LOW или 0. При нажатой кнопке две ее ноги замыкаются, соединяя пин с питанием и формируется сигнал HIGH или 1.
Если вы отключите цифровой пин, светодиод может мигать хаотично. Это происходит из-за того, что входное напряжение "плавает". Когда отсутствует соединение питания с землей, в рандомном порядке возвращается HIGH или LOW. Именно по этой причине необходим подтягивающий резистор в цепи.
Электросхема подключенной к Arduino кнопки
Вариант шилда с кнопкой для Arduino

Описание программы для Arduino
В программе, приведенной ниже, первое, что необходимо - использовать функцию для обмена данными между платой Arduino и компьютером по серийному протоколу. В данном случае со скоростью 9600 бит в секунду.
Serial.begin(9600);
Следующий шаг - инициализировать цифровой пин 2, который будет считывать выходной сигнал с вашей кнопки как вход.
pinMode(2,INPUT);
После завершения настройки, переходим к основному циклу вашей программы. После нажатия кнопки, 5 вольт поступают в вашу замкнутую цепь, а когда не нажата - пин, который работает на вход будет притянут к земле черед подтягивающий резистор в 10 КОм. Цифровой вход означает, что переключатель может соответствовать двум состояниям: включено (ваша плата Arduino воспринимает это как "1" или "HIGH") или выключено ("0" или "LOW"). В случае использования цифровых пинов, состояния между этими значениями не существует.
В главном цикле программы вы должны объявить переменную для хранения информации от кнопки. Так как от переключателя приходит два значения "1" или "0", вы можете тип данных int. Назовем эту переменную sensorValue и установим ее значение в соответсвии со считываемыми со 2 пина данными. Все это реализуется одной строкой кода
int sensorValue = digitalRead(2);
После считывания платой Arduino информации с пина 2, выведем ее на компьютер в виде целочисленного значения. Реалихуется это с помощью комманды Serial.println():
Serial.println(sensorValue);
Теперь, если вы откроете Serial Monitor в оболочке Arduino IDE, перед вами будет поток обновляемых данных, которые состоят из "0", когда кнопка не нажата и "1" при нажатой.
Скетч для Arduino IDE
/*
DigitalReadSerial
Считывает цифровой сигнал с пина 2 и выводит данные на Serial Monitor вашего компьютера.
*/
// к цифровому пину 2 подключена кнопка. Присваиваем ей имя:
int pushButton = 2;
// функция setup отрабатывает один раз после перезагрузки платы:
void setup() {
// инициализация обмена данными с компьютером по серийному протоколу на скорости 9600 бит в секунду:
Serial.begin(9600);
// инициализация пина, к которому подключена кнопка, в виде принимающего (input)
pinMode(pushButton, INPUT);
}
// цикл, отрабатывающийся в программе бесконечно:
void loop() {
// считывание данных со 2 пина:
int buttonState = digitalRead(pushButton);
// отображение состояния кнопки в серийном мониторе оболочки Arduino IDE:
Serial.println(buttonState);
delay(1); // задержка между считыванием информации для обеспечения стабильности работы
}