Подключение кнопок и входов
Научитесь подключать кнопки к ESP32, обрабатывать нажатия и бороться с дребезгом контактов.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
Кнопка
Тактовая 6×6мм или 12×12мм
Светодиод
5мм Красный/Зеленый/Синий
Резистор
220–10 кОм (защита/подтяжка)
Как работает кнопка
Строение кнопки
Тактовая кнопка имеет 4 вывода, объединённых попарно. При нажатии контакты замыкаются, позволяя току проходить через цепь.
Замкнуто
При нажатии
Разомкнуто
В покое
Дребезг контактов
ПРОБЛЕМА
При нажатии кнопки металлические контакты вибрируют, вызывая множественные ложные срабатывания за несколько миллисекунд.
Решение:
delay(200); // Пауза 200мс
// Исключает повторное считывание
Схема подключения
ESP32 Установите модуль на макетную плату
GPIO 14 Подключите пин к одному выводу кнопки
GND Второй вывод кнопки к земле
LED Светодиод к пину GPIO 16 через резистор
Способы подключения кнопки
INPUT_PULLUP (рекомендуется)
Внутренний резистор подтягивает пин к 3.3В. В покое кнопка считывает HIGH, при нажатии — LOW.
INPUT + внешний резистор
Требуется внешний резистор 10 кОм для подтяжки к питанию или земле.
Программирование
Настройка Arduino IDE
Откройте Файл → Настройки
Добавьте ссылку на пакет в поле Additional Boards Manager URLs
Установите esp32 через Менеджер плат
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Мониторинг нажатий
Вывод счетчика
Загрузка программы
Как это работает
INPUT_PULLUP
Внутренний резистор подтягивает пин к питанию. В покое читаем HIGH.
Нажатие
Кнопка замыкает цепь на землю. Пин читает LOW.
Антидребезг
Задержка 200мс исключает ложные срабатывания.
Возможные проблемы
Кнопка срабатывает несколько раз за одно нажатие ↓
Это дребезг контактов. Добавьте задержку delay(200) после считывания нажатия или используйте библиотеку ezButton для аппаратного решения.
Светодиод горит постоянно ↓
Проверьте подключение кнопки. Убедитесь, что один вывод подключен к GPIO, а другой — к GND. Проверьте режим пина (INPUT_PULLUP).
ESP32 не загружает код ↓
При появлении 'Connecting...' зажмите кнопку BOOT на плате ESP32 и удерживайте до начала загрузки.
Кнопка не реагирует ↓
Проверьте, что используете правильные пины (GPIO 14). Убедитесь, что контакты кнопки правильно вставлены в макетную плату.
Цех Испытаний
Отточите мастерство работы с кнопками и входами. Каждая задача — шаг к уверенному управлению устройствами.
Счетчик нажатий
Работа с переменной и выводом в консоль
Создайте счетчик нажатий кнопки. Выводите каждое нажатие в монитор порта. Добавьте задержку 200мс для исключения дребезга.
Три светодиода
Переключение между несколькими выходами
Подключите 3 светодиода к GPIO 16, 17, 5. Каждое нажатие кнопки переключает следующий светодиод по кругу: горит только 1-й → только 2-й → только 3-й → снова 1-й. В любой момент должен гореть ровно один светодиод. Добавьте задержку 200мс для антидребезга.
Короткое и долгое
Распознавание длительности нажатия
Различайте короткое (менее 500мс) и долгое (более 1000мс) нажатие. При коротком — выводите 'SHORT' и мигните светодиодом 1 раз (100мс). При долгом — выводите 'LONG' и мигните 3 раза по 100мс. Тип нажатия определяется в момент отпускания кнопки.
Режимы яркости
ШИМ-регулировка яркости светодиода
Подключите светодиод к GPIO 2 (PWM). Каждое нажатие кнопки циклически меняет яркость: 0 → 64 → 128 → 191 → 255 → 0... (5 ступеней). Текущая яркость сохраняется между нажатиями. Результат: при каждом нажатии светодиод становится заметно ярче, на 5-м нажатии гаснет. Антидребезг: 200мс.
Кодовый замок
Распознавание последовательности нажатий
Запрограммируйте кодовый замок: правильная последовательность — короткое (< 500мс), долгое (> 1000мс), короткое (< 500мс). Подключите зелёный LED к GPIO 16 и красный к GPIO 17. При правильном коде — зелёный горит 3 секунды, при ошибке — красный мигает 3 раза по 200мс. После результата — код сбрасывается, ввод начинается заново.
Свой Проект
Создайте свою уникальную схему с кнопками в онлайн-симуляторе. Ограничений нет!
Поздравляем! 🎉
Вы освоили работу с кнопками и входами ESP32. Теперь вы можете создавать интерактивные устройства, реагирующие на нажатия!