
RGB светодиоды — это светодиоды способные излучать свет разных цветов. С английского RGB (Red Green Blue) переводится как красный, зеленый и синий. То есть такой светодиод может светиться этими цветами как по отдельности, так и одновременно с разной интенсивностью. Фактически это три разных светодиода под одной линзой и с 1 общим контактом. Это дает возможность излучать свет практически любого цвета. Я уже рассказывал подробнее о том как работает обычный светодиод и как его подключить к Ардуино.
Расчет резисторов для RGB светодиода
Для того что бы светодиод работал и прослужил как можно дольше необходимо правильно подключить его. Для этого нам придется подавать на него «правильный» ток. А что бы понять какой ток нужно подавать нужно знать параметры именно вашего RGB светодиода. Я использую самые популярные 5 мм светодиоды, купленные на алиэкспрессе. По словам продавца эти светодиоды имеют падение напряжения 1.8-2 В на красном светодиоде и по 3-3.2 В на зеленом и синем, а так же требуют силу тока до 20 мА. Еще мы знаем, что подключать светодиод мы будем к Arduino Uno, на пинах которой напряжение составляет 5 В.
Я немного поэкспериментировал и заметил, что при силе тока 20 мА и 15 мА разницы в свечении светодиода не видно, а вот нагрев уже меньше. При таком режиме работы светодиод прослужит гораздо дольше и будет деградировать гораздо медленнее. Поэтому я буду ограничивать силу тока до 15 мА, а падение напряжения округлю до целых. Исходя из этих данных и будем рассчитывать наши токоограничивающие резисторы. О том что такое резисторы я уже рассказывал.
- Vps — напряжение источника питания (5 Вольт)
- Vdf — падение напряжения на светодиоде (2 Вольта для красного и 3 В для зеленого и синего)
- If — номинальный ток светодиода (15 миллиампер или 0.015 Ампера)
Теперь подставим наши данные в формулу закона Ома для расчета сопротивления. Если кто забыл то напомню: R = U / I (сопротивление равно напряжению деленному на силу тока). Подставляем наши данные:
R = (Vps — Vdf) / If = (5В — 2В) / 0.015А = 200 Ом (для красного цвета)
R = (Vps — Vdf) / If = (5В — 3В) / 0.015А = 133 Ом (для зеленого и синего цветов)
Надо сказать, что данные цифры достаточно примерные и можно использовать резисторы близкие по номиналу. Например у меня есть резисторы на 220 Ом и на 147 Ом. Их я и буду использовать. Подключение будет выглядеть примерно так:

Подключение RGB светодиода к Arduino
С резисторами определились, теперь подключим это все к нашей Arduino Uno. Мы можем регулировать яркость каждого светодиода для получения широкой палитры цвета при смешении красного, зеленого и синего в разных пропорциях. У меня светодиод с общим катодом, значит я могу подключить аноды к разным пинам ардуинки с поддержкой ШИМ. Для этого я использую пины 3 (синий), 5 (зеленый) и 6 (красный), а также пин GND для катода. Вот схема:

Управление RGB светодиодом на ардуино
Теперь перейдем к написанию прошивки для управления нашим RGB светодиодом. Отдельно расписывать что происходит в коде я не буду, так как код достаточно простой. Постараюсь добавить объясняющие код комментарии, но если вам что то будет не понятно вы можете воспользоваться справочником по языку программирования Ардуино.
// создаем переменные, хранящие номера наших пинов
int red_pin= 6;
int green_pin = 5;
int blue_pin = 3;
void setup() {
// обозначаем что наши пины работают как выходы
pinMode(red_pin, OUTPUT);
pinMode(green_pin, OUTPUT);
pinMode(blue_pin, OUTPUT);
}
void loop() {
// вызываем нашу функцию с разными параметрами и ожиданием 1 сек
RGB_color(255, 0, 0); // Красный
delay(1000);
RGB_color(0, 255, 0); // Зеленый
delay(1000);
RGB_color(0, 0, 255); // Синий
delay(1000);
RGB_color(255, 255, 125); // Малиновый
delay(1000);
RGB_color(0, 255, 255); // Бирюзовый
delay(1000);
RGB_color(255, 0, 255); // Пурпурный
delay(1000);
RGB_color(255, 255, 0); // Желтый
delay(1000);
RGB_color(255, 255, 255); // Белый
delay(1000);
}
// Объявляем нашу функцию для управления светодиодом
void RGB_color(int red_value, int green_value, int blue_value)
{
analogWrite(red_pin, red_value);
analogWrite(green_pin, green_value);
analogWrite(blue_pin, blue_value);
}
Для того что бы лучше различать оттенки цветов нужно использовать какой-то рассеиватель. Это может быть полупрозрачный пластик или просто лист бумаги. Еще лучше использовать матовые светодиоды. Также вы можете аккуратно наждачной бумагой или напильником сделать прозрачный светодиод матовым. О рассеивании света можете почитать на википедии (англ).
Надеюсь у вас все получилось и вы разобрались как работает RGB светодиод и как управлять им с помощью ардуино. В качестве самостоятельной работы можете попробовать написать функцию так что бы цвет менялся плано.