Управление RGB-светодиодом на ESP32
Бесконечное число цветов одним RGB-светодиодом вместо 3 отдельных. Как в Arduino, радужный переход получается заданием значений R/G/B через analogWrite(). Теория цвета (например, красный + зелёный = жёлтый) видна на практике.

Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Управление RGB-светодиодом на ESP32
4// ─────────────────────────────────────────
5// PWM от analogWrite() управляет ножками R, G и B RGB-светодиода с общим
6// катодом и по очереди показывает 7 цветов, по 0,8 с каждый.
7//
8// Пины:
9// GPIO 5 -> Ножка R
10// GPIO 18 -> Ножка G
11// GPIO 19 -> Ножка B
12// GND -> Общий катод (самая длинная ножка)
13// Каждая из R, G, B с резистором 330 ohm
14
15const int RED = 5;
16const int GREEN = 18;
17const int BLUE = 19;
18
19void setup() {
20 pinMode(RED, OUTPUT);
21 pinMode(GREEN, OUTPUT);
22 pinMode(BLUE, OUTPUT);
23}
24
25// Задать цвет, каждый канал 0-255
26void setColor(int r, int g, int b) {
27 analogWrite(RED, r);
28 analogWrite(GREEN, g);
29 analogWrite(BLUE, b);
30}
31
32void loop() {
33 setColor(255, 0, 0); delay(800); // Красный
34 setColor(0, 255, 0); delay(800); // Зелёный
35 setColor(0, 0, 255); delay(800); // Синий
36 setColor(255, 255, 0); delay(800); // Жёлтый
37 setColor(0, 255, 255); delay(800); // Голубой
38 setColor(255, 0, 255); delay(800); // Пурпурный
39 setColor(255, 255, 255); delay(800); // Белый
40}
41
Частые вопросы
Почему красный и зелёный вместе дают жёлтый?
Цвета света смешиваются аддитивно: красный + зелёный = жёлтый, зелёный + синий = голубой, красный + синий = пурпурный; все три вместе дают белый. Промежуточные цвета получаются подбором соотношений через PWM.
У меня RGB-светодиод с общим анодом — в чём разница?
Общий вывод подключается к 3,3 V, а значения инвертированы: 0 — полная яркость, 255 — выключено. В коде просто используй `analogWrite(pin, 255 - value)`.
Цвета выглядят неправильно — почему?
У каждого цвета своё прямое напряжение и яркость; при 3,3 V синий и зелёный могут казаться тусклее красного. Баланс можно подправить, немного увеличив сопротивление для красного или применив коэффициент в программе.
Можно ли выбирать цвет на телефоне?
Да, на ESP32 можно добавить на веб-страницу выбор цвета, перевести выбранное значение в R, G и B и применить к светодиоду. Это основа проектов умного света.
