ESP32: Управление вводом с помощью кнопок. Типы, схемы, код.

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

использование кнопок с микроконтроллером ESP32.

Кнопки.

Кнопки для монтажа на печатную плату (PCB-mount).

Такие кнопки обычно имеют четыре вывода, которые внутренне соединены попарно.

Кнопки для монтажа на печатную плату (PCB-mount).

Для работы достаточно использовать два вывода, не принадлежащих одной паре. Существует четыре варианта подключения (см. рисунок ниже), которые, в силу симметрии, сводятся к двум.

Кнопки для монтажа на печатную плату (PCB-mount).

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

Кнопки для монтажа на панель (Panel-mount).

Кнопки для монтажа на панель (Panel-mount).

Такие кнопки, как правило, имеют два вывода.

Такие кнопки, как правило, имеют два вывода.

Модули кнопок.

Модуль кнопки включает в себя встроенный подтягивающий резистор, который гарантирует низкий уровень сигнала (LOW) при отпущенной кнопке.KY-004 Модуль тактовой кнопки.

Модули кнопок.

Модуль имеет три вывода:

  • GND: Земля (подключается к общему проводу).
  • VCC: Питание (подключается к источнику 3.3V).
  • OUT: Выход (подключается к цифровому входу ESP32).

Характеристики модуля кнопки KY-004 для Ардуино.При такой конфигурации модуль выдает LOW при отпущенной кнопке и HIGH при нажатой.


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

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

  • Не нажата: Вывод A НЕ соединен с выводом B (электрический контакт разомкнут).
  • Нажата: Вывод A соединен с выводом B (электрический контакт замкнут).

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

Один из выводов кнопки подключается к цифровому входу ESP32. Другой вывод подключается к питанию (VCC) или земле (GND). Считывая состояние цифрового входа, ESP32 определяет, нажата кнопка или нет.


Состояние входа и состояние нажатия

Связь между состоянием цифрового входа ESP32 и состоянием нажатия кнопки зависит от схемы подключения и настроек ESP32.

Подключение к VCC (с подтягивающим резистором)

  • Один вывод кнопки подключается к цифровому входу ESP32, другой – к VCC.
  • Обязательно используется подтягивающий резистор (pull-down).
  • Нажата: Состояние входа ESP32 – HIGH.
  • Не нажата: Состояние входа ESP32 – LOW.

Подключение к GND (с подтягивающим резистором)

  • Один вывод кнопки подключается к цифровому входу ESP32, другой – к GND.
  • Обязательно используется подтягивающий резистор (pull-up).
  • Нажата: Состояние входа ESP32 – LOW.
  • Не нажата: Состояние входа ESP32 – HIGH.

Дополнение: Если не использовать подтягивающий резистор (pull-up или pull-down), состояние входа при отпущенной кнопке будет неопределенным (плавающим). Это приведет к нестабильной работе и ошибкам.

Рекомендация: Для упрощения схемы и кода рекомендуется использовать внутренний подтягивающий резистор (pull-up) в ESP32. Это не требует внешних компонентов.


Схемы подключения к ESP32.

Схема с кнопкой для монтажа на печатную плату (PCB-mount).

Схема с кнопкой для монтажа на печатную плату (PCB-mount).

Схема с кнопкой для монтажа на панель (Panel-mount).

Схема с кнопкой для монтажа на панель (Panel-mount).

Дополнение: Если вам неясно, как подать питание на ESP32 и другие компоненты, обратитесь к руководству "Подключаем тактовую кнопку к Arduino и управляем светодиодом".


Программирование ESP32 для работы с кнопкой.

Инициализация.

Функция 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; // Обновление предыдущего состояния
}

Программирование ESP32 для работы с кнопкой.

Дребезг контактов (Chattering Phenomenon).

Дополнение: При нажатии и отпускании кнопки возможен дребезг контактов – многократное замыкание и размыкание цепи в течение короткого промежутка времени. Это может привести к ложным срабатываниям. Для устранения дребезга используются программные или аппаратные методы. См. руководство "Подключаем тактовую кнопку к Arduino и управляем светодиодом". Для начинающих и упрощения кода с несколькими кнопками рекомендуется библиотека ezButton.

Заключение.

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

Дополнительная информация к данному уроку:


Понравился урок: ESP32: Управление вводом с помощью кнопок. Типы, схемы, код? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в Telegram.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Код из урока Код из урока.ino1 Kb 34 Скачать

Комментарии

Ваше Имя*


Разработка проектов