Урок 3 Начинающий 25 минут

Подключение кнопок и входов

Научитесь подключать кнопки к ESP32, обрабатывать нажатия и бороться с дребезгом контактов.

1

Подготовка оборудования

Компоненты для урока

ESP32 DevKit

Любая версия (30/38 пинов)

🔘

Кнопка

Тактовая 6×6мм или 12×12мм

💡

Светодиод

5мм Красный/Зеленый/Синий

⚙️

Резистор

220–10 кОм (защита/подтяжка)

2

Как работает кнопка

Строение кнопки

Строение кнопки

Тактовая кнопка имеет 4 вывода, объединённых попарно. При нажатии контакты замыкаются, позволяя току проходить через цепь.

Замкнуто

При нажатии

Разомкнуто

В покое

Дребезг контактов

⚠️

ПРОБЛЕМА

При нажатии кнопки металлические контакты вибрируют, вызывая множественные ложные срабатывания за несколько миллисекунд.

Решение:

// Антидребезг задержкой:
delay(200); // Пауза 200мс
// Исключает повторное считывание
3

Схема подключения

Схема подключения кнопки к ESP32
1

ESP32 Установите модуль на макетную плату

2

GPIO 14 Подключите пин к одному выводу кнопки

3

GND Второй вывод кнопки к земле

4

LED Светодиод к пину GPIO 16 через резистор

3.1

Способы подключения кнопки

Способы подключения кнопки

INPUT_PULLUP (рекомендуется)

Внутренний резистор подтягивает пин к 3.3В. В покое кнопка считывает HIGH, при нажатии — LOW.

INPUT + внешний резистор

Требуется внешний резистор 10 кОм для подтяжки к питанию или земле.

4

Программирование

Настройка Arduino IDE

⚙️

Откройте Файл → Настройки

🔗

Добавьте ссылку на пакет в поле Additional Boards Manager URLs

📦

Установите esp32 через Менеджер плат

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Button_Simple.ino
01
02
03
04
05
06
07
08
09
10
11
12
13
14
const int BUTTON_PIN = 14; // Пин кнопки
const int LED_PIN = 16; // Пин светодиода
void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}
void loop() {
  int buttonState = digitalRead(BUTTON_PIN);
  if (buttonState == LOW) {
    digitalWrite(LED_PIN, HIGH); // ВКЛ
  } else {
    digitalWrite(LED_PIN, LOW); // ВЫКЛ
  }
}

Мониторинг нажатий

Результат в мониторе порта

Вывод счетчика

Счетчик нажатий в мониторе порта

Загрузка программы

Загрузка кода в ESP32
4.1

Как это работает

Принцип работы кнопки
🔌

INPUT_PULLUP

Внутренний резистор подтягивает пин к питанию. В покое читаем HIGH.

👆

Нажатие

Кнопка замыкает цепь на землю. Пин читает LOW.

⏱️

Антидребезг

Задержка 200мс исключает ложные срабатывания.

5

Возможные проблемы

Кнопка срабатывает несколько раз за одно нажатие

Это дребезг контактов. Добавьте задержку delay(200) после считывания нажатия или используйте библиотеку ezButton для аппаратного решения.

Светодиод горит постоянно

Проверьте подключение кнопки. Убедитесь, что один вывод подключен к GPIO, а другой — к GND. Проверьте режим пина (INPUT_PULLUP).

ESP32 не загружает код

При появлении 'Connecting...' зажмите кнопку BOOT на плате ESP32 и удерживайте до начала загрузки.

Кнопка не реагирует

Проверьте, что используете правильные пины (GPIO 14). Убедитесь, что контакты кнопки правильно вставлены в макетную плату.

6

Цех Испытаний

Отточите мастерство работы с кнопками и входами. Каждая задача — шаг к уверенному управлению устройствами.

Время прохождения
~75 минут суммарно
🔢
Уровень: Start 10m

Счетчик нажатий

Работа с переменной и выводом в консоль

Миссия

Создайте счетчик нажатий кнопки. Выводите каждое нажатие в монитор порта. Добавьте задержку 200мс для исключения дребезга.

01
🚦
Уровень: Easy 15m

Три светодиода

Переключение между несколькими выходами

Миссия

Подключите 3 светодиода к GPIO 16, 17, 5. Каждое нажатие кнопки переключает следующий светодиод по кругу: горит только 1-й → только 2-й → только 3-й → снова 1-й. В любой момент должен гореть ровно один светодиод. Добавьте задержку 200мс для антидребезга.

02
⏱️
Уровень: Normal 20m

Короткое и долгое

Распознавание длительности нажатия

Миссия

Различайте короткое (менее 500мс) и долгое (более 1000мс) нажатие. При коротком — выводите 'SHORT' и мигните светодиодом 1 раз (100мс). При долгом — выводите 'LONG' и мигните 3 раза по 100мс. Тип нажатия определяется в момент отпускания кнопки.

03
🌟
Уровень: Hard 25m

Режимы яркости

ШИМ-регулировка яркости светодиода

Миссия

Подключите светодиод к GPIO 2 (PWM). Каждое нажатие кнопки циклически меняет яркость: 0 → 64 → 128 → 191 → 255 → 0... (5 ступеней). Текущая яркость сохраняется между нажатиями. Результат: при каждом нажатии светодиод становится заметно ярче, на 5-м нажатии гаснет. Антидребезг: 200мс.

04
🔐
Уровень: Expert 30m

Кодовый замок

Распознавание последовательности нажатий

Миссия

Запрограммируйте кодовый замок: правильная последовательность — короткое (< 500мс), долгое (> 1000мс), короткое (< 500мс). Подключите зелёный LED к GPIO 16 и красный к GPIO 17. При правильном коде — зелёный горит 3 секунды, при ошибке — красный мигает 3 раза по 200мс. После результата — код сбрасывается, ввод начинается заново.

05
🚀

Свой Проект

Создайте свою уникальную схему с кнопками в онлайн-симуляторе. Ограничений нет!

Открыть Симулятор →

Поздравляем! 🎉

Вы освоили работу с кнопками и входами ESP32. Теперь вы можете создавать интерактивные устройства, реагирующие на нажатия!