(Обновлена) Подключение RGB светодиодной ленты к Arduino (LED 3528)
Почти два месяца лежал набросок данной стать в черновиках, все как то было некогда, то дела, то другие заботы. И вот в канун Нового года, она стала еще больше актуальна на мой взгляд, и я все таки решился дописать и опубликовать один из моих залежавшихся черновиков.
ВступлениеПриветствую всех, в данной статье мы поговорим с вами об RGB лентах, о том как подключать их, и раз уж скоро Новый год, то и сделаем мы с вами для наглядности, обычную ёлочную гирлянду. Для этого нам понадобиться сама RGB лента, у меня это 6-ти вольтовая лента на LED светодиодах 3528. Кнопка, Arduino UNO, блок питания на 5 Вольт (обычная зарядка для сотового) ну и конечно несколько перемычек.
В данной статье мы затронем только ленты на светодиодах 3528, так что можно считать эту статью первой, из серии знакомства со светодиодными лентами. В следующий раз мы поговорим об подключении лент на RGB светодиодах 5050, но будет это уже после нового года.
ПодключениеИ того мы имеем следующую схему, разве что в качестве кнопки у меня выступает готовый модуль с подтягивающим резистором, но я думаю это не составит для вас проблем.
И так, что мы видим из схемы выше.
- RGB лента подключена у нас напрямую к Arduino UNO. Сделал я так потому, что лента у меня как я писал выше 6-ти вольтовая, а это значит что ее можно напрямую подключить к ардуино без посредников, ну разве что гореть будет чуть тусклее, но глазу в целом - незаметно.
- Важно! RGB лента берет питание с контакта Vin(Arduino Uno) т.е. с блока питания (контакт ленты +6V мы подключили на порт Vin).
- Контакты RGB светодиодной ленты выведены на порты (
Теперь, когда мы все собрали и подключили, пора заняться собственно программированием. Но перед этим надо определиться, скажем так с "эффектами". Найдем в кладовке китайскую гирлянду, подключим, по переключаем различные режимы.
В моей гирлянде этих режимов оказалось довольно много. По этому я выберу из них несколько понравившихся и боле менее отличающихся друг от друга.
- Рандом (Цвета загораются в случайном порядке, но мы усложним, и сделаем случайной еще и яркость).
- Бегущий огонек (Светодиоды включаются по очереди в определенном направлении).
- Бегущий огонек в обратную сторону.
- Затухание (Один из цветов плавно гаснет, в то время как другой набирает яркость, и так по кругу).
- Ну и два стандартных, это "Включено" когда горят все светодиоды на максимальной яркости, и "Выключено" когда мы отключаем нашу ленту.
Собственно далее сам скетч.
Я постарался как можно больше прокомментировать скетч. Но тем не менее хочу немного рассказать о его работе.
Во первых, мы создали несколько переменных необходимых для работы скетча.
- В переменных pinBtn, pinRed, pinGreen, pinBlue мы указываем порты на которые подключена светодиодная лента и кнопка.
- Переменная mode содержит в себе номер "эффекта", который в данный момент воспроизводится.
- tempButton и button необходимы нам для нормальной работы с кнопкой. При помощи них мы избавляемся от дребезга и переключаем эффекты.
- state и index - вспомогательные переменные для нормальной работы некоторых эффектов.
Во вторых в функции setup() мы инициализируем порты, так как с лентой мы работаем использую ШИМ, то порты эти нет необходимости отдельно инициализировать, по этому тут указывается только порт кнопки.
В третьих в функции loop() мы производим проверку нажатия кнопки, смену эффекта, и собственно управление светодиодами нашей ленты в зависимости от текущего эффекта.
Ну и напоследок хочу заострить ваше внимание на работе ленты. Дело в том, что как вы заметили (а может и нет) по схеме подключения видно, что ленте мы подаем питание через отдельный контакт +6, а вот на контакты R, G, B мы должны подавать землю. В следствии чего происходит некий обратный эффект. Когда мы подаем на ленту при помощи ШИМ 5В, светодиоды затыкаются и перестают гореть, а вот когда мы перестаем мешать ленте и увеличиваем скважность импульсов, наша лента начинает гореть ярче и ярче.
- Чтобы светодиоды выключились надо выполнить analogWrite(pin, 255); (Подаем на порт 5В).
- Чтобы светодиоды горели в половину яркости надо выполнить analogWrite(pin, 127); (Подаем на порт 2.5В).
- Ну а чтобы светодиоды горели на максимальную яркость надо выполнить analogWrite(pin, 0); (Подаем на порт 0В).
Вот такая вот необычная вещь эта RGB светодиодная лента.
Ну а далее демонстрационное видео.
Видео ДополнениеИ так, после того как в соц. сетях появились комментарии что такого не может быть, что плата ардуино должна сгореть и вообще это чуть ли не нарушает законы физики, я решил выложить больше информации об RGB ленте.
- Заказывал ленту я в Китае, на торговой площадке Aliexpress, ссылка на ленту.
- Arduino UNO так же от китайского производителя Robotdyn (Хорошие ардуино, с великолепным качеством. У меня самая дешёвая из 3х типов UNO которые он делает).
Из описания следует:
- Напряжение ленты 5В.
- 60 светодиодов на метр (У меня 2 метра).
- Источник питания ленты - USB, да, обычный USB компьютера, ноутбука, телевизора, китаец даже указал прикуриватель автомобиля (возможно он имел ввиду зарядку для сотового). Из этого следует что по стандарту USB, ток ленты не должен превышать 500мА.
- Ну и применение ленты - это подсветка корпуса ПК, мебели, телевизора и прочего где рядом есть USB разъем.
- Сама лента в бухте.
- Контроллер с возможностью изменять яркость, выбирать цвета, и демо режим в виде гирлянды (откуда все и пошло).
- Переходник, штекер питания на USB.
Далее собственно несколько фото.
Далее я замерил ток с помощью мультиметра (на максимальной яркости) и у меня получилась следующая таблица.
КонтроллерArduino UNO Red (40 шт.) 310 мА30-40 мА Green (40 шт.) 230 мА40 мА Blue (40 шт.) 340 мА30-40 мАВсе (120 шт.)870 мА110 мА
Тут стоит еще учитывать точность дешёвого мультиметра.
Напряжение между + и -Между Vin и GNDUSB 2.05.28 В4.64 В (USB->USB)Блок питания5.33 В4.59 В (БП->Разъем питания)
Начнем мы с контроллера.
Из таблицы видно что потребляемый ток далеко не 500мА. Подключал я ленту к своему ПК и Телевизору, при этом самовосстанавливающиеся предохранители не выбивало, работало все часами. Из этого следует, что ток тут явно выше нормы но в пределах допустимого для USB. Хотя наш друг китаец мог и тут немного приукрасить. Ведь версию USB он не указал. А по току они отличаются. USB 1.0-2.0 - максимум 500мА. USB 3.0 - максимум 900мА.
Теперь по Ардуинке.
Всем известно что максимальный ток одного порта Arduino UNO не более 40мА. Это написано на каждом втором сайте. Собственно в таблице выше это мы и видим.
И чуда тут то же нет, Arduino не горит. Она ограничивает ток до 40мА и все. Лента горит тусклее но все работает. При этом за 4 часа непрерывной работы, Ардуино как была холодной так и осталась.
По поводу силовых ключей. Вы правы. Выжать из ленты все, на что она способна, можно только с ними. Но за не имением таковых, я попробовал подключить все напрямую, и оно заработало. Но, судя по всему, я их прикуплю, и мы продолжим экспериментировать с лентой уже в другой статье.
Большая просьба оставлять свои комментарии здесь, в статье. Наш виджет поддерживает все популярные соц. сети и вам даже не надо регистрироваться.