Урок 9: RGB Светодиод
1. Цель эксперимента
Познакомиться с принципами работы RGB-светодиода и цветовой моделью RGB, а также научиться смешивать три базовых канала (Red, Green, Blue) с помощью ШИМ-сигнала (PWM), получая любые оттенки — от чистого красного до белого.
2. Компоненты
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
RGB-светодиод (общий катод) |
3 |
Резисторы 220 Ω–330 Ω |
1 |
Макетная плата (breadboard) |
5 |
Перемычки «папа–папа» |
1 |
USB-кабель A-B |
3. Немного знаний
RGB — аддитивная модель. При 100 % яркости всех трёх каналов получаем белый цвет.
Светодиоды бывают общий катод (общий «-») и общий анод (общий «+»). В примере ниже используется общий катод: общий вывод подключён к GND. Для общего анода логика PWM инвертируется (0 = максимум яркости).
Управляют каналами через PWM-пины Arduino (помечены «~»).
4. Схема подключения

Общий катод → GND
R-канал (длинный вывод, обычно крайний) → через резистор → 11 (PWM)
G-канал → через резистор → 9 (PWM)
B-канал → через резистор → 10 (PWM)
5. Пример кода
Ниже приведён скетч, который плавно переливается всеми цветами спектра. Практически каждая строка снабжена пояснением, так что даже новичок легко поймёт, что происходит.
// ---------- Константы с номерами пинов ----------
int redpin = 11; // PWM-пин для красного канала (R)
int bluepin = 10; // PWM-пин для синего канала (B)
int greenpin = 9; // PWM-пин для зелёного канала (G)
int val; // переменная яркости (0–255)
// ------------------- setup() --------------------
void setup() {
pinMode(redpin, OUTPUT); // объявляем все три пина выходами
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
Serial.begin(9600); // открываем Serial-монитор на 9600 бод
}
// -------------------- loop() --------------------
void loop() {
// ----- Переход от красного к синему -----
for (val = 255; val > 0; val--) { // идём от 255 к 0
analogWrite(11, val); // красный постепенно гаснет
analogWrite(10, 255 - val); // синий загорается
analogWrite(9, 128 - val); // зелёный корректирует оттенок
delay(1); // пауза 1 мс для плавности
}
// ----- Обратный переход (синий → красный) -----
for (val = 0; val < 255; val++) { // идём от 0 к 255
analogWrite(11, val); // красный усиливается
analogWrite(10, 255 - val); // синий гаснет
analogWrite(9, 128 - val); // зелёный зеркально меняется
delay(1);
}
Serial.println(val, DEC); // выводим значение val (255) в монитор
}
6. Как работает код
analogWrite() генерирует на пине PWM сигнал с заполнением 0–255. При общем катоде 0 — «выключено», 255 — «максимум яркости».
В первом цикле яркость красного канала линейно падает, синего — растёт, а зелёный изменяется так, чтобы получался плавный «градиент».
Во втором цикле процесс идёт в обратную сторону. Получается бесконечный «цветовой переход».
7. Пошаговый запуск
Соберите схему согласно рисунку выше.
Подключите Arduino и выберите плату UNO в меню IDE.
Скопируйте скетч, загрузите его. Светодиод начнёт плавно переливаться.
Откройте Serial Monitor (9600 baud) — увидите вывод текущего значения переменной val.
8. Что может пойти не так
Симптом |
Причина |
Решение |
---|---|---|
Светодиод не светит |
Общий вывод не на GND / забыты резисторы |
Проверьте схему, подключите резисторы 220 Ω |
Цвета «перепутаны» |
Подключены не те ноги RGB-светодиода |
Найдите datasheet или определите выводы мультиметром |
Очень тускло |
Слишком большие резисторы |
Используйте 220 Ω или 330 Ω, не больше 1 kΩ |
9. Эксперименты
Измените алгоритм, чтобы получался мигающий «светофор»: красный → жёлтый → зелёный.
Добавьте потенциометр и меняйте яркость каналов в реальном времени.