RGB светодиод и Arduino
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)
Для того что бы лучше различать оттенки цветов нужно использовать какой-то рассеиватель. Это может быть полупрозрачный пластик или просто лист бумаги. Еще лучше использовать матовые светодиоды. Также вы можете аккуратно наждачной бумагой или напильником сделать прозрачный светодиод матовым. О рассеивании света можете почитать на википедии (англ).
Надеюсь у вас все получилось и вы разобрались как работает RGB светодиод и как управлять им с помощью ардуино. В качестве самостоятельной работы можете попробовать написать функцию так что бы цвет менялся плано.
Железо

Стартовый набор с Arduino Mega и RFID Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

Плата Arduino Uno R3 Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.
Как подключить RGB светодиод к Ардуино

На этом занятии мы будем использовать цифровые и аналоговые выходы с «широтно импульсной модуляцией» на плате Arduino для включения RGB светодиода с различными оттенками. Использование RGB LED ленты позволяет создать освещение интерьера с любым оттенком цвета. Расскажем про устройство и распиновку полноцветного (RGB) светодиода и рассмотрим директиву #define в языке C++.
Устройство и назначение RGB светодиода
Для отображения всей палитры оттенков вполне достаточно три цвета, используя RGB синтез (Red — красный, Green — зеленый, Blue — синий). RGB палитра используется не только в графических редакторах, но и в сайтостроении. Смешивая цвета в разной пропорции можно получить практически любой цвет. Преимущества RGB светодиодов в простоте конструкции, небольших габаритах и высоком КПД светоотдачи.
RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор. Кроме того, модуль RGB LED Arduino может сразу монтироваться на плате и иметь встроенные резисторы — этот вариант более удобный для занятий в кружке робототехники.

Распиновка RGB светодиода указана на фото выше. Заметим также, что для многих полноцветных (трехцветных) светодиодов необходимы светорассеиватели, иначе будут видны составляющие цвета. Далее подключим трехцветный светодиод к Ардуино и заставим его сначала мигать разными цветами, а затем плавно переливаться разными цветами с помощью «широтно импульсной модуляции».
Управление RGB светодиодом на Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- RGB светодиод;
- 3 резистора 220 Ом;
- провода «папа-мама».

