В данном уроке рассматривается подключение и использование кнопок с микроконтроллером ESP32. Кнопки являются фундаментальными элементами ввода в электронных системах, позволяющими пользователю взаимодействовать с устройством. В уроке детально описаны типы кнопок, принципы их работы, схемы подключения к ESP32, а также программные аспекты, включая обработку нажатий.
Такие кнопки обычно имеют четыре вывода, которые внутренне соединены попарно.
Для работы достаточно использовать два вывода, не принадлежащих одной паре. Существует четыре варианта подключения (см. рисунок ниже), которые, в силу симметрии, сводятся к двум.
Дополнение: Четыре вывода обеспечивают механическую прочность кнопки при нажатии, что важно для надежности крепления на плате.
Такие кнопки, как правило, имеют два вывода.
Модуль кнопки включает в себя встроенный подтягивающий резистор, который гарантирует низкий уровень сигнала (LOW) при отпущенной кнопке.KY-004 Модуль тактовой кнопки.
Модуль имеет три вывода:
При такой конфигурации модуль выдает LOW при отпущенной кнопке и HIGH при нажатой.
Принцип работы кнопки прост:
Связь между состоянием цифрового входа ESP32 и состоянием нажатия кнопки зависит от схемы подключения и настроек ESP32.
Дополнение: Если не использовать подтягивающий резистор (pull-up или pull-down), состояние входа при отпущенной кнопке будет неопределенным (плавающим). Это приведет к нестабильной работе и ошибкам.
Рекомендация: Для упрощения схемы и кода рекомендуется использовать внутренний подтягивающий резистор (pull-up) в ESP32. Это не требует внешних компонентов.
Схема с кнопкой для монтажа на печатную плату (PCB-mount).
Схема с кнопкой для монтажа на панель (Panel-mount).
Дополнение: Если вам неясно, как подать питание на ESP32 и другие компоненты, обратитесь к руководству "Подключаем тактовую кнопку к Arduino и управляем светодиодом".
Инициализация.
Функция pinMode()
используется для настройки вывода ESP32 в качестве входа с внутренним подтягивающим резистором:
// Настройка GPIO21 как вход с внутренним pull-up резистором pinMode(21, INPUT_PULLUP);
Чтение состояния.
Функция digitalRead()
считывает состояние цифрового входа:
int buttonState = digitalRead(BUTTON_PIN);
Полный пример кода (чтение состояния кнопки).
#define BUTTON_PIN 21 // GPIO21 подключен к кнопке void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { int buttonState = digitalRead(BUTTON_PIN); // Чтение состояния кнопки Serial.println(buttonState); // Вывод состояния в Serial Monitor }
Дополнение: Значение 1
соответствует HIGH (кнопка не нажата), а 0
соответствует LOW (кнопка нажата).
Пример кода (определение нажатия и отпускания кнопки).
/* * ESP32: Управление вводом с помощью кнопок. Типы, схемы, код. * https://arduino-tex.ru/news/203/esp32-upravlenie-vvodom-s-pomoshchyu-knopok-tipy-shemy.html */ #define BUTTON_PIN 21 // GPIO21 подключен к кнопке int lastState = HIGH; // Предыдущее состояние int currentState; // Текущее состояние void setup() { Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { currentState = digitalRead(BUTTON_PIN); // Чтение текущего состояния кнопки if (lastState == HIGH && currentState == LOW) { Serial.println("Кнопка нажата"); // Обработка нажатия кнопки } else if (lastState == LOW && currentState == HIGH) { Serial.println("Кнопка отпущена"); // Обработка отпускания кнопки } lastState = currentState; // Обновление предыдущего состояния }
Дополнение: При нажатии и отпускании кнопки возможен дребезг контактов – многократное замыкание и размыкание цепи в течение короткого промежутка времени. Это может привести к ложным срабатываниям. Для устранения дребезга используются программные или аппаратные методы. См. руководство "Подключаем тактовую кнопку к Arduino и управляем светодиодом". Для начинающих и упрощения кода с несколькими кнопками рекомендуется библиотека ezButton.
Заключение.
В данном руководстве подробно рассмотрены аспекты подключения и использования кнопок с микроконтроллером ESP32, начиная от физического подключения и заканчивая программной реализацией. Понимание принципов работы кнопок, схем подключения и методов обработки сигналов позволяет эффективно использовать их в различных проектах на базе ESP32. Важно учитывать особенности дребезга контактов и выбирать подходящие методы его устранения для обеспечения надежной работы устройства.
Дополнительная информация к данному уроку:
Понравился урок: ESP32: Управление вводом с помощью кнопок. Типы, схемы, код? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в Telegram.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Код из урока.ino | 1 Kb | 34 | Скачать |
Уроки ESP32 (заметки)
12 марта , 2025
Комментариев:0
Файлов для скачивания:1
Фото:5
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии