ESP32 Урок 6/55 - Использование RGB светодиода Проект 2.3 - Обучающий набор SunFounder ESP32 IoT
В этом руководстве мы научимся управлять RGB-светодиодом с помощью микроконтроллера ESP32. Этот проект поможет вам понять, как подключить RGB-светодиод и управлять его цветами с помощью сигналов ШИМ (широтно-импульсной модуляции). К концу этого руководства вы сможете создавать любые цветовые комбинации, регулируя интенсивность каждого светодиодного компонента. Это фундаментальный навык для создания визуально привлекательных проектов.

Чтобы лучше понять RGB-светодиод и его возможности смешивания цветов, мы рассмотрим схему подключения и код, необходимый для управления им с помощью ESP32. Если вам нужна визуальная помощь, обязательно посмотрите видео (на видео в 03:20) для более понятного объяснения схемы подключения и настройки кода.
Объяснение аппаратной части
Основными компонентами этого проекта являются модуль ESP32, RGB-светодиод и резисторы. ESP32 — это мощный микроконтроллер со встроенными Wi-Fi и Bluetooth, что делает его идеальным для приложений Интернета вещей. RGB-светодиод состоит из трех отдельных светодиодов (красного, зеленого и синего), размещенных в одном корпусе, что позволяет получать широкий диапазон цветов на основе комбинации этих трех цветов.
В нашей схеме RGB-светодиод будет подключен по схеме с общим анодом, где вывод анода подключается к положительному напряжению, а вывод катода каждого цвета управляется независимо. Таким образом, мы можем регулировать яркость каждого цвета, отправляя ШИМ-сигналы через ESP32.
Данные из технического описания
| Производитель | SunFounder |
|---|---|
| Номер детали | RGB-LED-4PIN |
| Тип общего вывода | Общий анод |
| Прямое напряжение (на светодиод) | 2,0 В (красный), 3,2 В (зеленый), 3,2 В (синий) |
| Максимальный ток (на светодиод) | 20 мА |
| Рабочая температура | от -25 до 85 °C |
| Корпус | 4-выводной, выводной монтаж |
- Используйте резистор 220 Ом для каждого цвета, чтобы ограничить ток и предотвратить повреждение.
- Убедитесь, что общий вывод подключен к соответствующему напряжению (3,3 В для ESP32).
- Перепроверьте полярность при подключении RGB-светодиода, чтобы избежать повреждения из-за обратного напряжения.
- Используйте ШИМ для управления уровнями яркости, рекомендуется частота около 5000 Гц.
- Проверяйте каждый цвет отдельно перед подключением всей схемы.
Инструкции по подключению
Чтобы подключить RGB-светодиод к ESP32, начните с определения выводов на RGB-светодиоде. Самый длинный вывод — это общий анод, который будет подключен к источнику питания 3,3 В на ESP32. Остальные три вывода предназначены для красного, зеленого и синего цветов. В нашей схеме подключите красный вывод к GPIO 27, зеленый вывод к GPIO 26, а синий вывод к GPIO 25. К каждому из этих выводов также будет подключен резистор 220 Ом.
Начните с размещения RGB-светодиода на макетной плате, убедившись, что вывод общего анода находится слева. Вставьте красный вывод в макетную плату и подключите его к одному концу резистора, а другой конец резистора подключите к GPIO 27. Повторите это для зеленого и синего выводов, подключив зеленый вывод к GPIO 26, а синий вывод к GPIO 25. Наконец, подключите общий вывод к контакту 3,3 В на ESP32, чтобы завершить цепь. Убедитесь, что земля ESP32 также подключена к макетной плате.

Примеры кода и пояснения
В коде мы начинаем с определения выводов RGB-светодиода с помощью констант. Например, const int redPin = 27; определяет вывод GPIO для красного светодиода. Мы также устанавливаем частоту и разрешение ШИМ с помощью const int freq = 5000; и const int resolution = 8;. Это задает необходимые параметры для управления яркостью каждого цвета светодиода.
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
Далее мы настраиваем каналы ШИМ для каждого цвета в функции setup(). Функция ledcAttach() связывает каждый вывод с соответствующим каналом ШИМ. Эта настройка гарантирует, что мы можем управлять яркостью каждого цвета независимо.
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
В функции loop() мы используем функцию setColor() для изменения цветов светодиода. Значения, передаваемые в эту функцию, представляют интенсивность красного, зеленого и синего цветов. Например, вызов setColor(255, 0, 0); устанавливает красный цвет светодиода. После каждого изменения цвета мы используем delay(1000); для ожидания в течение одной секунды перед переключением на следующий цвет.
void loop() {
setColor(255, 0, 0); // Красный
delay(1000);
setColor(0, 255, 0); // Зеленый
delay(1000);
}
Демонстрация / Что ожидать
После завершения подключения и загрузки кода в ESP32 вы должны увидеть, как RGB-светодиод циклически меняет различные цвета: красный, зеленый, синий, желтый, фиолетовый и голубой. Если светодиод не загорается правильно, перепроверьте схему подключения и убедитесь, что общий анод подключен к 3,3 В. Кроме того, если вы заметите неожиданные цвета, проверьте подключение резисторов к выводам светодиода.
Как показано в видео (на видео в 10:45), изменение значений в функции setColor() позволяет создавать различные цвета. Экспериментируйте с различными комбинациями, чтобы увидеть, как реагирует RGB-светодиод.
Временные метки видео
- 00:00 - Введение в RGB-светодиод
- 03:20 - Объяснение подключения
- 10:45 - Разбор кода
- 12:30 - Демонстрация смешивания цветов
/*
* // Определите пины RGB светодиода
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Определите частоту ШИМ и разрешение
const int freq = 5000;
const int resolution = 8;
void setup() {
// Настройте PWM-выходы
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
setColor(255, 0, 0); // Красный
delay(1000);
setColor(0, 255, 0); // Зелёный
delay(1000);
setColor(0, 0, 255); // Синий
delay(1000);
setColor(255, 255, 0); // Желтый
delay(1000);
setColor(80, 0, 80); // Фиолетовый
delay(1000);
setColor(0, 255, 255); // Циан
delay(1000);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
Common Course Links
Common Course Files
Ресурсы и ссылки
-
ДокументацияESP32 Учебник 6/55 - Страница документации SunFounder RGB LEDdocs.sunfounder.com
Файлы📁
Нет доступных файлов.