1.1. Мигаем встроенным светодиодом
Задача: помигать светодиодом, расположенным на отладочной плате ESP32.Выясняем номер пина
У каждого пина микроконтроллера есть свой номер. Ножки обычно подписаны на плате, например, D5 означает, что это Digital пин с номером 5. Как узнать пин чего-то, что распаяно на светодиоде? Наиболее надёжный способ - найти светодиод на схеме платы (гуглим что-то типа “esp32 devkit schematics”) и посмотреть, к чему он подключен. Возьмём схему платы отсюда:
| Отладочная плата | Пин светодиода | Пин кнопки |
|---|---|---|
| ESP32 DevKit | 2 | 0 |
| Lolin S2 Mini (ESP32S2) | 15 | 0 |
| LuatOS ESP32C3-CORE | 12, 13 | 9 |
Конфигурируем пин на выход
Для работы с цифровыми пинами импортируем модуль digitalio, а для обращения к пинам по их номеру - модульboard. Также здесь и в 99% других проектов мы планируем много спать, поэтому нам пригодится модуль time.
DigitalInOut и устанавливаем режим работы OUTPUT:
True (высокий сигнал, 3.3V) или False (низкий сигнал, 0V), таким образом включая или выключая светодиод:
Мы используем бесконечный цикл, потому что, в отличие от обычных программ на ПК, если закончить выполнять прошивку, микроконтроллер перезагрузится и начнёт исполнять её снова. В CircuitPython вместо перезагрузки вас выкинет в REPL консоль питона и скрипт перестанет исполняться. Короче, в 99% проектов вы будете делать две вещи:
time.sleep и бесконечный цикл.1.2. Включаем светодиод по кнопке
Задача: если нажата кнопка - включить светодиод, если не нажата - выключить. В дополнение к переменнойled, создаём ещё одну переменную button с ещё одним DigitalInOut, но передаём номер пина встроенной кнопки (см. таблицу выше). Пин кнопки мы конфигурируем в INPUT для чтения значения. Инициализацию всех пинов мы делаем перед основным циклом!
Основной цикл у нас будет выглядеть так:
- пофиксить основной цикл, чтобы при нажатии кнопки светодиод включался, а не выключался
- придумать алгоритм, чтобы при нажатии кнопки светодиод инвертировал состояние и оставался таким до следующего нажатия кнопки
1.3. Внешняя кнопка
Задача: оставить скрипт от прошлой задачи, но поменять встроенную кнопку на внешнюю. Для этого необходимо вставить отладочную плату ESP32 и саму кнопку в BreadBoard. Как видно из рисунка ниже кнопка имеет 4 контакта, 2 контакта в каждой из пар соеденины внутри самой кнопки. Для получения логической единицы на пине необходимо подключить один контакт кнопки к VCC (+3.3), а другой к любому свободному пину микрооконтроллера. Если необходимо получать на пине логический ноль, то вместо VCC к кнопке подключаем GND. В идеале не забываем про подтяжку пина в инверсную сторону от подключения кнопки (если подключили кнопку к GND то делаем PULL_UP, а при подключении кнопки к VCC, пин настраиваем на PULL_DOWN)

1.4. Внешний светодиод
Задача: оставить скрипт от прошлой задачи, но поменять встроенный светодиод на внешний. Светодиод устроен следующим образом:
