Заставляем RGB-светодиод с Arduino переливаться всеми цветами радуги
Заставляем RGB-светодиод с Arduino переливаться всеми цветами радуги
Это шестой урок курса по изучению Ардуино и здесь мы добавим новый элемент из наших наборов. Это RGB-светодиод, входящий в состав наборов «Базовый» и «Изучаем Arduino» серии «Дерзай».
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 основных цветов радуги
Цвет | R | G | B |
красный | 255 | 0 | 0 |
оранжевый | 255 | 125 | 0 |
желтый | 255 | 255 | 0 |
зеленый | 0 | 255 | 0 |
голубой | 0 | 255 | 255 |
синий | 0 | 0 | 255 |
фиолетовый | 255 | 0 | 255 |
Для смешения цветов необходимо с выводов 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.
После каждого шага делаем паузу для фиксации показа цвета,
проверяем значение потенциометра и изменяем значение скорости изменения цвета.
Создадим в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE необходимо выбрать тип платы (Arduino UNO) и порт подключения платы.
Листинг 1
После загрузки скетча наблюдаем изменение цвета RGB-светодиода цветами радуги, потенциометром меняем скорость смены цвета (см. рисунок 2,3).
Рисунок 2,3. RGB-светодиод – всеми цветами радуги
Как подключить RGB светодиод к Ардуино
На этом занятии мы будем использовать цифровые и аналоговые выходы с «широтно импульсной модуляцией» на плате Arduino для включения RGB светодиода с различными оттенками. Использование RGB LED ленты позволяет создать освещение интерьера с любым оттенком цвета. Расскажем про устройство и распиновку полноцветного (RGB) светодиода и рассмотрим директиву #define в языке C++.
Устройство и назначение RGB светодиода
Для отображения всей палитры оттенков вполне достаточно три цвета, используя RGB синтез (Red — красный, Green — зеленый, Blue — синий). RGB палитра используется не только в графических редакторах, но и в сайтостроении. Смешивая цвета в разной пропорции можно получить практически любой цвет. Преимущества RGB светодиодов в простоте конструкции, небольших габаритах и высоком КПД светоотдачи.
RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор. Кроме того, модуль RGB LED Arduino может сразу монтироваться на плате и иметь встроенные резисторы — этот вариант более удобный для занятий в кружке робототехники.
Фото. Распиновка RGB светодиода и модуль с RGB светодиодом для Ардуино
Распиновка 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 мы заменили номер пинов 11, 12 и 13 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
- в процедуре void loop() мы поочередно включаем все три цвета на RGB.
Плавное управление RGB светодиодом
Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «ШИМ». Для этого ножки светодиода необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на аналоговые выходы микроконтроллера различные значения ШИМ (PWM), для этого воспользуемся циклом for, с помощью которого можно повторять нужные команды в программе.
Скетч для плавного мигания RGB светодиода
Пояснения к коду:
- с помощью директивы #define мы заменили номера пинов 9, 10 и 11 на соответствующие имена RED , GRN и BLU . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
- пины 9, 10 и 11 мы использовали, как аналоговые выходы analogWrite .
Плавное включение нескольких цветов RGB LED
Заключение. Аналоговые выходы на Ардуино используют «широтно импульсную модуляцию» для получения различной силы тока. Мы можем подавать на все три цветовых входа на светодиоде различное значение ШИМ-сигнала в диапазоне от 0 до 255, что позволит нам получить на RGB LED Arduino практически любой оттенок света. Если у вас остались вопросы — оставляйте их в комментариях к этой записи.
GyverLibs/GRGB
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Библиотека для управления RGB светодиодами и лентами для Arduino. Облегчённая версия библиотеки GyverRGB
- Поддержка драйверов с общим анодом и общим катодом
- Настройка яркости
- Гамма-коррекция яркости (квадратный CRT)
- Библиотека может не привязываться к пинам и просто генерировать значения 8 бит
- Быстрые оптимизированные целочисленные вычисления (не везде)
- Плавный переход между любыми цветами (не блокирует выполнение кода)
- Установка цвета разными способами:
- RGB
- HSV
- Быстрый HSV
- Цветовое колесо (1530 значений)
- Цветовое колесо (255 значений)
- Теплота (1000-40000К)
- HEX цвета 24 бита
- HEX цвета 16 бит
- 17 предустановленных цветов
Совместима со всеми Arduino платформами (используются Arduino-функции)
● Проект 5: RGB-светодиод. Широтно-импульсная модуляция. Переливаемся цветами радуги
В этом эксперименте мы рассмотрим широтно-импульсную модуляцию, которая позволяет Arduino выводить аналоговые данные на цифровые выводы, и применим эти знания для создания прозвольных цветов свечения с помощью RGB-светодиода.
Необходимые компоненты:
Arduino не может на цифровой вывод выдавать произвольное напряжение. Выдается либо +5 В (HIGH), либо 0 В (LOW). Но уровнем напряжения управляется многое: например, яркость светодиода или скорость вращения мотора. Для симуляции неполного напряжения используется ШИМ (широтно-импульсная модуляция, или PWM).
ШИМ – это операция получения изменяющегося аналогового значения посредством цифровых сигналов. Цифровой сигнал на выходе постоянно переключается между максимальным и минимальным значениями. Переключение имеет частоту в тысячи герц. Глаз не замечает мерцания более 50 Гц, поэтому нам кажется, что светодиод не мерцает, а горит в неполную силу. Длительность включения максимального значения называется шириной импульса. Для получения различных аналоговых величин изменяется ширина импульса (см. рис. 5.1).
Arduino-функция analogWrite() выдает ШИМ-сигнал на цифровой вывод Arduino. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite(), частота выдаваемого ШИМ-сигнала равна 490 Гц. На платах Arduino Nano и UNO ШИМ поддерживают выводы 3, 5, 6, 9, 10 и 11, на плате Mega – выводы 2–13. Данные выводы отмечены знаком тильды ˜.
В данном эксперименте мы используем RGB-светодиод. RGB расшифровывается как аббревиатура Red, Green, Blue, при помощи этих цветов можно получить любой цвет путем смешения. Светодиод RGB отличается от обычного тем, что содержит 3 небольших кристалла R, G, B, которые смогут синтезировать любой цвет или оттенок. RGB-светодиод имеет 4 вывода (см. рис. 5.2). Подключим RGB-светодиод к плате Arduino и заставим переливаться его цветами радуги. На рис. 5.3 показана схема подключения RGB-светодиода к плате Arduino.
Теперь перейдем к написанию скетча. На самом деле радуга имеет множество цветов, а 7 цветов были придуманы только потому, что эти цвета наиболее устойчиво воспринимаются и определяются глазом и мы их можем назвать и вспомнить поговоркой «Каждый Охотник Желает Знать, Где Сидит Фазан».
Рис. 5.2. Выводы RGB-светодиода
Список этих 7 основных цветов радуги с разложением по компонентам R, G и B представлен в табл. 5.1.
Наш светодиод должен переливаться от красного до фиолетового, проходя через все 7 основных цветов. Алгоритм вычисления любого промежуточного цвета радуги следующий:
1. Примем за начальную точку отсчета красный цвет (255, 0, 0).
2. Будем постепенно увеличивать значение зеленой составляющей G, пока не достигнем значения оранжевого (255, 125, 0), а затем и желтого цвета (255, 255, 0).
3. Постепенно уменьшим значение красной составляющей R до значения зеленого цвета (0, 255, 0).
4. Постепенно увеличим значение синей составляющей B до значения голубого цвета (0, 255, 255).
5. Постепенно уменьшим количество зеленой составляющей G до значения синего цвета (0, 0, 255).
6. Постепенно увеличим количество красной составляющей R до значения фиолетового цвета (255, 0, 255).
7. Выдерживаем небольшую паузу и переходим к шагу 1. Содержимое скетча показано в листинге 5.1.
Порядок подключения:
1. Чтобы видеть смешивание трех компонент R, G, B, а не отдельные составляющие, необходимо сделать поверхность светодиода шероховатой небольшой обработкой напильником или накрыть RGB-светодиод матовой пластиной.
2. Подключаем RGB-светодиод по схеме на рис. 5.3.
3. Загружаем в плату Arduino скетч из листинга 5.1.
4. Наблюдаем свечение светодиода переливающимися цветами радуги.