Проект 8: Светодиод, управляемый кнопкой

Описание
Кнопочный переключатель — это распространённый электрический компонент, который управляет включением и выключением цепи при нажатии кнопки. Он широко используется в различных электронных устройствах, таких как мобильные телефоны, компьютеры, телевизоры, пульты дистанционного управления и др.
В этом проекте будет использована кнопка и светодиод для создания проекта «Светодиод, управляемый кнопкой» — простого и интересного проекта на Arduino, который управляет включением и выключением светодиода с помощью кнопочного переключателя. Этот проект поможет новичкам понять, как работает кнопка и как использовать цифровые входы и выходы в Arduino.
Аппаратное обеспечение
1. Плата разработки UNO R3 (ch340) x1
2. Макетная плата x1
3. Кнопка x1
4. Светодиод x1
5. Резистор 220 Ом x1
6. Резистор 10 кОм x1
7. Соединительные провода
Принцип работы
Кнопочный переключатель — это распространённый механический переключатель. Когда кнопка нажата, два контакта замыкаются, позволяя току проходить; когда кнопка отпущена, контакты размыкаются и ток прекращается. В этом проекте мы используем подтягивающий резистор, чтобы при ненажатой кнопке цифровой пин Arduino считывал высокий уровень (5В); при нажатии пин считывает низкий уровень (0В).

Кнопки — это распространённое устройство ввода, широко используемое в различных электронных продуктах, таких как клавиатуры, пульты управления и телефоны. Принцип работы кнопки основан на переключении цепи. При нажатии кнопки внутренние проводящие пластины соприкасаются, замыкая цепь и позволяя току течь; при отпускании пластины размыкаются, цепь разрывается, и ток перестаёт течь.
Внутренняя структура кнопки обычно включает такие компоненты, как проводящие пластины, упругие элементы и корпус. Проводящие пластины обычно изготовлены из металлических материалов и служат для проведения цепи; упругие элементы, такие как пружины или резина, обеспечивают возвратную силу, чтобы кнопки автоматически возвращались в исходное положение после отпускания; корпус выполняет защитную и фиксирующую функцию, а также определяет внешний вид и тактильные ощущения кнопок.

Благодаря характеристикам переключения и конструкции цепи кнопок можно реализовать различные функции, такие как цифровой или символьный ввод, управление устройствами, регулировка параметров и др. Как один из важных способов взаимодействия человека с компьютером, кнопки незаменимы в современной электронной технике благодаря простому и надёжному принципу работы.
Технические характеристики
Режим работы: тактильная отдача
Максимальный ток: 50 мА при 24 В постоянного тока
Сопротивление изоляции: 100 МОм при 100 В
Сила срабатывания: 2,55±0,69 Н
Сопротивление контакта: макс. 100 мОм
Диапазон рабочих температур: от -20 до +70 ℃
Диапазон температур хранения: от -20 до +70 ℃
Распиновка

Схема подключения
1. Подключите один контакт кнопки к GND и к цифровому пину D5 платы разработки через резистор 10 кОм соответственно, а другой контакт к VCC.
2. Подключите анод (длинный вывод) светодиода к цифровому пину D12 платы Arduino, а катод (короткий вывод) к GND через резистор 220 Ом.

Пример кода
/*
Electronics Learning Starter Kit for Arduino
Project 8
Button Controlled LED
Edit By Keyes
*/
const int buttonPin = 5;
const int ledPin = 12;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
}
Объяснение кода
Определение переменных
const int buttonPin = 5; // Константа, номер пина кнопки
const int ledPin = 12; // Константа, номер пина светодиода
int buttonState = 0; // Переменная для хранения состояния кнопки
Сначала мы определяем три переменные:
buttonPin: обозначает номер пина, к которому подключена кнопка на Arduino — пин 5.
ledPin: обозначает номер пина, к которому подключён светодиод на Arduino — пин 12.
buttonState: используется для хранения значения состояния, считанного с кнопки.
Функция setup
void setup() {
pinMode(ledPin, OUTPUT); // Устанавливаем пин светодиода как выход
pinMode(buttonPin, INPUT); // Устанавливаем пин кнопки как вход
}
Функция setup() выполняется один раз при запуске или сбросе Arduino и используется для инициализации. В этой функции:
pinMode(ledPin, OUTPUT): устанавливает пин светодиода в режим выхода, что означает, что через этот пин можно управлять током для включения или выключения светодиода.
pinMode(buttonPin, INPUT): устанавливает пин кнопки в режим входа, что означает, что этот пин будет считывать состояние кнопки.
Функция loop
void loop() {
buttonState = digitalRead(buttonPin); // Считываем состояние кнопки и сохраняем в переменную buttonState
if (buttonState == LOW) { // Если кнопка не нажата (низкий уровень)
digitalWrite(ledPin, LOW); // Выключаем светодиод
} else { // Иначе (кнопка нажата, высокий уровень)
digitalWrite(ledPin, HIGH); // Включаем светодиод
}
}
Функция loop() выполняется повторно во время работы программы. В этой функции:
buttonState = digitalRead(buttonPin): с помощью функции digitalRead считывается уровень напряжения на пине кнопки и результат сохраняется в переменную buttonState.
if (buttonState == LOW): проверяется, равен ли считанный уровень низкому (кнопка не нажата).
digitalWrite(ledPin, LOW): устанавливает светодиод в выключенное состояние (низкий уровень).
Если состояние кнопки не низкое (то есть высокий уровень, что означает, что кнопка нажата),
digitalWrite(ledPin, HIGH): устанавливает светодиод в включённое состояние (высокий уровень).
Результат проекта
После загрузки кода на плату разработки, когда кнопка не нажата, светодиод выключен; при нажатии кнопки светодиод загорается.
