Оглавление
RGB-светодиод (Red-Green-Blue) – это полупроводниковый источник света, в котором объединены три светодиода разного цвета: красный, зелёный и синий. Управляя их яркостью, можно получить практически любой цвет. В этом руководстве рассмотрим подключение его к Arduino, а также примеры кода для работы.
Виды RGB-светодиодов
Вот таблица с основными параметрами RGB-светодиодов:
| Параметр | Описание | Типичные значения |
|---|---|---|
| Тип подключения | Общий анод (CA) или общий катод (CC) | CA / CC |
| Напряжение (V) | Напряжение для каждого цвета | R: 1.8–2.2V, G: 2.8–3.2V, B: 2.8–3.2V |
| Максимальный ток (mA) | Ток через каждый светодиод | 20 мА (обычно) |
| Сила света (mcd) | Яркость каждого канала | 500–8000 mcd |
| Длина волны (nm) | Диапазон длин волн для RGB-каналов | R: 620–630, G: 520–540, B: 450–470 |
| Угол свечения (°) | Угол рассеивания света | 20°–140° |
| Тип корпуса | Форма и размер светодиода | 5 мм, SMD 5050, SMD 3528 |
| Метод управления | Обычный (аналоговый) или цифровой (WS2812 и др.) | Аналоговый / Цифровой |
💡 Важно:
- Для аналоговых RGB-светодиодов нужны три ШИМ-канала (PWM).
- Для цифровых адресных LED (WS2812, SK6812) используется один управляющий пин.
- Резисторы (220–330 Ом) нужны для защиты его от перегрева.

RGB LED бывают двух типов:
- С общим анодом (Common Anode) – общий вывод подключается к +5V, а управление осуществляется через GND.
- С общим катодом (Common Cathode) – общий вывод подключается к GND, а управление осуществляется через подачу напряжения.
Перед подключением важно выяснить, какой тип у вас, так как схема подключения и логика кода для них различаются.
Необходимые компоненты
Для эксперимента с RGB-светодиодом нам понадобятся:
- Arduino Uno/Nano/Mega
- RGB-светодиод (с общим анодом или катодом)
- Резисторы 220 Ом или 330 Ом (3 шт.)
- Макетная плата
- Соединительные провода
Схема подключения
Подключение RGB LED с общим катодом:
- Общий катод (длинная ножка) → GND Arduino
- Красный (R) → 9 пин через резистор
- Зеленый (G) → 10 пин через резистор
- Синий (B) → 11 пин через резистор
Подключение RGB LED с общим анодом:
- Общий анод (длинная ножка) → 5V Arduino
- Красный (R) → 9 пин через резистор
- Зеленый (G) → 10 пин через резистор
- Синий (B) → 11 пин через резистор
⚠️ Разница в том, что при работе с общим анодом яркость управляется инвертированно (чем больше значение PWM, тем тусклее светодиод).
Базовый код для управления
Простой код, который включает красный, зелёный и синий цвета поочерёдно:
int redPin = 9;
int greenPin = 10;
int bluePin = 11;void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}void loop() {
setColor(255, 0, 0); // Красный
delay(1000);
setColor(0, 255, 0); // Зеленый
delay(1000);
setColor(0, 0, 255); // Синий
delay(1000);
}void setColor(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
📌 Если у вас RGB-светодиод с общим анодом, замените analogWrite(pin, value) на analogWrite(pin, 255 — value).
Плавное переливание цветов
Теперь создадим эффект плавного переливания оттенков:
void loop() {
for (int i = 0; i <= 255; i++) {
setColor(i, 255 — i, 0);
delay(10);
}
for (int i = 0; i <= 255; i++) {
setColor(255 — i, 0, i);
delay(10);
}
for (int i = 0; i <= 255; i++) {
setColor(0, i, 255 — i);
delay(10);
}
}
Этот код создает мягкий переход между цветами, изменяя интенсивность каналов R, G и B.
Управление RGB LED через ШИМ
Чтобы плавно изменять цвета RGB-светодиода, используется широтно-импульсная модуляция (ШИМ, PWM). Arduino поддерживает analogWrite() на определённых пинах (обычно обозначены тильдой ~). Пример кода, который изменяет яркость каждого цвета:
void loop() {
for (int i = 0; i <= 255; i += 5) {
setColor(i, 0, 0); // Увеличиваем яркость красного
delay(50);
}
for (int i = 255; i >= 0; i -= 5) {
setColor(i, 0, 0);
delay(50);
}
}
Этот код плавно увеличивает и уменьшает яркость красного цвета. Аналогично можно сделать для зелёного и синего.

Создание пользовательских цветов
Можем если надо задавать свои цвета путем изменения значений RGB. Например, чтобы создать оранжевый цвет (смешивание красного и зелёного):
- setColor(255, 165, 0); // Оранжевый цвет
Вот таблица с основными цветами и их RGB-кодами.
| Цвет | (R) | (G) | (B) | Пример вызова |
|---|---|---|---|---|
| Красный | 255 | 0 | 0 | setColor(255, 0, 0); |
| Зелёный | 0 | 255 | 0 | setColor(0, 255, 0); |
| Синий | 0 | 0 | 255 | setColor(0, 0, 255); |
| Жёлтый | 255 | 255 | 0 | setColor(255, 255, 0); |
| Голубой | 0 | 255 | 255 | setColor(0, 255, 255); |
| Фиолетовый | 128 | 0 | 128 | setColor(128, 0, 128); |
| Белый | 255 | 255 | 255 | setColor(255, 255, 255); |
| Оранжевый | 255 | 165 | 0 | setColor(255, 165, 0); |
Работа с адресными светодиодами WS2812
Если у вас адресные светодиоды (например, WS2812, Neopixel), управление идет через библиотеку Adafruit NeoPixel. Подключите светодиод к пину D8 и загрузите код:
#include <Adafruit_NeoPixel.h>
#define PIN 8
#define NUMPIXELS 1Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}void loop() {
strip.setPixelColor(0, strip.Color(255, 0, 0)); // Красный
strip.show();
delay(1000);strip.setPixelColor(0, strip.Color(0, 255, 0)); // Зеленый
strip.show();
delay(1000);strip.setPixelColor(0, strip.Color(0, 0, 255)); // Синий
strip.show();
delay(1000);
}
Адресные LED позволяют управлять каждым светодиодом отдельно, создавая крутые анимации и эффекты. Так что выбирайте нужный вариант и экспериментируйте.










