(Обновлена) Подключение RGB светодиодной ленты к Arduino (LED 3528)

(Обновлена) Подключение RGB светодиодной ленты к Arduino (LED 3528)

Почти два месяца лежал набросок данной стать в черновиках, все как то было некогда, то дела, то другие заботы. И вот в канун Нового года, она стала еще больше актуальна на мой взгляд, и я все таки решился дописать и опубликовать один из моих залежавшихся черновиков.

Вступление

Приветствую всех, в данной статье мы поговорим с вами об RGB лентах, о том как подключать их, и раз уж скоро Новый год, то и сделаем мы с вами для наглядности, обычную ёлочную гирлянду. Для этого нам понадобиться сама RGB лента, у меня это 6-ти вольтовая лента на LED светодиодах 3528. Кнопка, Arduino UNO, блок питания на 5 Вольт (обычная зарядка для сотового) ну и конечно несколько перемычек.

В данной статье мы затронем только ленты на светодиодах 3528, так что можно считать эту статью первой, из серии знакомства со светодиодными лентами. В следующий раз мы поговорим об подключении лент на RGB светодиодах 5050, но будет это уже после нового года.

Подключение

И того мы имеем следующую схему, разве что в качестве кнопки у меня выступает готовый модуль с подтягивающим резистором, но я думаю это не составит для вас проблем.

И так, что мы видим из схемы выше.

  1. RGB лента подключена у нас напрямую к Arduino UNO. Сделал я так потому, что лента у меня как я писал выше 6-ти вольтовая, а это значит что ее можно напрямую подключить к ардуино без посредников, ну разве что гореть будет чуть тусклее, но глазу в целом - незаметно.
  2. Важно! RGB лента берет питание с контакта Vin(Arduino Uno) т.е. с блока питания (контакт ленты +6V мы подключили на порт Vin).
  3. Контакты 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 часа непрерывной работы, Ардуино как была холодной так и осталась.

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

Большая просьба оставлять свои комментарии здесь, в статье. Наш виджет поддерживает все популярные соц. сети и вам даже не надо регистрироваться.

📎📎📎📎📎📎📎📎📎📎