Подключение RGB светодиода к Ардуино

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 бывают двух типов:

  1. С общим анодом (Common Anode) – общий вывод подключается к +5V, а управление осуществляется через GND.
  2. С общим катодом (Common Cathode) – общий вывод подключается к GND, а управление осуществляется через подачу напряжения.

Перед подключением важно выяснить, какой тип у вас, так как схема подключения и логика кода для них различаются.

Необходимые компоненты

Для эксперимента с RGB-светодиодом нам понадобятся:

  • Arduino Uno/Nano/Mega
  • RGB-светодиод (с общим анодом или катодом)
  • Резисторы 220 Ом или 330 Ом (3 шт.)
  • Макетная плата
  • Соединительные провода

Схема подключения

Подключение RGB LED с общим катодом:

  1. Общий катод (длинная ножка) → GND Arduino
  2. Красный (R) → 9 пин через резистор
  3. Зеленый (G) → 10 пин через резистор
  4. Синий (B) → 11 пин через резистор

Подключение RGB LED с общим анодом:

  1. Общий анод (длинная ножка) → 5V Arduino
  2. Красный (R) → 9 пин через резистор
  3. Зеленый (G) → 10 пин через резистор
  4. Синий (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 1

Adafruit_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 позволяют управлять каждым светодиодом отдельно, создавая крутые анимации и эффекты. Так что выбирайте нужный вариант и экспериментируйте.

Оцените материал:

4.9 / 5. Рейтинг: 10

Может подскажете что улучшить?