ESP32 Урок 3. Мигающий светодиод



На прошлом занятии мы установили всё необходимое для написания кода для контроллера ESP32, а также испытали проект по выводу в терминальную программу информации, а сегодня мы попробуем помигать светодиодом, испытав работу с портом ввода-вывода. Также мы настроим под себя среду программирования Espressif IDE.

Что ж, начнём с настройки.

Запустим Espressif IDE и пока не будем закрывать проект и файл с исходным кодом.

Для начала настроим удобную сборку по клавише F7. Если вам удобна другая клавиша, можете использовать любую, только не ту, которая используется уже для других случаев, которыми вы пользуетесь. Заходим в пункт меню Window->Preferences

 

 

Выберем там пункт General -> Keys -> Build Project

 

 

Поместим курсор мыши в поле Binding и нажмём, например клавишу F7 и её название тут же появится в данном поле

 

 

Применим настройки, нажав кнопку Apply and Close. Теперь мы можем собирать проект по нажатию кнопки F7.

Также полезным будет настроить автосохранение проекта перед сборкой.

Для этого идём по тому же пункту меню, впрочем, как и для всех будущих настроек, и выбираем там General -> Workspace -> Build, установим там галку на настройку Save automatically before build

 

 

Применим настройки. Теперь у нас отредактированные файлы перед сборкой будут сохраняться.

Затем настроим размер шрифта в исходном файле, а то больно уж он маленький.

Для этого идём в Appearance->Colors and Fonts->C/C++->Editor->C/C++ Editor Text… и жмём там кнопку Edit

 

 

Выбираем нужный размер шрифта, сохраняем и затем применяем настройки

 

 

 

Шрифт в тексте с исходным кодом у нас теперь увеличился

 

 

Настроим табуляцию. Для этого идём в Window->Preferences->C/C++->Code Style->Formatter. Жмём там кнопку New, чтобы добавить новый профиль, так как править нам существующие нельзя

 

 

Присваиваем нашему новому профилю какое-нибудь любое имя и жмём OK

 

 

Устанавливаем следующие настройки

 

 

Сохраняем настройки.

Полезно также увеличить немного и размер шрифта в консоли, иначе при сборке трудно разглядеть процесс, а также текст ошибок, если такие случаются.

Открываем Appearance->Colors and Fonts->Debug->Console font…, также жмём там кнопку Edit, настраиваем размер шрифта и сохраняем настройки

 

 

После применения настроек мы видим, что в консоли шрифт также увеличился

 

 

И также давайте увеличим размер шрифта дерева проектов, а то уж очень там всё мелко. Для этого идём в Appearance->Colors and Fonts->View and Editor Folders->Tree and Table font for views, также там жмём кнопку Edit и настраиваем шрифт аналогичным образом

 

Теперь мы видим, что дерево проекта также приобрело более читабельный вид

 

 

Ну и пока всё с настройками, думаю теперь нам будет работать со средой и писать код намного комфортнее, а от этого зависит и качество данного кода.

Теперь проект. Давайте добавим новый. Для этого где-нибудь в районе дерева проекта вызовем контекстное меню (правый щелчок мыши) и выберем пункт New->Espressif IDF Project

 

 

Придумаем имя и жмём Finish

 

 

Мы получим готовый проект уже с неким кодом

 

 

Только собирать мы его не будем, а удалим всё содержимое файла main.c и скопируем туда содержимое файла blink_example_main.c из файла с примером, находящегося по пути C:\Espressif\frameworks\esp-idf-v4.4\examples\get-started\blink\main\.

Если мы попробуем собрать проект, он, к сожалению, не соберётся. Во-первых, это происходит потому, что в проекте с примером свой файл конфигурации Kconfig.projbuild, находящийся по тому же пути, скопируем его в каталог main нашего проекта с заменой и попробуем проект пересобрать.

Проект опять не соберётся из-за отсутствия файла led_strip.h, который мы также скопируем также в каталог main из каталога C:\Espressif\frameworks\esp-idf-v4.4\examples\common_components\led_strip\include, обновим дерево проекта и попробуем собрать ещё раз.

Проект опять не соберётся, так как надо его теперь сконфигурировать, щёлкнув двойным щелчком по файлу sdkconfig.

В открывшемся конфигураторе настроим 4 мегабайта флеш-памяти, как и в прошлом уроке.

Дальнейшая конфигурация у нас пока не видна. Попробуем собрать проект — наконец-то он у нас собрался.

Откроем ещё раз конфигуратор, выберем порт (вернее не выберем, а напишем его цифру), у нас это GPIO2 и также уменьшим задержку (по умолчанию она 1000 милисекунд)

 

 

Пересоберём проект и прошьём код в контроллер, благо настраивать лаунчер нам уже не придётся, он у нас уже настроен и добавлен, и цель тоже. Не забываем перед прошиванием подключить нашу плату.

Мы видим, что светодиод благополучно мигает раз в секунду (зажигается, через полсекунды гаснет, затем через полсекунды опять зажигается и так по циклу)

 

 

Давайте найдём в проекте участок кода, отвечающий за изменение логического уровня на ножке порта.

Вот он в функции blink_led

 

 

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

 

 

Откроем терминальную программу, соединимся с виртуальным портом и увидим, как здесь также обновляется информация о состоянии ножки порта

 

 

Итак, на данном занятии мы настроили среду, чтобы удобнее было писать код, создали свой проект, добавили туда код, благодаря которому заставили светодиод, подключенный к ножке порта, мигать.

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

 

Данная статья в Дзен.

 

 

Предыдущий урок Программирование МК ESP32 Следующий урок

 

Исходный код

 

 

Недорогие отладочные платы ESP32 можно купить здесь: Недорогие отладочные платы ESP32

 

 

Смотреть ВИДЕОУРОК в YouTube(нажмите на картинку)

ESP32 Мигающий светодиод

 

Смотреть ВИДЕОУРОК в Дзен(нажмите на картинку)

ESP32 Мигающий светодиод

 

4 комментария на “ESP32 Урок 3. Мигающий светодиод
  1. Максим:

    Не знаю, как в старых версиях, но в версии Espressif 2.6.0 можно импортировать Blink и проект соберётся сразу

  2. Василий:

    Каким образом можно конфигурировать порты? Данный пример работает, но если я хочу переназначить порт вывода, то ничего не получается. Так понимаю это потому, что нужно сначала сконфигурировать новый порт, чтобы он работал на вывод с нужными параметрами. Где это можно сделать?

  3. У меня одно замичание.Настраиваем терминальную программуа она работает с USART.А его ещё нужно настроить.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*