серии «Дерзай».
RGB расшифровывается
как аббревиатура Red, Green, Blue, при помощи этих цветов можно получить любой цвет путем смешения. Светодиод RGB содержит 3 небольших кристалла R, G, B, с помощью которых мы сможем синтезировать любой цвет или оттенок. В этом уроке мы подключим RGB-светодиод к плате Arduino и заставим его переливаться всеми цветами радуги.
Для данного проекта Вам понадобятся детали, которые имеются в наборах «Базовый» и «Изучаем Arduino»:
- Arduino Uno;
- Кабель USB;
- Плата прототипирования;
- Провода «папа-папа» — 7 шт;
- Резисторы 220 Ом – 3 шт;
- RGB-светодиод – 1 шт;
- Потенциометр.
Собираем схему, показанную на рисунке 1.
Рисунок 1. Схема соединений
Теперь приступим к написанию скетча.
RGB-светодиод должен переливаться всеми цветами радуги от красного до фиолетового, затем переходим к красному и так по кругу. Скорость перехода цветов регулируем потенциометром. В таблице 1 приведены данные значений R, G, B для 7 основных цветов радуги.
Таблица 1. Данные значений R, G, B для 7 основных цветов радуги
Для смешения цветов необходимо с выводов Arduino на R, G, B входы светодиода подавать полный спектр напряжений. Но Arduino не может на цифровой вывод выдавать произвольное напряжение. Выдается либо +5В (HIGH), либо 0 В (LOW). Для симуляции неполного напряжения используется ШИМ (Широтно-Импульсная Модуляция, или PWM).
Я надеюсь, Вы уже изучили главу
2.6 книги Джереми Блюма «Изучаем Arduino: инструменты и методы технического волшебства», где подробно рассказывается о механизме широтно-импульсной модуляции.
Алгоритм выполнения программы:
- Увеличиваем значение зеленой составляющей G, пока не достигнем значения оранжевого (255,125,0),
- Увеличиваем значение зеленой составляющей G, пока не достигнем желтого цвета (255,255,0).
- Уменьшаем значение красной составляющей R до значения зеленого цвета (0,255,0).
- Начальную точка — красный цвет (255,0,0).
- Увеличиваем значение синей составляющей B до значения голубого цвета (0,255,255).
- Уменьшаем значение зеленой составляющей G до значения синего цвета (0,0,255).
- Постепенно увеличим значение красной составляющей R до значения фиолетового цвета (255,0,255).
- Уменьшаем значение синей составляющей B до значения красного цвета (255,0,0).
Переходим к шагу 1.
После каждого шага делаем паузу для фиксации показа цвета,
Delay(VIEW_PAUSE);
проверяем значение потенциометра и изменяем значение скорости изменения цвета.
Void setpause() { pause=map(analogRead(POT),0,1024,MIN_PAUSE,MAX_PAUSE); Serial.print("pause=");Serial.println(pause); }
Создадим в Arduino IDE новый скетч
, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.
Листинг 1
Const int RED=11; // вывод R RGB-светодиода const int GREEN=10; // вывод G RGB-светодиода const int BLUE=9; // вывод B RGB-светодиода int red; // переменная для хранения R-составляющей цвета int green; // переменная для хранения G-составляющей цвета int blue; // переменная для хранения B-составляющей цвета const int POT=A0; // вывод подключения потенциометра const int MIN_PAUSE=10; // минимальная задержка смены цвета, мс const int MAX_PAUSE=100; // максимальная задержка смены цвета, мс int pause; // переменная для хранения текущей задержки const int VIEW_PAUSE=2000; // время фиксации основного цвета, мс void setup() { Serial.begin(9600); } void loop() { // от красного к желтому Serial.println("red - yellow"); red=255;green=0;blue=0; for(green=0;green<=255;green++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от желтому к зеленому Serial.println("yellow - green"); red=255;green=255;blue=0; for(red=255;red>=0;red--) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от зеленого к голубому Serial.println("green - blue"); red=0;green=255;blue=0; for(blue=0;blue<=255;blue++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от голубого к синему Serial.println("blue - blue"); red=0;green=255;blue=255; for(green=255;green>=0;green--) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от синего к фиолетовому Serial.println("blue - purple"); red=0;green=0;blue=255; for(red=0;red<=255;red++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от фиолетового к красному Serial.println("purple - red"); red=255;green=0;blue=255; for(blue=0;blue>=0;blue--) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); } // функция установки цвета RGB-светодиода void setRGB(int r,int g,int b) { analogWrite(RED,r); analogWrite(GREEN,g); analogWrite(BLUE,b); delay(pause); } // функция установки текущей задержки void setpause() { pause=map(analogRead(POT),0,1024,MIN_PAUSE,MAX_PAUSE); Serial.print("pause=");Serial.println(pause); }
После загрузки скетча наблюдаем изменение цвета RGB-светодиода цветами радуги, потенциометром меняем скорость смены цвета (см. рисунок 2,3).
Рисунок 2,3. RGB-светодиод – всеми цветами радуги
В прошлый раз был рассмотрен способ подключения светодиодной ленты к ардуино через драйвер L298. Управление цветом осуществлялось программно - функция Random. Теперь пришла пора разобраться, как управлять цветом светодиодной ленты на основании показаний датчика температуры и влажности DHT 11.
За основу взят пример подключения светодиодной ленты через драйвер L298. Плюсом ко всему в пример добавлен дисплей LCD 1602, который будет отображать показания датчика DHT 11.
Для проекта понадобятся следующие элементы Ардуино:
- Плата Ардуино УНО.
- Дисплей LCD 1602 + I2C.
- Датчик температуры и влажности DHT
- Светодиодная лента.
- Драйвер L298.
- Блок питания 9-12В.
- Корпус для ардуино и дисплея (по желанию).
Первым делом посмотрим на принципиальную схему (рис. 1). На ней можно увидеть, как нужно подключить все вышеперечисленные элементы. В сборке схемы и подключении ничего сложного нет, однако стоит упомянуть об одном нюансе, о котором большинство людей забывают, и в итоге получают неправильные результаты работы LED – ленты с Ардуино.
Рисунок 1. Принципиальная схема подключения Arduino и светодиодной ленты с датчиком DHT 11
Во избежание некорректной работы светодиодной ленты (мерцание, несоответствие цветов, неполное свечение и т.д.), питание всей схемы необходимо сделать общим, т.е. объединить контакты GND (земля) контроллера Ардуино и драйвера L298 (светодиодной ленты). Как это сделать, можно посмотреть на схеме.
Пару слов о подключении датчика влажности. Если покупать голый DHT 11, без обвязки, то между первым и вторым контактами, 5В и Data, соответственно, нужно впаять резистор номиналом 5-10 кОм. Диапазон измерения температуры и влажности написан на обратной стороне корпуса датчика DHT 11. Температура: 0-50 градусов по Цельсию. Влажность: 0-80%.
Рисунок 2. Правильное подключение датчика влажности DHT 11
После сборки всех элементов проекта по схеме, необходимо написать программный код, который заставит все это работать так, как нам нужно. А нужно нам, чтобы светодиодная лента изменяла цвет в зависимости от показаний датчика DHT 11 (влажности).
Для программирования датчика DHT 11 понадобится дополнительная библиотека.
Код программы Arduino и RGB – лента. Изменение цвета ленты в зависимости от влажности.
#include #include //библиотека для работы с дисплеем LCD 1602 #include //библиотека для работы с датчиком влажности и температуры DHT 11 int chk; //переменная будет хранить все данные с датчика DHT11 int hum; //переменная будет хранить показания влажности с датчика DHT11 dht11 DHT; //объект типа DHT #define DHT11_PIN 4 //контакт Data датчика DHT11 подключен на вход 4 #define LED_R 9 // пин для канала R #define LED_G 10 // пин для канала G #define LED_B 11 // пин для канала B //переменные будут хранить значения цветов //при смешивании всех трех цветов будет получаться необходимый цвет int led_r=0, led_g=0, led_b=0; //объявление объекта дисплея с адресом 0х27 //не забываем использовать в проекте дисплей через плату I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() { //создание дисплея lcd.init(); lcd.backlight(); // объявляем пины выходами pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); } void loop() { chk = DHT.read(DHT11_PIN);//читаем данные с датчика DHT11 //вывод данных на дисплей lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.humidity, 1); lcd.print(" %"); delay(1500); //для корректной работы датчика нужна задержка на опрос lcd.clear(); hum = DHT.humidity; //берем показания влажности //в диапозоне от 19 до 30% влажности выдать зеленый цвет if ((hum >= 19) && (hum <= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum <= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum <= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }
Метки: Метки
Во многих приложениях, как любительских, так и профессиональных, иногда бывает необходимым генерировать цвета различных оттенков. Использование отдельных одноцветных светодиодов в таких случаях неоправданно конструктивно и экономически. Поэтому для таких целей были разработаны RGB-светодиоды.
RGB-светодиод (аббревиатура означает RED, GREEN, BLUE) является сочетанием кристаллов, способных генерировать красный, зеленый и синий цвета. Благодаря такому сочетанию данные светодиоды могут воспроизводить 16 миллионов оттенков света. Управлять RGB-светодиодами несложно, и они без проблем могут использоваться в проектах с Arduino. В данном материале будет показан пример управления RGB-светодиодом с помощью Arduino.
Поскольку RGB-светодиод, как было отмечено выше, является сочетанием кристаллов трех разных базовых цветов, то схемотехнически он изображается как три светодиода. Конструктивно такой светодиод имеет один общий вывод и три вывода для каждого цвета. Ниже показана схема подключения RGB-светодиода к Arduino. Также на схеме имеется буквенно-числовой ЖК-дисплей 16×2, потенциометры и последовательно соединенные с линиями RGB-светодиода резисторы. Эти резисторы (R1 = 100 Ом, R2 = 270 Ом, R3 = 330 Ом) ограничивают ток светодиодов, чтобы они не вышли из строя. Переменные резисторы (потенциометры) VR1-VR3 сопротивлением 10 КОм используются для управления интенсивностью свечения RGB-светодиода, то есть с помощью них можно задавать цвет светодиода, меняя интенсивность красного, зеленого и синего кристаллов. Потенциометр VR1 соединен с аналоговым входом A0, VR2 с аналоговым входом A1, а VR3 с аналоговым входом A2.
ЖК-дисплей в данном случае используется для отображения значения цвета и шестнадцатеричного значения цветового кода. Значение цветового кода отображается в 1-й строке ЖК-дисплея (в виде Rxxx Gxxx Bxxx, где xxx представляет собой числовое значение), а шестнадцатеричный код отображается во 2-й строке ЖК-дисплея (в виде HEXxxxxxx). Резистор R4 сопротивлением 100 Ом применяется для ограничения тока, прикладываемого к подсветке ЖК-дисплея, а для регулировки контрастности ЖК-дисплея используется переменный резистор VR4 сопротивлением 10 КОм.
Ниже приведен код (скетч), позволяющий управлять изменением цвета RGB-светодиода с помощью платы Arduino и подключенными к ней потенциометрами.
#include
Многоцветные светодиоды, или как их еще называют RGB, используются для индикации и создания динамически изменяющейся по цвету подсветки. Фактически ничего особенного в них нет, давайте разберемся, как они работают и что такое RGB-светодиоды.
Внутреннее устройство
На самом деле RGB-светодиод - это три одноцветных кристалла совмещенные в одном корпусе. Название RGB расшифровывается, как Red - красный, Green - зеленый, Blue - синий соответственно цветам, которые излучает каждый из кристаллов.
Эти три цвета являются базовыми, и на их смешении формируется любой цвет, такая технология давно применяется в телевидении и фотографии. На картинке, что расположена выше, видно свечение каждого кристалла по отдельности.
На этой картинке вы видите принцип смешивания цветов, для получения всех оттенков.
Кристаллы в RGB-светодиоды могут быть соединены по схеме:
С общим анодом;
С общим катодом;
Не соединены.
В первых двух вариантах вы увидите, что у светодиода есть 4 вывода:
Или 6-тью выводами в последнем случае:
Вы можете видеть на фотографии под линзой четко видны три кристалла.
Для таких светодиодов продаются специальные монтажные площадки, на них даже указывают назначение выводов.
Нельзя оставить без внимания и RGBW - светодиоды, их отличие состоит в том, что в их корпусе есть еще один кристалл излучающий свет белого цвета.
Естественно не обошлось и без лент с такими светодиодами.
На этой картинке изображена лента с RGB-светодиодами , собранные по схеме с общим анодом, регулировка интенсивности свечения осуществляется путем управления «-» (минусом) источника питания.
Для изменения цвета RGB-ленты используются специальные RGB-контроллеры - устройства для коммутации напряжения подаваемого на ленту.
Вот цоколевка RGB SMD5050:
И ленты, особенностей работы с RGB-лентами нет, всё остается также как и с одноцветными моделями.
Для них есть и коннекторы для подсоединения светодиодной ленты без пайки.
Вот распиновка 5-ти мм РГБ-светодиода:
Как изменяется цвет свечения
Регулировка цвета осуществляется путем регулировки яркости излучения каждым из кристаллов. Мы уже рассматривали .
RGB-контроллер для ленты работает по такому же принципу, в нём стоит микропроцессор, который управляет минусовым выводом источника питания - подключает и отключает его от цепи соответствующего цвета. Обычно в комплекте с контроллером идёт пульт дистанционного управления. Контроллеры бывают разной мощности, от этого зависит их размер, начиная от такого миниатюрного.
Да такого мощного устройства в корпусе размером с блок питания.
Они подключаются к ленте по такой схеме:
Так как сечение дорожек на ленте не позволяет подключать последовательно с ней следующий отрезок ленты, если длина первого превышает 5м, нужно подключать второй отрезок проводами напрямую от РГБ-контроллера.
Но можно выйти из положения, и не тянуть дополнительных 4 провода на 5 метров от контроллера и использовать RGB-усилитель. Для его работы нужно протянуть всего 2 провода (плюс и минус 12В) или запитать еще один блок питания от ближайшего источника 220В, а также 4 «информационных» провода от предыдущего отрезка (R, G и B) они нужны для получения команд от контроллера, чтобы вся конструкция светилась одинаково.
А к усилителю уже подключают следующий отрезок, т.е. он использует сигнал с предыдущего куска ленты. То есть вы можете запитать ленту от усилителя, который будет расположен непосредственно возле неё, тем самым сэкономив деньги и время на прокладку проводов от первичного RGB-контроллера.
Регулируем RGB-led своими руками
Итак, есть два варианта для управления RGB-светодиодами:
Вот вариант схемы без использования ардуин и других микроконтроллеров, с помощью трёх драйверов CAT4101, способных выдавать ток до 1А.
Однако сейчас достаточно дешево стоят контроллеры и если нужно регулировать светодиодную ленту - то лучше приобрести готовый вариант. Схемы с ардуино гораздо проще, тем более вы можете написать скетч, с которым вы будете либо вручную задавать цвет, либо перебор цветов будет автоматическим в соответствии с заданным алгоритмом.
Заключение
RGB-светодиоды позволяют сделать интересные световые эффекты используются в дизайне интерьеров, как подсветка для бытовой техники, для эффекта расширения экрана телевизора. Особых отличий при работе с ними от обычных светодиодов - нет.
Трехцветный светодиод может переливаться всеми цветами радуги! Согласитесь, это намного интереснее, чем просто мигать обычным светодиодом
Начнем третий урок знакомства с Arduino.
Подключение оборудования:
На самом деле, трехцветный светодиод, это три светодиода (красный, зеленый и синий) в одном корпусе. Когда мы запускаем его с разной степенью яркости и интенсивности красного, зеленого и синего, мы получаем на выходе новые цвета.
На кромке светодиода есть небольшой скос, это ключ, он указывает на ножку красного светодиода, дальше идет общая, дальше зеленый и синий.
Подключите ногу КРАСНОГО светодиода к резистору 330 Ом. Подключите другой конец резистора в порт Arduino pin9.
Подключите Общий вывод к земле GND .
Подключите ногу ЗЕЛЕНОГО к резистору 330 Ом.
Подключите другой конец резистора в порт Arduino pin10.
Подключите ногу СИНЕГО к резистору 330 Ом.
Подключите другой конец резистора в порт Arduino pin11.
Следующий рисунок показывает внешний вид макетной платы с собранной схемой, и плату Arduino с проводами идущими от макетной платы.
Набор для экспериментов ArduinoKit
Код программы для опыта №3:
Остается загрузить программу в Arduino через USB шнур. Скачать скетч с третьим уроком LED RGB — выше в статье.