Со светодиодами разобрались, самое время приступить к подключению управляющего элемента - кнопки.
Контроль состояния нажатия кнопки будем реализовывать на основе серийного канала связи между платой и компьютером через USB кабель.
Для того, чтобы выполнить практическую часть проекта, нам понадобится:
- Плата Arduino Uno;
- Тактовая кнопка или переключатель;
- Резистор с номиналом сопротивления 10 кОм;
- Беспаечная макетная плата;
- Джамперы;
Собираем схему
Два джампера будут обеспечивать питание схемы: 5 вольт и земля.
Третий джампер будет идти от 13-го цифрового вывода к одному из выводов кнопки. Парный вывод этой же кнопки будет подключаться через подтягивающий резистор на землю.
При нажатии на кнопку цепь замыкается. В момент отпускания (и дальнейшего «не нажатого» состояния) связь между её выводами отсутствует. Через подтягивающий резистор вывод заведён на землю и посылает сигнал в виде 0 (LOW). В момент нажатия (и дальнейшего «нажатого» состояния) два вывода замыкаются, формируя сигнал в виде 1 (HIGH).
Подтягивающий резистор нужен для того, чтобы микроконтроллер мог распознать моменты, когда кнопка не нажата. В нажатом состоянии всё понятно – цепь замкнута. Однако в случае, когда кнопка не нажата, определить её состояние проблематично. Это мы знаем, что она отпущена, а МК в негодовании – вот он и лупит случайные значения 0 или 1. Но когда отпущенная кнопка будет заводится на землю, МК точно будет знать что кнопка не нажата.
Алгоритм программы следующий:
- Кнопка нажата - питание поступает в цепь;
- Кнопка не нажата – вывод, через подтяжку (10 кОм резистор) будет заведён на землю.
Подключаем функцию для обмена данными. Скорость обмена 9600 бит в секунду.
Serial.begin(9600);
Конфигурим цифровой вывод 13, на вход.
pinMode(button,INPUT);
Объявляем переменную, в которой будет храниться данные о состоянии кнопки. Ей мы и будем присваивать значение, которое будет считано с 13 вывода.
int stateForButton = digitalRead(button);
Как только плата считает информацию, выводим её на компьютер с помощью команды Serial.println(stateForButton);
Откроем Serial Monitor в программной среде Arduino IDE. При нажатии кнопки будет выводиться значение «1», а при отпускании «0».
Урок 8
Продолжение следует..
Картотека программирования