Модуль «RGB светодиод» можно подключить напрямую к плате, без проводов и макетной платы. Подключите модуль с полноцветным RGB светодиодом к следующим пинам: Минус — GND, B — Pin13, G — Pin12, R — Pin11 (смотри первое фото). Если вы используете RGB LED (Light Emitting Diode), то подключите его по схеме на фото. После подключения модуля и сборки схемы на Ардуино загрузите скетч в плату.
Скетч для мигания RGB светодиодом на Ардуино
#define RED 11 // присваиваем имя RED для пина 11 #define GRN 12 // присваиваем имя GRN для пина 12 #define BLU 13 // присваиваем имя BLU для пина 13 void setup() < pinMode(RED, OUTPUT); // используем Pin11 для вывода pinMode(GRN, OUTPUT); // используем Pin12 для вывода pinMode(BLU, OUTPUT); // используем Pin13 для вывода > void loop() < digitalWrite(RED, HIGH); // включаем красный свет digitalWrite(GRN, LOW); digitalWrite(BLU, LOW); delay(1000); // устанавливаем паузу для эффекта digitalWrite(RED, LOW); digitalWrite(GRN, HIGH); // включаем зеленый свет digitalWrite(BLU, LOW); delay(1000); // устанавливаем паузу для эффекта digitalWrite(RED, LOW); digitalWrite(GRN, LOW); digitalWrite(BLU, HIGH); // включаем синий свет delay(1000); // устанавливаем паузу для эффекта >
Пояснения к коду:
- с помощью директивы #define мы заменили номер пинов 11, 12 и 13 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
- в процедуре void loop() мы поочередно включаем все три цвета на RGB.
Плавное управление RGB светодиодом
Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «ШИМ». Для этого ножки светодиода необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на аналоговые выходы микроконтроллера различные значения ШИМ (PWM), для этого воспользуемся циклом for, с помощью которого можно повторять нужные команды в программе.
Скетч для плавного мигания RGB светодиода
#define RED 11 // присваиваем имя RED для пина 11 #define GRN 10 // присваиваем имя GRN для пина 10 #define BLU 9 // присваиваем имя BLU для пина 9 void setup() < pinMode(RED, OUTPUT); // используем Pin11 для вывода pinMode(GRN, OUTPUT); // используем Pin10 для вывода pinMode(BLU, OUTPUT); // используем Pin9 для вывода > void loop() < // плавное включение/выключение красного цвета for (int i = 0; i analogWrite(RED, i); delay(2); > for (int i = 255; i >= 0; i--) < analogWrite(RED, i); delay(2); > // плавное включение/выключение зеленого цвета for (int i = 0; i analogWrite(GRN, i); delay(2); > for (int i = 255; i >= 0; i--) < analogWrite(GRN, i); delay(2); > // плавное включение/выключение синего цвета for (int i = 0; i analogWrite(BLU, i); delay(2); > for (int i = 255; i >= 0; i--) < analogWrite(BLU, i); delay(2); > >
Пояснения к коду:
- с помощью директивы #define мы заменили номера пинов 9, 10 и 11 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
- пины 9, 10 и 11 мы использовали, как аналоговые выходы analogWrite .
Плавное включение нескольких цветов RGB LED
#define RED 11 // присваиваем имя RED для пина 11 #define GRN 10 // присваиваем имя GRN для пина 10 #define BLU 9 // присваиваем имя BLU для пина 9 void setup() < pinMode(RED, OUTPUT); // используем Pin11 для вывода pinMode(GRN, OUTPUT); // используем Pin10 для вывода pinMode(BLU, OUTPUT); // используем Pin9 для вывода > void loop() < // плавное включение красного и зеленого цвета for (int i = 0; i analogWrite(RED, i); analogWrite(GRN, i); delay(2); > for (int i = 255; i >= 0; i--) < analogWrite(RED, i); analogWrite(GRN, i); delay(2); > // плавное включение красного и синего цвета for (int i = 0; i analogWrite(RED, i); analogWrite(BLU, i); delay(2); > for (int i = 255; i >= 0; i--) < analogWrite(RED, i); analogWrite(BLU, i); delay(2); > >
Заключение. Аналоговые выходы на Ардуино используют «широтно импульсную модуляцию» для получения различной силы тока. Мы можем подавать на все три цветовых входа на светодиоде различное значение ШИМ-сигнала в диапазоне от 0 до 255, что позволит нам получить на RGB LED Arduino практически любой оттенок света. Если у вас остались вопросы — оставляйте их в комментариях к этой записи.
RGB-светодиоды: как они работают, внутреннее устройство, как подключить, RGB-led и Arduino
Многоцветные светодиоды, или как их еще называют RGB, используются для индикации и создания динамически изменяющейся по цвету подсветки. Фактически ничего особенного в них нет, давайте разберемся, как они работают и что такое RGB-светодиоды.
На самом деле RGB-светодиод – это три одноцветных кристалла совмещенные в одном корпусе. Название RGB расшифровывается, как Red – красный, Green – зеленый, Blue – синий соответственно цветам, которые излучает каждый из кристаллов.
Эти три цвета являются базовыми, и на их смешении формируется любой цвет, такая технология давно применяется в телевидении и фотографии. На картинке, что расположена выше, видно свечение каждого кристалла по отдельности.
На этой картинке вы видите принцип смешивания цветов, для получения всех оттенков.
Кристаллы в RGB-светодиоды могут быть соединены по схеме:
— С общим катодом;
В первых двух вариантах вы увидите, что у светодиода есть 4 вывода:
Или 6-тью выводами в последнем случае:
Вы можете видеть на фотографии под линзой четко видны три кристалла.
Для таких светодиодов продаются специальные монтажные площадки, на них даже указывают назначение выводов.
Нельзя оставить без внимания и RGBW – светодиоды, их отличие состоит в том, что в их корпусе есть еще один кристалл излучающий свет белого цвета.
Естественно не обошлось и без лент с такими светодиодами.
На этой картинке изображена лента с RGB-светодиодами типа SMD 5050, собранные по схеме с общим анодом, регулировка интенсивности свечения осуществляется путем управления «-» (минусом) источника питания.
Для изменения цвета RGB-ленты используются специальные RGB-контроллеры – устройства для коммутации напряжения подаваемого на ленту.
Вот цоколевка RGB SMD5050:
И ленты, особенностей работы с RGB-лентами нет, всё остается также как и с одноцветными моделями.
Для них есть и коннекторы для подсоединения светодиодной ленты без пайки.
Вот распиновка 5-ти мм РГБ-светодиода:
Как изменяется цвет свечения
Регулировка цвета осуществляется путем регулировки яркости излучения каждым из кристаллов. Мы уже рассматривали способ регулировки яркости светодиодов с помощью ШИМ-контроллера.
RGB-контроллер для ленты работает по такому же принципу, в нём стоит микропроцессор, который управляет минусовым выводом источника питания – подключает и отключает его от цепи соответствующего цвета. Обычно в комплекте с контроллером идёт пульт дистанционного управления. Контроллеры бывают разной мощности, от этого зависит их размер, начиная от такого миниатюрного.
Да такого мощного устройства в корпусе размером с блок питания.
Они подключаются к ленте по такой схеме:
Так как сечение дорожек на ленте не позволяет подключать последовательно с ней следующий отрезок ленты, если длина первого превышает 5м, нужно подключать второй отрезок проводами напрямую от РГБ-контроллера.
Но можно выйти из положения, и не тянуть дополнительных 4 провода на 5 метров от контроллера и использовать RGB-усилитель. Для его работы нужно протянуть всего 2 провода (плюс и минус 12В) или запитать еще один блок питания от ближайшего источника 220В, а также 4 «информационных» провода от предыдущего отрезка (R, G и B) они нужны для получения команд от контроллера, чтобы вся конструкция светилась одинаково.
А к усилителю уже подключают следующий отрезок, т.е. он использует сигнал с предыдущего куска ленты. То есть вы можете запитать ленту от усилителя, который будет расположен непосредственно возле неё, тем самым сэкономив деньги и время на прокладку проводов от первичного RGB-контроллера.
Регулируем RGB-led своими руками
Итак, есть два варианта для управления RGB-светодиодами:
1. Использовать три независимых ШИМ-контроллера и регулировать яркость каждого из кристаллов вручную.
2. Использовать микроконтроллер с ШИМ-выходами.
Чтобы управлять светодиодом с Arduino – используйте вот эту схему:
Обратите внимание выводы R, G и B у светодиода подключаются к ШИМ-пинам Ардуины.
Для управления мощной RGB-лентой схема не имеет принципиальных отличий, за исключением того, что подключается она к микроконтроллеру через усилители – транзисторы.
Вот вариант схемы без использования ардуин и других микроконтроллеров, с помощью трёх драйверов CAT4101, способных выдавать ток до 1А.
Однако сейчас достаточно дешево стоят контроллеры и если нужно регулировать светодиодную ленту – то лучше приобрести готовый вариант. Схемы с ардуино гораздо проще, тем более вы можете написать скетч, с которым вы будете либо вручную задавать цвет, либо перебор цветов будет автоматическим в соответствии с заданным алгоритмом.
RGB-светодиоды позволяют сделать интересные световые эффекты используются в дизайне интерьеров, как подсветка для бытовой техники, для эффекта расширения экрана телевизора. Особых отличий при работе с ними от обычных светодиодов – нет.
Адресные светодиоды и светодиодные ленты — как устроены и работают, подключение и управление
Программирование микроконтроллеров для начинающих
Что такое дисплеи Nextion и как с ними работать?
7 учебных курсов по работе с Ардуино, онлайн обучение проектированию и конструированию электронной аппаратуры
AVR-STM-C++
Пришли с Китая RGB-светодиоды, я ожидал партию с общим катодом, но пришли с общим анодом. Заказывал для самодельного ночника, так что особой разницы что там у них общего нет никакой. Итак, давайте разберемся для начала, что такое ргб-светодиод, как устроен и как работает.

