Arduino для начинающих. Урок 5. Трехцветный светодиод
Продолжаем серию уроков “Arduino для начинающих”. Сегодня подключаем к Arduino трехцветный светодиод. Это одна из базовых схем, используемых в создании роботов на Arduino. В посте видео-инструкция, листинг программы и схема подключения.
Трехцветный светодиод (rgb led) — это три светодиода разных цветов в одном корпусе. Они бывают как с небольшой печатной платой, на которой расположены резисторы, так и без встроенных резисторов. Мы рассмотрим оба варианта.
Видео-инструкция сборки модели Arduino с трехцветным светодиодом:
Для сборки модели с трехцветным светодиодом нам потребуется:
Что потребуется для Arduino с трехцветным светодиодом со встроенными резисторами?
Если используется светодиод без резисторов, нам также потребуется:
- Breadboard
- 4 провода “папа-папа”
- 3 резистора на 220 Ом
Что потребуется для Arduino с трехцветным светодиодом без встроенных резисторов
При работе с трехцветным светодиодом без встроенных резисторов необходимо иметь ввиду, что назначение ножки светодиода можно определить по ее длине. Самая длинная — земля (GND), короче — зеленый (G), еще короче — голубой (B), а самая короткая — красный (R).
Схема подключения модели Arduino с трехцветным светодиодом со встроенными резисторами:
Схема подлючения трехцветным светодиодом со встроенными резисторами
Схема подключения модели Arduino с трехцветным светодиодом без встроенных резисторов:
Схема подлючения трехцветным светодиодом без встроенных резисторов
Для управления этой моделью подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):
//объявляем переменные с номерами пинов
int r = 13;
int g = 12;
int b = 11;
void setup() //процедура setup
<
//объявляем используемые порты
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
>
void loop() //процедура loop
<
digitalWrite(r, HIGH); //включаем красный
delay(500); //ждем 500 Мс
digitalWrite(r, LOW); //выключаем красный
digitalWrite(g, HIGH); //включаем зеленый
delay(500); //ждем 500 Мс
digitalWrite(g, LOW); //выключаем зеленый
digitalWrite(b, HIGH); //включаем синий
delay(500); //ждем 500 Мс
digitalWrite(b, LOW); //выключаем синий
>
Так выглядит собранная модель Arduino с трехцветным светодиодом без выстроенных резисторов:
Собранная модель Arduino с трехцветным светодиодом без встроенных резисторов
Смотрите также:
Посты по урокам:
Все посты сайта «Занимательная робототехника» по тегу Arduino.
Наш YouTube канал, где публикуются видео-уроки.
Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.
Подключение трехцветного светодиода к Arduino Uno
В этой статье мы будем подключать трехцветный (красный/зеленый/синий) светодиод (RGB LED) к плате Arduino Uno.
Принципы работы трехцветного светодиода
Внешний вид трехцветного светодиода показан на следующем рисунке:
Трехцветный светодиод имеет 4 контакта как показано на рисунке ниже:
- контакт 1: цвет 1 отрицательный вывод при общем аноде или цвет 1 положительный вывод при общем катоде;
- контакт 2: общий положительный вывод для всех трех цветов при общем аноде или общий отрицательный вывод для всех трех цветов при общем катоде;
- контакт 3: цвет 2 отрицательный вывод или цвет 2 положительный вывод;
- контакт 4: цвет 3 отрицательный вывод или цвет 3 положительный вывод.
Таким образом, есть 2 типа трехцветных светодиодов – с общим катодом (ОК) и с общим анодом (ОА). При общем катоде (общий отрицательный вывод) мы имеем три положительных вывода, где каждый вывод отвечает за свой цвет, и один общий отрицательный вывод. Внутренняя схема подключений трехцветного светодиода с общим катодом показана на следующем рисунке:
В таком светодиоде (с ОК) если мы хотим зажечь красный цвет мы должны подать питание на контакт, отвечающий за красный цвет, и подать землю на общий отрицательный вывод. Аналогично и для других цветов.
При общем аноде (общий положительный вывод) мы имеем три отрицательных вывода, где каждый вывод отвечает за свой цвет, и один общий положительный вывод. Внутренняя схема подключений трехцветного светодиода с общим анодом показана на следующем рисунке:
В таком светодиоде (с ОА) если мы хотим зажечь красный цвет мы должны подать землю на контакт, отвечающий за красный цвет, и подать питание на общий положительный вывод. Аналогично и для других цветов.
В нашей схеме мы будем использовать трехцветный светодиод с общим анодом (ОА). Если вам будет необходимо подсоединить больше подобных светодиодов к плате Arduino Uno, к примеру 5, то вам будет нужно 5×4= 20 контактов, но можно уменьшить количество контактов в этом случае до 8 если мы соединим трехцветные светодиоды параллельно и будем использовать технологию мультиплексирования.
Необходимые компоненты
- Плата Arduino UNO (купить на AliExpress).
- Трехцветный светодиод с общим анодом (ОА) (купить на AliExpress).
- Резистор 1 кОм (купить на AliExpress).
Работа схемы
Схема устройства представлена на следующем рисунке.
На представленной схеме мы подсоединили общий отрицательный вывод трехцветного светодиода к выводу питания платы Arduino при помощи резистора 1 кОм.
Отрицательные выводы (1, 3, 4) трехцветного светодиода подсоединены к контактам 2, 3 и 4 Arduino. Здесь трехцветный светодиод подсоединен в обратной логике, то есть если мы подадим на отрицательные выводы светодиода высокий уровень, то он выключится. То есть чтобы светодиод оставался в выключенном состоянии необходимо поддерживать на его отрицательных выводах высокий уровень. А если мы подадим на них низкий уровень, то светодиод зажгется.
То есть мы имеем, что контакт 2 светодиода – это его общий анод, а контакты 1, 3 и 4 – отрицательные выводы для красного, синего и зеленого цветов соответственно.
В представленном далее коде программы вы можете увидеть как мы последовательно мигаем всеми тремя цветами в трехцветном светодиоде последовательно подавая на соответствующие отрицательные выводы светодиода высокий и низкий уровень.
Исходный код программы
Код программы достаточно простой, поэтому комментариев к нему нет. Но если у кого возникнут какие либо вопросы по тексту данной программы, то вы можете задать их в комментариях к данной статье.
Как подключить RGB светодиод к Arduino
RGB светодиод – это три светодиода разных цветов (Red – красный, Green – зелёный, Blue – синий), заключённые в одном корпусе. Давайте посмотрим, как подключить RGB светодиод к Arduino.
Инструкция по подключению RGB светодиода к Arduino
- Arduino UNO или иная совместимая плата;
- RGB светодиод;
- 3 резистора по 220 Ом (вот отличный набор резисторов самых распространённых номиналов);
- соединительные провода (рекомендую вот такой набор);
- макетная плата (breadboard);
- персональный компьютер со средой разработки Arduino IDE.
1 Отличие RGB светодиодов с общим анодом и с общим катодом
RGB светодиоды бывают двух типов: с общим анодом («плюсом») и общим катодом («минусом») . На рисунке приведены принципиальные схемы эти двух типов светодиодов. Длинная ножка светодиода – это всегда общий вывод питания. Отдельно расположен вывод красного светодиода ( R ), зелёный ( G ) и синий ( B ) располагаются по другую сторону от общего вывода, как показано на рисунке. В данной статье мы рассмотрим подключение RGB светодиода как с общим анодом, так и с общим катодом.
RGB светодиоды с общим анодом и с общим катодом
2 Подключение RGB светодиода с общим анодомк Arduino
Схема подключения RGB светодиода с общим анодом показана на рисунке. Анод подключаем к «+5 В» на плате Arduino, три другие вывода – к произвольным цифровым пинам.
Схема подключения RGB светодиода с общим анодом к Arduino
Обратите внимание, что мы подключаем каждый из светодиодов через свой резистор, а не используем один общий. Желательно делать именно так, потому что каждый из светодиодов имеет свой КПД . И если подключить их все через один резистор, светодиоды будут светиться с разной яркостью.
Для быстрого расчёта номинала резистора, подходящего к выбранному вами светодиоду, можно воспользоваться онлайн-калькулятором расчёта светодиодов.
3 Управление RGB светодиодами с помощью Arduino
Перепишем классический скетч blink. Будем включать и отключать по очереди каждый из трёх цветов. Обратите внимание, что светодиод загорается, когда мы подаём низкий уровень (LOW) на соответствующий вывод Arduino.
4 Собрать схемуна макетной плате
Посмотрим в действии на мигание RGB светодиодом. Светодиод по очереди зажигается красным, зелёным и синим цветами. Каждый цвет горит 0,1 секунду, а затем гаснет на 0,2 секунды, и включается следующий. Можно зажигать каждый канал отдельно, можно все одновременно, тогда цвет свечения будет меняться.
RGB светодиод подключён к Arduino. Схема собрана на макетной плате
5 Подключение RGB светодиода с общим катодомк Arduino
Если вы используете RGB светодиод с общим катодом, то подключите длинный вывод светодиода к GND платы Arduino, а каналы R, G и B – к цифровым портам Arduino. При этом нужно помнить, что светодиоды загораются при подаче на каналы R, G, B высокого уровня (HIGH), в отличие от светодиода с общим анодом.
Схема подключения RGB светодиода с общим катодом к Arduino
Если не менять вышеприведённый скетч, то каждый цвет светодиода в этом случае будет гореть 0,2 секунды, а пауза между ними составит 0,1 секунду.
Полезный совет
Если вы хотите управлять яркостью светодиода, то подключайте RGB светодиод к цифровым выводам Arduino, которые имеют функцию ШИМ (PWM ). Такие выводы на плате Arduino обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.
УРОК 3. ARDUINO И ТРЕХЦВЕТНЫЙ СВЕТОДИОД
УРОК 3. ARDUINO И ТРЕХЦВЕТНЫЙ СВЕТОДИОД
Урок 3. Arduino и Управление трехцветным светодиодом. Принципиальная схема
Трехцветный светодиод может переливаться всеми цветами радуги! Согласитесь, это намного интереснее, чем просто мигать обычным светодиодом
Начнем третий урок знакомства с Arduino.
Подключение оборудования:
На самом деле, трехцветный светодиод, это три светодиода (красный, зеленый и синий) в одном корпусе. Когда мы запускаем его с разной степенью яркости и интенсивности красного, зеленого и синего, мы получаем на выходе новые цвета.
На кромке светодиода есть небольшой скос, это ключ, он указывает на ножку красного светодиода, дальше идет общая, дальше зеленый и синий.
Подключите ногу КРАСНОГО светодиода к резистору 330 Ом. Подключите другой конец резистора в порт Arduino pin9.
Подключите Общий вывод к земле GND .
Подключите ногу ЗЕЛЕНОГО к резистору 330 Ом.
Подключите другой конец резистора в порт Arduino pin10.
Подключите ногу СИНЕГО к резистору 330 Ом.
Подключите другой конец резистора в порт Arduino pin11.
Урок 3. Arduino и Управление трехцветным светодиодом. Cхема соединений
Следующий рисунок показывает внешний вид макетной платы с собранной схемой, и плату Arduino с проводами идущими от макетной платы.
Набор для экспериментов ArduinoKit
Код программы для опыта №3: sketch 03
Урок 3. Arduino и Управление трехцветным светодиодом. Макетная плата
Остается загрузить программу в Arduino через USB шнур. Скачать скетч с третьим уроком LED RGB — выше в статье.
RGB светодиоды и ленты
Немного теории
Я думаю все знают, что свет – это поток фотонов, но в то же время он является электромагнитной волной, излучением. Человеческий глаз воспринимает очень узкий диапазон этого излучения: приблизительно от 390 до 790 ТГц (террагерц), так называемое видимое излучение или видимый свет. “Ориентироваться” в этом диапазоне электромагнитного излучения принято в обратной величине – длине волны, измеряемой в данном случае в нанометрах (нм): человеческий глаз видит излучение в диапазоне от
400 нм (фиолетовый) до
800 нм (красный). Между синим и красным есть ещё один важный цвет – зелёный: Красный (Red, R), зелёный (Green, G) и синий (Blue, B) являются основными цветами: смешивая эти три цвета в разных пропорциях можно получить плюс-минус все остальные цвета.
Этот наглядный “двухмерный” случай с кругами вы тоже скорее всего видели. Если раскручивать тему дальше, то можно задаться интенсивностью каждого цвета и получить итоговый цвет как функцию от трёх переменных, или же трёхмерное цветовое пространство RGB. Если интенсивности всех трёх цветов равны нулю – получится чёрный цвет, если все три максимальны – белый, а всё что между – оттенки:
На картинке выше интенсивность каждого цвета представлена диапазоном 0-255. Знакомое число, не правда ли? Всё верно, в большинстве применений диапазон каждого цвета кодируется одним байтом, потому что это удобно с точки зрения программирования и достаточно с точки зрения глаза: три цвета – три байта – 256*256*256 == 16.8 миллионов оттенков. Да, именно эта цифра часто фигурирует в рекламах смартфонов и телевизоров, и именно столько оттенков мы можем абсолютно не напрягаясь получить при использовании Arduino и RGB светодиодов, о чём и поговорим в этом уроке.
RGB светодиоды
RGB светодиод представляет собой по сути три светодиода в одном корпусе. Чтобы не плодить лишние выводы, все аноды или катоды светодиодов объединяются и получается 4 контакта: R, G, B и общий. Общим может быть как минус-катод (Common Cathode), так и плюс-анод (Common Anode): Также на этой картинке показана распиновка типичного RGB светодиода: самая длинная нога – общий вывод, крайняя рядом с ней – красный, с другой стороны зелёный дальняя крайняя – синий. К Arduino такой светодиод подключается точно так же, как если бы мы подключали три отдельных светодиода (читай предыдущий урок про светодиоды): на каждый цвет нужен токоограничивающий резистор, а общую ногу нужно подключать в зависимости от того, анод она или катод.
Можно управлять каждым цветом точно так же, как если бы это были отдельные светодиоды. Также не забываем про подключение: если у светодиода общий катод, то высокий сигнал ( digitalWrite(pin, HIGH); ) с управляющих пинов будет включать выбранный цвет, а если общий анод – то выключать. Соответственно плавное управление яркостью при помощи ШИМ работает по той же логике: у общего катода analogWrite(pin, 200); включит цвет почти на полную яркость, а у общего анода – почти полностью погасит. RGB светодиоды можно дёшево найти на Aliexpress, а именно:
В качестве магазина рекомендую CHANZON, самые хорошие светодиоды и чипы/матрицы.
RGB ленты
RGB светодиодные ленты устроены аналогично одноцветным лентам и RGB светодиодам: в 12 Вольтовой ленте светодиоды каждого цвета соединяются по три штуки с токоограничивающим резистором и образуют сегмент ленты, далее эти сегменты подключаются параллельно. Также лента имеет общий вывод со всех цветов, в большинстве случаев это общий анод. Почему? Помните, в уроке про управление нагрузкой я говорил, что чаще всего используют N-канальные полевые транзисторы, потому что они дешевле, удобнее в применении и имеют более удачные характеристики? Вот именно поэтому! Драйверы для RGB лент также делают на основе N-канальников, поэтому найти в продаже ленту с общим катодом даже вряд-ли получится. В качестве магазина на aliexpress рекомендую BTF Lighting , самые качественные ленты. Итак, как нам подключить RGB светодиодную ленту к Arduino? Точно так же, как обычную! Но тут я добавлю ещё несколько интересных вариантов.
MOSFET
Нам понадобятся три полевых транзистора и резисторы им в обвязку (почему и зачем – читай в уроке про управление нагрузкой). Подключается всё вот по такой схеме: Если нужно плавное управление яркостью цветов – подключаем к ШИМ пинам, если просто вкл/выкл – можно к обычным. Свой драйвер на плате можно развести примерно вот так (корпуса D-pak):
LED Amplifier
У китайцев есть готовые драйверы для “усиления” сигнала на RGB ленту, по сути те же три транзистора что выше, но всё красивое и готовое. Подключается следующим образом:
Драйвер Н-моста
Ну и экзотический вариант: использовать полномостовой драйвер для моторов. Почему нет? Количество выходов у таких драйверов всегда кратно двум (для подключения одного мотора), так что это отличный вариант для управления также RGBW лентой. Драйверы можно найти на aliexpress по названию.
Программирование
Программирование эффектов для управления RGB цветом заключается в изменении интенсивностей трёх цветов, то есть трёх численных значений. У меня есть мощная библиотека для RGB светодиодов и лент, в ней реализовано очень много различных удобных инструментов для работы с цветом.
Библиотека GRGB
- Поддержка драйверов с общим анодом и общим катодом
- Настройка яркости
- Гамма-коррекция яркости (квадратный CRT)
- Библиотека может не привязываться к пинам и просто генерировать значения 8 бит
- Быстрые оптимизированные целочисленные вычисления (не везде)
- Плавный переход между любыми цветами (не блокирует выполнение кода)
- Установка цвета разными способами:
- RGB
- HSV
- Быстрый HSV
- Цветовое колесо (1530 значений)
- Цветовое колесо (255 значений)
- Теплота (1000-40000К)
- HEX цвета 24 бита
- HEX цвета 16 бит
- 17 предустановленных цветов
Например плавная смена цвета по спектру будет выглядеть вот так:
В рамках этого урока мы рассмотрим некоторые алгоритмы, потому что это интересно и может пригодиться где-то ещё.
Хранение цвета
Что касается хранения цветовой информации, то это могут быть как три отдельных байта byte r, g, b; , так и более крупный тип данных, например так: long color; . Во втором случае цвет принято записывать в HEX представлении: красный, зелёный и синий байты идут друг за другом 0xRRGGBB . Напомню, что один байт в 16-ричном представлении может иметь значение от 0x00 (0) до 0xFF (255). Таким образом например цвет 0xBBA000 – жёлтый средней яркости ( 0xBB красный, 0xA0 зелёный, 0x0 синий). Такое представление чаще всего встречается в веб-разработке, при работе с микроконтроллером удобнее хранить цвет в байтах. Вот так можно конвертировать цвет из HEX в байты и наоборот:
Может пригодиться при связке Arduino и веба.
Включение цветов
Как я уже писал выше, включение того или иного цвета производится точно так же, как в уроке про обычные светодиоды. Для плавного управления яркостью используется ШИМ сигнал.
Для плавного управления цветом можно использовать потенциометры:
Цветовое колесо
Первый очевидный эффект – плавное перетекание одного цвета в другой. Это можно сделать линейно, вот таким образом: Реализовать это можно просто через условия. Продолжим предыдущий пример:
Пространство HSV
Следующий вариант более интересен тем, что помимо цвета позволяет настроить его яркость и насыщенность. Такая цветовая модель называется HSV – (Hue, Saturation, Value), или (Цвет, Насыщенность, Яркость), в этом цветовом пространстве гораздо удобнее выбирать нужный цвет. Представить его можно цилиндром: Светодиод и лента работают в пространстве RGB, HSV цвет нужно конвертировать в RGB для включения соответствующих каналов цвета. В подробности работы алгоритма вдаваться не будем, тем более что существует много разных вариантов его реализации, можно найти их в интернете по запросу HSV to RGB C++. Вот один из них, который использую я:
На этом этапе я могу вам сказать, что после прочтения всех предыдущих уроков вы можете самостоятельно открыть и изучить исходник библиотеки и при желании взять оттуда нужный алгоритм или эффект!
Подключение большого количества RGB
У меня на сайте есть статья, где рассказано об алгоритме динамической индикации RGB светодиодов. Она позволяет подключить несколько RGB светодиодов или лент с возможностью изменения цвета.