RGB светодиод
На предыдущем уроке мы уже попробовали зажигать и гасить с помощью Ардуино обычный светодиод. Теперь же разберемся с многоцветным светодиодом, который часто называют сокращенно: RGB-светодиод.
RGB — это аббревиатура, которая расшифровывается как: Red — красный, Green — зеленый, Blue — синий. То есть внутри этого устройства размещается сразу три отдельных светодиода. В зависимости от типа, RGB-светодиод может иметь общий катод или общий анод.
Для удобства использования, мы в RobotClass сделали модуль в форм-факторе 23×23мм, на котором установлен большой RGB-светодиод (10мм) вместе с токозадающими резисторами и счетырёхконтактным разъёмом.

Смешение цветов
Чем RGB-светодиод, лучше трех обычных? Всё дело в свойстве нашего зрения смешивать свет от разных источников, размещенных близко друг к другу. Например, если мы поставим рядом синий и красный светодиоды, то на расстоянии несколько метров их свечение сольется, и глаз увидит одну фиолетовую точку. А если добавим еще и зеленый, то точка покажется нам белой. Именно так работают мониторы компьютеров, телевизоры и уличные экраны.
Матрица телевизора состоит из отдельно стоящих точек разных цветов. Если взять лупу и посмотреть через нее на включенный монитор, то эти точки можно легко увидеть. А вот на уличном экране точки размещаются не очень плотно, так что их можно различить невооруженным глазом. Но с расстояния несколько десятков метров эти точки неразличимы.

Получается, что чем плотнее друг к другу стоят разноцветные точки, тем меньшее расстояние требуется глазу чтобы смешивать эти цвета. Отсюда вывод: в отличие от трех отдельностоящих светодиодов, смешение цветов RGB-светодиода заметно уже на расстоянии 30-70 см. Кстати, еще лучше себя показывает RGB-светодиод с матовой линзой.
Список необходимых компонентов
Для выполнения всех примеров из этого урока потребуется контроллер Arduino Uno или любой его аналог, выводной RGB-светодиод или модуль, резисторы, макетная плата и немного проводов вилка-вилка.
Необходимые компоненты можно добавить в корзину прямо здесь, и затем оформить заказ в нашем интернет-магазине.
Не знаю, как на предыдущих версиях Arduino IDE, но на моей (1.8.5) скетч плавного изменения яркости не заработал — отладчик дюже ругался на (переменную?) dim. Немного пошукав по сети, добавил сразу после строчки [const byte rgbPins[3] = {6,5,3}; (изменил порядок под свою раскладку цветов)] такую строчку: [int dim = 1;] — всё заработало! Здесь число dim меняет шаг
дискретности уровня свечения. Чем меньше число, тем меньше шаг и
плавнее изменение яркости.
В коде была ошибка, исправили. Спасибо за комментарий!
Cпасибо очень интересно. и познавательно.
Довольно прикольно. Интересно, а на этот RGB светодиод на каждый выход(цвет) добавить три потенциометра и через них регулировать свечение цвета и яркость?
Разумеется можно. Три потенциометра подключаются к трем аналоговым входам контроллера. Программа берет с них значения, и пропорционально передает их на три контакта RGB светодиода.
скетч рабочий и компактный .Я применил задержку — 50,так мне кажется лучше. Уно- китайская.
вот код Ж
убрал переменную dim , работает так же вот код : const byte rgbPins[3] = {3,5,6};
void setup() {
for(byte i=0; i=0; i—){
analogWrite( rgbPins[0], i );
analogWrite( rgbPins[1], (255-i) );
delay(10);
}
// гасим зеленый, параллельно разжигаем синий
for(int i=255; i>=0; i—){
analogWrite( rgbPins[1], i );
analogWrite( rgbPins[2], (255-i));
delay(10);
}
// гасим синий, параллельно разжигаем красный
for(int i=255; i>=0; i—){
analogWrite( rgbPins[2], i);
analogWrite( rgbPins[0], (255-i) );
delay(10);
}