На предыдущем занятии мы научились управлять режимами работы светофора на трех цветных светодиодах, подключенных к портам Ардуино. На этом занятии мы продолжим тему программирования выходных портов и изучим работу RGB-светодиода. В качестве практического занятия - создадим радугу свечения светодиода из 7 последовательно сменяемых цветов.
Нам понадобиться для этого:
- 1x Контроллер Ардуино (Arduino UNO)
- 1x беспаечная макетная плата
- 1x RGB-светодиод
- 3x резистор номиналом 220 Ом
- 4x провода «папа-папа»
Устройство RGB-светодиода
RGB-светодиод - светодиод внутри одного корпуса находятся уже не один полупроводниковый светодиод, а три разных цветов - красный, зеленый, синий.
По внутреннему подключению контактов этих трех светодиодов различают две основные схемы включения:
- с общим катодом, где объединены вместе три катода (отрицательный вывод светодиодов)
- с общим анодом, где объединены вместе три анода (положительный вывод светодиодов)
Для подключения к выходным портам Ардуино рекомендуется делать подключение с тремя резисторами на каждый цвет. Хотя встречаются схемы, где используется один резистор, подключаемый к общему выводу. Как правило, такие схемы работают на включение одновременно одного цвета. Для смешения цветов необходимо использовать резистор для каждого цвета, т.е. три резистора в схеме.
Принципиальная схема
Схема на макетке
При подключении RGB-светодиода нужно смотреть на длину его выводов - у общего вывода ножка длиннее остальных трех. Какая ножка отвечает за какой цвет можно узнать по техническому описанию производителя (его называю ДатаШит - DataSheet) или порой проще это сделать с помощью мультиметра на выбранном режиме "прозвонки".
При этом для схемы с общим катодом нужно к длинному выводу приложить черный щуп (это минус), а к одному из оставшихся выводом красный щуп (это плюс питания). При этом загорится определенный цвет. Запоминаем это и проверяем следующий вывод. Светодиод не перегорит, т.к. ток, проходящий через него от мультиметра малый в пределах 1-10 мА.
Алгоритм работы программы
Мы можем использовать уже подготовленный на предыдущем занятии скетч для управления светофором на трех светодиодах. Небольшие изменения коснутся только установки номера выходного порта 3, 5 и 6.
Но можно создать новый скетч на основе нового алгоритма работы.
Первоначально мы будем использовать основные цвета, - красный, зеленый и синий. Будем включать их поочередно и посмотрим так же, что будет происходить с цветом RGB-светодиода при одновременной подачи сигнала на 2х и 3х базовых цветов. Это называется процесс смешения цветов и создает различную палитру цвета.
В этом алгоритме мы используем только два уровня для выходного сигнала - High и Low (5в и 0в) что просто включает и выключает цвет. Мы можем в этом случае получить ограниченное количество смешанных цветов.
Давайте запрограммируем эти режимы работы
Скетч (на Mixly)
После проверки работы данной программы на нашем RGB-светодиоде давайте перейдем к следующему алгоритму работы, где будет уже применяться другой тип выходного сигнала - ШИМ или (PWM) - Широтно-импульсная модуляция.
В отличии от Цифрового выходного сигнала, где есть только два уровня сигнала 5В и 0В в ШИМ сигнале на выходе порта появляются короткие импульсы количество которых в единицу времени может быть от 0 до 255.
Это можно сравнить с расчёской у которых по мере уменьшения количества зубчиков уменьшается ее возможность расчесывать волосы. На ШИМ-выходе 255 - это когда все "электронные зубчики" на месте, и по мере их "выламывания" уменьшается ширина импульсов (можно сказать что уменьшается количество энергии на этом порту) и когда их совсем не будет уровень выходного сигнала будет равен 0в.
На временном графике это будет выглядеть примерно так как на этом рисунке, где приведены несколько уровне выходного сигнала.
Для программирования ШИМ-порта будем использовать команду AnalogWrite с указанием номера порта (их всего шесть = 3,5,6,9,10,11) и уровня сигнала от 0 до 255.
Алгоритм работы Радуга
Скетч Радуга (на Mixly)
Для создания скетча "Радуга" мы воспользуемся новой командой AnalogWrite из раздела In/Out и Процедурой из Function для создания подпрограммы с несколькими наборами команд. При обращении к этой процедуры последовательно будут выполняться записанные в ней команды. В нашем случае это будет установка режима работы трех цветов RGB для получения нужного цвета. В основной программе будут вызовы этой подпрограммы.
Создадим 7 цветов и вызовем их через каждую секунду. При таком варианте у нас будут последовательно каждую секунду загораться нужный нам цвет радуги.