В данной статье рассмотрим как подключить светодиод к ESP32. Так же разберем как работать с встроенным светодиодом размещенным на отладочной плате ESP32. Программировать будем в среде программирования Espressif IDE.
Использование светодиодов в микроэлектронике стало распространенным явлением. Низкое потребление является большим преимуществом в батарейных устройствах. По своему строению светодиод, это диод, который излучает энергию с волной различной длинны. Отличается светодиод от обычного диода большим падением напряжения. В таблице ниже вы найдете длину волны для каждого цвета, а также падение напряжения в зависимости от цвета.
Подключение светодиода к ESP32
Светодиод в ESP32 подключается так же как и к другим микроконтроллерам. Первым делом необходимо рассчитать токоограничивающий резистор по закону Ома:
R = U\I
R = (Uпит – Uпадения)\Iпотребления
Для примера рассчитаем резистор для красного, желтого и зеленого светодиода при напряжении питания 5В.
Rкр = (5 – 1.8)\0.02 = 160Ом
Rжел = (5-2)\0.02 = 150 Ом
Rзел = (5-3)\0.02= 100 Ом
Ток потребления выбран 0.02 мА или 20 мкА. Я не знаю какое точно потребление у моих светодиодов, по этому взял среднее значение в 20 мкА.
ВНИМАНИЕ! Нужно понимать, что ток потребления может быть как выше так и ниже.
После расчета токоограничивающего резистора, необходимо понять куда же подключать плюс и минус к светодиоду. Но тут все просто. У светодиодов имеются два контакта, один визуально, немного короче другого. Тот который немного длиннее – анод, или плюс, который короче – катод, или минус.
Программируем светодиод в ESP32
В качестве примера рассмотрим следующую схему:
К выводам ESP32 под номером 5, 6, 7 подключим через резистор 220 Oм светодиоды. Один красный, один зеленый и один желтый. Напишем управляющую программу. После подачи питания на плату ESP32 проинициализируем выбранные порты и настроим их на выход с подтяжкой к питанию. Затем в бесконечном цикле будем включать одновременно зеленый и красный светодиоды, потом их гасим и включаем желтый. И так по кругу в бесконечном цикле.
Как работать с GPIO в ESP32 описано в этой статье. По этому мы не будем подробно останавливаться на описании используемых функций.
Исходный код программы:
#include <stdio.h> #include <stdbool.h> #include <unistd.h> #include "driver/gpio.h" #define GPIO_Red GPIO_NUM_7 #define GPIO_Yellow GPIO_NUM_6 #define GPIO_Green GPIO_NUM_5 uint32_t counter = 0; void app_main(void) { gpio_reset_pin(GPIO_Red); gpio_set_direction(GPIO_Red, GPIO_MODE_OUTPUT); gpio_set_pull_mode(GPIO_Red, GPIO_PULLUP_ENABLE); gpio_reset_pin(GPIO_Yellow); gpio_set_direction(GPIO_Yellow, GPIO_MODE_OUTPUT); gpio_set_pull_mode(GPIO_Yellow, GPIO_PULLUP_ENABLE); gpio_reset_pin(GPIO_Green); gpio_set_direction(GPIO_Green, GPIO_MODE_OUTPUT); gpio_set_pull_mode(GPIO_Green, GPIO_PULLUP_ENABLE); printf("Start GPIO mode output!\n"); sleep(3); while (true) { gpio_set_level(GPIO_Red, 1); gpio_set_level(GPIO_Yellow, 0); gpio_set_level(GPIO_Green, 1); sleep(3); gpio_set_level(GPIO_Red, 0); gpio_set_level(GPIO_Yellow, 1); gpio_set_level(GPIO_Green , 0); sleep(3); printf("End!\n"); } }
Результат выполнения кода на картинках ниже:
Подключение светодиода без резистора
У ESP32 есть классная фишка. Можно программой управлять выходным током вывода. Для этого необходимо воспользоваться соответствующей функцией. Регулируется выходной ток в пределах от 5 mA до 40 mA. Подробнее смотрите данную статью, раздел “Настройка выходного тока порта“.
Встроенный светодиод ESP32
У меня на плате имеется 3 светодиода. Один отвечает за питание и горит красным цветом. Таким светодиодом нет возможности управлять. Еще два размещены на линии UART, на выводах TX и RX. Если эти выводы использовать в качестве GPIO, то тогда можно организовать управление этими светодиодами, но тогда сам UART работать не будет.