На фото выше представлены два светодиода, один обычный, второй rgb. Как видим, у ргб 4 ноги, это обусловлено тем, что, по сути, RGB-светодиод — это три светодиода в одном корпусе: красный, зеленый и синий (Red, Gren, Blue). Общий анод и по одному катоду на три цвета. Давайте подключим наш светодиод к ардуино нано и для начала мигнем по очереди тремя цветами. Посмотрим как подключить RGB светодиод с общим анодом к ардуино.

На схеме я изобразил наш RGB-светодиод в виде трех отдельных светодиодов, соединенных вместе анодами. Этот совместный анод подсоединяем на плюс питания, через катоды будем управлять свечением, их подключаем к выводам ардуино.
На схеме я не указал резисторы, их можно подключить как на каждый анод отдельно, так и один резистор на катод. Я подключил три резистора по 240 Ом между каждым катодом и выводом ардуины. Собрал все на макетной плате, получилось как-то вот так.

Электрическая часть схемы закончилась, переходим к программной. Вся суть нашей электрической части в общем аноде — на катоды нам нужно подавать минус. То есть, конфигурируем вывод ардуины в качестве выхода, устанавливаем на нем низкое состояние (логический ноль) — светодиод светится. При высоком состоянии (логическая единица) светодиод не светится. Поскольку мы управляем яркостью свечения с помощью ШИМа, то все расчеты для высчитывания яркости придется оборачивать обратно пропорционально. ШИМ может принять одно из 256 значений — от 0 до 255 (потому как регистр восьмибитный). Для того, чтоб зажечь светодиод — нужен 0. Для того, чтоб потушить — 255. Напишем скетч для поочередного мигания тремя цветами нашего RGB-светодиода.

Заливаем скетч, наслаждаемся миганием. Для того, чтоб светодиод светил каким-то уникальным цветом, достаточно смешать три основных цвета в определенных пропорциях. Например, для получения желтого цвета смешиваем зеленый и красный, при этом синий выключен. Если смешать все три — получится белый.
Итак, у нас теперь есть схема подключения RGB-светодиода к Arduino nano, понимание как это всё устроено и как работает. Аналогичным образом можно управлять и RGB лентой. В дальнейшем рассмотрим алгоритм переливания всеми цветами радуги.
