ESP32 Урок 4. Подключаем кнопку



На прошлом уроке нам удалось создать свой проект и попробовать использование порта ввода-вывода на выход. В результате получилось помигать светодиодом, подключенным к определённой ножке порта. А теперь мы попробуем испытать порт на вход. Для этого мы сначала подключим кнопку, например к ножке GPIO4 и написать код, который будет отслеживать её состояние. Подключим кнопку одним контактом к данной ножке, а другим к общему проводу платы

 

 

Теперь проект. Мы можем также добавить новый проект и потом вносить в него изменения. Но, так как мы знаем уже, как это делать, то интереснее будет нам по нашей доброй традиции сделать проект из проекта прошлого занятия. Тем более в дальнейшем мы будем от урока к урока вносить в свои проекты не столь значительные изменения и писать весь проект заново будет по меньшей мере непроизводительно. Поэтому в нашем рабочем каталоге создадим ещё один каталог для нового проекта с именем BUTTON01 и скопируем туда каталог main, файлы sdkconfig.project.cproject и CMakeLists.txt из каталога проекта прошлого занятия с именем BLINK01. Откроем в блокноте файл .project и изменим там старое имя проекта на новое вот здесь и сохраним файл

 

 

Подключим наш новый проект к дереву проекта в Espressif IDE, откроем файл main.c и попробуем собрать наш проект.

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

Поэтому откроем Kconfig.projbuild и внесём в него некоторые изменения.

Но прежде чем мы внесём изменения, давайте и здесь настроим шрифт, так как шрифт у нас настроен только для исходных кодов, остальные файлы у нас по-прежнему отображаются с мелким шрифтом. Для этого проследуем в меню Window->Preferences, в дереве слева откроем General->Appearance->Colors and Fonts, затем в правом окне встанем на пункт Basic->Text font, нажмём кнопку Edit, изменим размер шрифта и сохраним изменения

 

 

 

Теперь займёмся редактированием нашего файла конфигурации.

Сначала удалим всё между строками  choice BLINK_LED и endchoice, включая, соответственно и эти строки.

 

 

Вот этот пункт удаляем тоже

 

 

Перед пунктом config BLINK_PERIOD добавим ещё один пункт для ножки порта, к которому мы подключаем кнопку, по умолчанию сразу поставим 4, чтобы не исправлять его потом

 

 

Вот этот пункт также удалим

 

 

Пересоберём проект и зайдём в конфигуратор, где настроим только ножку порта светодиода (хотя она тоже может быть уже настроена)

 

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

Во-первых, удалим файл led_strip.h и физически и из дерева проекта, а затем также удалим из main.c его подключение

 

#include "led_strip.h"

Удалим также вот это объявление

static uint8_t s_led_state = 0;

 

Затем вот этот комментарий также можно удалить

 

/* Blink Example

  This example code is in the Public Domain (or CC0 licensed, at your option.)

  Unless required by applicable law or agreed to in writing, this

  software is distributed on an «AS IS» BASIS, WITHOUT WARRANTIES OR

  CONDITIONS OF ANY KIND, either express or implied.

*/

 

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

 

#include «esp_log.h»

 

После подключения библиотек удаляем весь код до функции app_main.

 

 

В функции app_main также удалим всё тело, кроме бесконечного цикла. Останется вот это

 

 

В данной функции объявим две переменные и сразу их проинициализируем значениями из конфигурации

 

 

Сбросим инициализацию ножек портов

 

 

Настроим направление работы данных ножек

 

 

Настроим режим работы ножки, которая работает на вход

 

 

Я не объясняю, какой именно режим и какое именно направление, так как используемые макросы SDK в аргументах сами за себя говорят.

В бесконечном цикле в случае, когда на ножке GPIO4 будет обнаружен низкий уровень (кнопка нажата), мы установим высокий уровень на ножке GPIO2, тем самым зажжём светодиод, а если высокий — то установим низкий (погасим светодиод)

 

 

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

 

 

Вот, в принципе, и весь код.

Пробуем собрать проект, прошить контроллер и смотрим результат

 

 

 

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

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

 

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

 

 

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

 

Исходный код

 

 

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

 

 

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

ESP32 Name

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

ESP32 Name

Один комментарий на “ESP32 Урок 4. Подключаем кнопку
  1. Руслан:

    Всем привет, скачал папку с исходным кодом, но при открытии папки в Espressive IDE пака с файлами не открывается, выводиться ошибка — The project description file (.project) for 'BUTTON01' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
    The project description file (.project) for 'BUTTON01' is missing. This file contains important information about the project. The project will not function properly until this file is restored.

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

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

*