Подключение кнопки к ESP32
Тактовая кнопка
Кнопка к ESP32 включается между GPIO и землёй. Внутренняя подтяжка INPUT_PULLUP держит вход на высоком уровне, пока кнопка отпущена; нажатие замыкает вход на землю, и digitalRead() возвращает LOW.
Схема подключения кнопки к ESP32
| Кнопка | ESP32 |
|---|---|
| 1.l | GPIO15 |
| 2.l | GND |
Схема из примера «Кнопка: чтение состояния».
Выводы Кнопка
| Вывод | Назначение |
|---|---|
| 1.l | контакт 1, левая ножка |
| 1.r | контакт 1, правая ножка (соединена с 1.l внутри) |
| 2.l | контакт 2, левая ножка |
| 2.r | контакт 2, правая ножка (соединена с 2.l внутри) |
Код для ESP32
// INPUT_PULLUP подтягивает вывод к питанию внутри чипа.
// Кнопка замыкает вывод на землю, поэтому нажатие — это LOW.
const int BUTTON = 15;
void setup() {
Serial.begin(115200);
pinMode(BUTTON, INPUT_PULLUP);
}
void loop() {
bool pressed = digitalRead(BUTTON) == LOW;
Serial.println(pressed ? "нажата" : "отпущена");
delay(200);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Внешний резистор не нужен: у GPIO0–33 есть внутренняя подтяжка около 45 кОм. У GPIO34–39 её нет, там нужна внешняя.
- Дребезг контактов длится несколько миллисекунд: после срабатывания ждут 20–50 мс или используют библиотеку.
В железе
Ножки, соединённые внутри, — те, что смотрят друг на друга через длинную сторону корпуса. Кнопка, поставленная на макетку «не той стороной», замкнута всегда.
Частые ошибки при подключении к ESP32
- Кнопка на GPIO34–39 без внешнего резистора: вход «плавает» и срабатывает случайно.
- Кнопка на GPIO0: если держать её при сбросе, плата войдёт в режим прошивки вместо запуска скетча.
- Вход без подтяжки (
INPUTвместоINPUT_PULLUP) — отпущенная кнопка читается случайно, от касания пальцем провода. - Одно нажатие считается несколько раз — дребезг. Нужен фильтр по времени.
- Кнопка подключена к двум соединённым внутри ножкам — не работает никогда (или работает всегда).
- На ESP32 кнопка на GPIO34–39 с
INPUT_PULLUP— у этих выводов нет внутренней подтяжки. Нужен внешний резистор 10 кОм.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230