ESP32/ESP8266: Цифровые входы и цифровые выходы с MicroPython

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

ESP32 ESP8266 MicroPython цифровые входы и выходы

Предварительные требования

Для выполнения этого руководства вам необходимо установить прошивку MicroPython на плату ESP32 или ESP8266. Также вам понадобится IDE для написания и загрузки кода на плату. Мы рекомендуем использовать Thonny IDE или uPyCraft IDE:

Если вы впервые работаете с MicroPython, рекомендуем следовать этому руководству: Начало работы с MicroPython на ESP32 и ESP8266

Обзор проекта

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

Светодиод и кнопка — обзор проекта

Цифровые входы (Digital Inputs)

Чтобы получить значение GPIO, сначала нужно создать объект Pin и установить его как вход. Например:

button = Pin(4, Pin.IN)

Затем, чтобы получить значение, нужно использовать метод value() объекта Pin без передачи аргументов. Например, чтобы получить состояние объекта Pin с именем button, используйте следующее выражение:

button.value()

Мы покажем вам более подробно, как всё это работает, в примере проекта.

Цифровые выходы (Digital Outputs)

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

led = Pin(5, Pin.OUT)

Для управления GPIO используйте метод value() объекта Pin и передайте 1 или 0 в качестве аргумента. Например, следующая команда устанавливает объект Pin (led) в состояние HIGH:

led.value(1)

Чтобы установить GPIO в состояние LOW, передайте 0 в качестве аргумента:

led.value(0)

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

Перед продолжением вам нужно собрать схему со светодиодом и кнопкой. Мы подключим светодиод к GPIO 5, а кнопку к GPIO 4.

Необходимые компоненты

Вот список компонентов, необходимых для сборки схемы:

Схема – ESP32

Следуйте следующей схеме подключения, если вы используете плату ESP32:

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

Схема – ESP8266

Следуйте следующей схеме подключения, если вы используете плату ESP8266:

Схема подключения светодиода и кнопки к ESP8266

На ESP8266 пин, обозначенный как D1, соответствует GPIO 5, а пин, обозначенный как D2, соответствует GPIO 4.


Скрипт

Следующий код считывает состояние кнопки и зажигает светодиод соответствующим образом. Код работает как для ESP32, так и для ESP8266.

from machine import Pin
from time import sleep

led = Pin(5, Pin.OUT)
button = Pin(4, Pin.IN)

while True:
  led.value(button.value())
  sleep(0.1)

Просмотреть исходный код

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

Вы начинаете с импорта класса Pin из модуля machine и класса sleep из модуля time.

from machine import Pin
from time import sleep

Затем создаёте объект Pin с именем led на GPIO 5. Светодиоды – это выходы, поэтому передайте Pin.OUT вторым аргументом.

led = Pin(5, Pin.OUT)

Также мы создаём объект с именем button на GPIO 4. Кнопки – это входы, поэтому используйте Pin.IN.

button = Pin(4, Pin.IN)

Используйте button.value() для возврата/чтения состояния кнопки. Затем передайте выражение button.value() в качестве аргумента для значения светодиода.

led.value(button.value())

Таким образом, когда мы нажимаем кнопку, button.value() возвращает 1. Это эквивалентно led.value(1). Это устанавливает состояние светодиода в 1, зажигая светодиод. Когда кнопка не нажата, button.value() возвращает 0. Таким образом, мы получаем led.value(0), и светодиод остаётся выключенным.


Демонстрация

Сохраните код на вашу плату ESP с помощью Thonny IDE или uPyCraft IDE. После этого светодиод должен загораться при нажатии кнопки и гаснуть при её отпускании.

Демонстрация MicroPython ESP32 ESP8266 входы выходы

Заключение

Подводя итог, для чтения значения GPIO нам просто нужно использовать метод value() соответствующего объекта Pin. Для установки значения GPIO нам нужно передать 1 или 0 в качестве аргумента методу value(), чтобы включить или выключить его соответственно.

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