1,8K подписчиков

Занятие 4 Управляем RGB-светодиодом

259 прочитали

На предыдущем занятии мы научились управлять режимами работы светофора на трех цветных светодиодах, подключенных к портам Ардуино. На этом занятии мы продолжим тему программирования выходных портов и изучим работу RGB-светодиода. В качестве практического занятия - создадим радугу свечения светодиода из 7 последовательно сменяемых цветов.

Нам понадобиться для этого:

  • 1x Контроллер Ардуино (Arduino UNO)
  • 1x беспаечная макетная плата
  • 1x RGB-светодиод
  • 3x резистор номиналом 220 Ом
  • 4x провода «папа-папа»

Устройство RGB-светодиода

два варианта RGB-светодиода - с общим катодом и с общим анодом
два варианта RGB-светодиода - с общим катодом и с общим анодом

RGB-светодиод - светодиод внутри одного корпуса находятся уже не один полупроводниковый светодиод, а три разных цветов - красный, зеленый, синий.

По внутреннему подключению контактов этих трех светодиодов различают две основные схемы включения:

  • с общим катодом, где объединены вместе три катода (отрицательный вывод светодиодов)
  • с общим анодом, где объединены вместе три анода (положительный вывод светодиодов)

Для подключения к выходным портам Ардуино рекомендуется делать подключение с тремя резисторами на каждый цвет. Хотя встречаются схемы, где используется один резистор, подключаемый к общему выводу. Как правило, такие схемы работают на включение одновременно одного цвета. Для смешения цветов необходимо использовать резистор для каждого цвета, т.е. три резистора в схеме.

Принципиальная схема

Принципиальная схема подключения RGB-светодиода к портам Ардуино
Принципиальная схема подключения RGB-светодиода к портам Ардуино

Схема на макетке

При подключении RGB-светодиода нужно смотреть на длину его выводов - у общего вывода ножка длиннее остальных трех. Какая ножка отвечает за какой цвет можно узнать по техническому описанию производителя (его называю ДатаШит - DataSheet) или порой проще это сделать с помощью мультиметра на выбранном режиме "прозвонки".

При этом для схемы с общим катодом нужно к длинному выводу приложить черный щуп (это минус), а к одному из оставшихся выводом красный щуп (это плюс питания). При этом загорится определенный цвет. Запоминаем это и проверяем следующий вывод. Светодиод не перегорит, т.к. ток, проходящий через него от мультиметра малый в пределах 1-10 мА.

Расположение элементов и подключение к портам Ардуино
Расположение элементов и подключение к портам Ардуино

Алгоритм работы программы

Мы можем использовать уже подготовленный на предыдущем занятии скетч для управления светофором на трех светодиодах. Небольшие изменения коснутся только установки номера выходного порта 3, 5 и 6.

Но можно создать новый скетч на основе нового алгоритма работы.

Первоначально мы будем использовать основные цвета, - красный, зеленый и синий. Будем включать их поочередно и посмотрим так же, что будет происходить с цветом RGB-светодиода при одновременной подачи сигнала на 2х и 3х базовых цветов. Это называется процесс смешения цветов и создает различную палитру цвета.

Алгоритм для RGB-светодиода на цифровых портах
Алгоритм для RGB-светодиода на цифровых портах

В этом алгоритме мы используем только два уровня для выходного сигнала - High и Low (5в и 0в) что просто включает и выключает цвет. Мы можем в этом случае получить ограниченное количество смешанных цветов.

Давайте запрограммируем эти режимы работы

Скетч (на Mixly)

Скетч управления RGB-светодиодом на цифровых портах
Скетч управления RGB-светодиодом на цифровых портах

После проверки работы данной программы на нашем RGB-светодиоде давайте перейдем к следующему алгоритму работы, где будет уже применяться другой тип выходного сигнала - ШИМ или (PWM) - Широтно-импульсная модуляция.

В отличии от Цифрового выходного сигнала, где есть только два уровня сигнала 5В и 0В в ШИМ сигнале на выходе порта появляются короткие импульсы количество которых в единицу времени может быть от 0 до 255.

Это можно сравнить с расчёской у которых по мере уменьшения количества зубчиков уменьшается ее возможность расчесывать волосы. На ШИМ-выходе 255 - это когда все "электронные зубчики" на месте, и по мере их "выламывания" уменьшается ширина импульсов (можно сказать что уменьшается количество энергии на этом порту) и когда их совсем не будет уровень выходного сигнала будет равен 0в.

На временном графике это будет выглядеть примерно так как на этом рисунке, где приведены несколько уровне выходного сигнала.

Широтно-импульсная модуляция
Широтно-импульсная модуляция

Для программирования ШИМ-порта будем использовать команду AnalogWrite с указанием номера порта (их всего шесть = 3,5,6,9,10,11) и уровня сигнала от 0 до 255.

Алгоритм работы Радуга

для алгоритма Радуга
для алгоритма Радуга

Скетч Радуга (на Mixly)

Для создания скетча "Радуга" мы воспользуемся новой командой AnalogWrite из раздела In/Out и Процедурой из Function для создания подпрограммы с несколькими наборами команд. При обращении к этой процедуры последовательно будут выполняться записанные в ней команды. В нашем случае это будет установка режима работы трех цветов RGB для получения нужного цвета. В основной программе будут вызовы этой подпрограммы.

Для создания программы Радуга
Для создания программы Радуга

Создадим 7 цветов и вызовем их через каждую секунду. При таком варианте у нас будут последовательно каждую секунду загораться нужный нам цвет радуги.

Скетч "Радуга"
Скетч "Радуга"