После переноса старого Эффектора на платформу Arduino (ATmega328P) стало возможно развивать проект дальше. И вот теперь к Эффектору я подключил умную ленту (NeoPixels) WS2812.
При этом новый Эффектор WS2812 не просто выводит свои эффекты на умную ленту вместо обычных светодиодов, но еще и обзавелся внушительным количеством нового функционала.
Новые плюшки:
— переделан алгоритм формирования уровней, теперь яркость каналов имеет 255 градаций (по сравнению с 8 в предыдущем варианте)
— переделаны встроенные эффекты, теперь они стали плавней
— количество встроенных эффектов увеличено с 8 до 16.
Правда из программы управления Эффектор-12 доступны, как и в предыдущем варианте, только 8 (не стал переделывать программу, дабы осталась совместимость со всеми вариантами Эффекторов), но с самого Эффектора и пульта можно переключать все 16
— как и в предыдущем Эффекторе осталось управление от ИК-пульта, но добавились новые команды управления, связанные с умной лентой
— так как умная лента цветная, то для формирования разных цветов от монохромных сигналов уровня каналов, были задействованы палитры цветов. Можно выбрать одну из 8 палитр (включая динамическую палитру переливающихся цветов)
— теперь Эффектор может быть участником сети ЗиЧип как сателлит
Эффектор может выдавать информацию о каналах для других сателлитов или управляться другим устройством в сети. Этим я планирую воспользоваться для апдейта моей супергирлянды, подружив ее с программой Эффектор 12 (об этом будет отдельная статья)
— количество отображаемых пикселей на умной ленте может быть произвольным, вплоть до 255 пикселей
— можно регулировать общую яркость ленты
— рисунок 12 каналов не просто располагается на 12 пикселях ленты, а может быть масштабирован (растянут) на любое количество пикселей
— рисунок на ленте длинней чем12 пикселей циклически повторяется
— большинство формируемых эффектов являются циклическими и на ленте создается непрерывная картинка эффекта (невозможно определить границы области эффекта)
— для не циклических эффектов предусмотрен зеркальный вариант повторения каналов, что создает непрерывную картинку и в этом случае
— рисунок по ленте можно сдвигать на произвольное количество пикселей
— линии управления (те, к которым подключены кнопки) реализованы по принципу «монтажного ИЛИ» — это значит, что, управляя устройством посредством пульта, можно получать на этих линиях сигналы управления (прижатия к земле) которые можно использовать, например, для управления своими устройствами.
Как это выглядит вживую.
Как видно на видео, по сравнению с предыдущим Arduffector-ом, у которого все эффекты стремительные и резкие, новый Эффектор выдает плавную и неспешную картинку эффектов. Вообще, эта модификация Эффектора прошла у меня под девизом «Smooth».
Сборка
Так как устройство работает на готовой плате Arduino Nano (или Uno), собирать/паять ничего особо и не придется. Достаточно подключить к Ардуине умную ленту (к выводу 13), залить прошивку (через стандартный ардуиновский USB шнур) и устройство заработает.
Если у Вас количество пикселей WS2812 не превышает 2-3 десятка, то и блока питания отдельного не понадобится – все будет работать от USB-порта. Если лента длинная — USB-порт не сможет обеспечить нужный ток. В этом случае понадобится внешний мощный блок питания 5 вольт.
Для демонстрационного ролика на Ютубе я собрал на макетке необходимый мне минимум и уложил ленту в пластиковый кабельный канал (он подсвечиваясь изнутри создает связную картинку скрывая свечение отдельных пикселей).
Если хотите получить от устройства большего – добавляете переменные резисторы, кнопки и TSOP т.д.
Ленту на пробу мне предоставил магазин DiyLab.com.ua Если Вам понравится устройство и Вы захотите его повторить, то ленту в Украине можно приобрести в этом-же магазине — ссылка на ленты. Для России ее можно приобрести еще у одного моего партнера TIXER.RU (обещались в ближайшее время пополнить ассортимент).
Описание работы
Работает устройство подобно своему предшественнику, но есть и нововведения. Пройдусь по органам управления.
Кнопки:
– 0 All Off – отключает все эффекты и гасит ленту
– 1 EE-series – запускает последовательность эффектов сохраненных в EEPROM (их всего 4 и их можно изменять из программы Эффектор-12)
– 2 Flash-series — запускает случайную последовательность эффектов встроенных в устройство (их 16, изменить их нельзя, период смены эффекта 10 секунд)
– 3 Next – запускает следующий эффект, при этом он остается работать постоянно, кроме того, после перезапуска Эффектора этот эффект продолжит работать
– 4 strip_Mirror – при удержании на «земле» этой линии, 12 каналов Эффектора начинают располагаться на ленте переодично-зеркально (т.е. A-L,L-A,A-L,…), вместо периодичного расположения по умолчанию (т.е. A-L,A-L,A-L,…)
– 5 strip_R, 6 strip_G, 7 strip_B – эти три линии задают текущую палитру, в которой отображается рисунок эффектов на ленте
в варианте «радуга» цвет постоянно циклически меняется
– 8 strip_IR Out — при удержании этой линии прижатой к «земле» начинают передаваться в ИК-сеть (излучатель IR-LED) информация о состоянии каналов (в отдельной статье об этом будет подробней).
Новым способом управления в этом устройстве являются аналоговые входа (АЦП). Посредством напряжения на них (в пределах 0 – 5 вольт) можно изменять картинку, отображаемую на ленте. Линии АЦП подтянуты к 5 вольтам, то есть если к линии ничего не подключено, устройство воспринимает это как максимальный уровень.
– strip_Pixels Number – количество пикселей в ленте, воспроизводящих картинку (5 вольт – 255шт., 0 – 0)
– strip_Scale – масштабирование картинки на ленте (5 вольт – масштаб 1канал:1пиксель, 0 – на всей ленте проецируется 1 канал)
– strip_Offset – смещение рисунка по ленте
– strip_Bright – общая яркость свечения ленты (5 вольт – максимум, 0 – минимум)
Управление посредством уровня напряжения открывает новые возможности использования устройства. Например, если подключить к входу strip_Pixels Number аналоговый сигнал с усилителя, то мы получим линейку-индикатор уровня. Еще, задействовав палитру огня и подключив к strip_Bright сигнал с градусника можно визуализировать температуру и т.д.
Управление устройством посредством бытового пульта.
Для управления устройством подойдет любой бытовой пульт (возможно, будут проблемы со специфическими пультами с обратной связью, например, как у пульта от кондиционера).
Для изучения кнопок необходимо:
1 –нажать (и удерживать) кнопку «Learn»
2 – сбросить Ардуину штанной кнопкой сброса (при этом индикаторный светодиод LED должен несколько раз моргнуть)
3 – отпустить кнопку «Learn».
Из-за того, что в данном алгоритме невозможно организовать подавление дребезга контактов кнопки «Learn», нужно контролировать момент отпускания кнопки. Если в этот момент моргнет индикаторный светодиод LED, то процедуру обучения нужно начать заново (дребезг контактов создает сигнал подобный сигналу пульта, который и запоминается как первая кнопка)
4 – последовательно нажать на пульту 9 кнопок в очередности функций (кнопок устройства 0 All Off … 8 strip_IR Out)
5 – после этого устройство автоматически начинает работать в штатном режиме
Каждое нажатие кнопки на пульте будет подтверждаться индикаторным светодиодом.
Если какая либо кнопка не нужна в устройстве (например, 8 strip_IR Out советую пока не задействовать), то в процессе ее изучения нужно нажимать ранее изученную клавишу.
Как я уже писал выше, новой особенностью этого устройства является то, что входа управления для кнопок, одновременно являются еще и выходами, если управление осуществляется от пульта. При нажатии на кнопку пульта, соответствующая линия управления будет прижата к земле. Это можно использовать для контроля нажатий кнопок пульта или управления Вашими устройствами. Линии от «0 All Off» до «3 Next» при нажатии кнопок на пульту будут прижаты к земле кратковременно, а линии от «4 strip_Mirror» до «8 strip_IR Out» работают как триггер (раз нажал – прижалась, еще раз нажал – отпустилась)
Управление устройством посредством программы Эффектор-12.
Несмотря не значительные изменения, устройство осталось совместимым с программой Эффектор-12 (за исключением некоторых нюансов, связанных с палитрами и дополнительным функционалом). Встроенный в Ардуину USB-UART, позволяет без каких либо проблем, подключить устройство к компьютеру и управлять им. Напомню, что программа управления умеет управлять каналами и эффектами устройства в ручном режиме, визуализировать музыку (с возможностью самостоятельно создавать различные способы визуализации), выполнять различные действия по времени и т.д. Подробней читайте в соответствующей статье.
122-Effector-WS28121.zip (Одна Загрузка)_
Здравствуйте уважаемый GetChiper! А можно ли поменять в программе пин подключения для ленты?
жаль нет обычной волны из всех цветов конечно(
Все понял, супер код, извиняюсь за прошлый вопрос!
Здравствуйте, а почему кнопка работает только на выключение? нельзя ли сделать ее на выкл и вкл?
Все супер, как я понял предел пикселей 255, а можна как-то увеличить на 300?
Привет!
Запросто!
Доброго времени суток, Евгений. Можно ли разместить у себя на сайте Ваше видео, как демку возможностей Arduino? Разумеется, с обратной ссылкой
Это я меняю плагин загрузок — скоро все ссылки начнут работать.
[Загрузка не найдена]
Извените не Нано а Уно.
Иван. Добрый день!
Как Ты Решил проблему. Том идело, Я применял ардуино — нано и ардуино -pro mini с 16МГц кварцем. Лента загораетса и работает вся лента ( 5 m) 150 Led пока невключил питание ардуино, включил неработает. Чтобы заработала снова нада перешыт ардуино. Ардуино -pro mini фюзы FF, DA,05, ардуино — нано фюзы FF, DЕ,05,.
Арвидас, Литва.
Добрый день! Такая же проблема как у Арвидас. Так же не инициализировалась лента. Проблема в том, что некоторые ардуины нано с Китая идут с кварцем 12 МГц, взял другую ардуину с 16МГц кварцем, зашил в нее, лента загорелась. Можно перепаять кварц, а можно поправить скетч. Но исходников для IDE в архиве нет.
Попробуй поставить кусок поменьше.
Возможно это проблемы из-за помех возникающих от больших токов ленты.
Добрый день.
Копия из AliExspress WS2812 5 В СВЕТОДИОДНЫЕ Полосы Света 30 светодиодов/m ( 5 m) 150 Led Smart Led Light магия Цвета IP67 Водонепроницаемый SMD 5050 RGBW Диод .
А какая длина ленты?
avrdude.exe: input file C:\Documents and Settings\user\Desktop\main.hex contains 5886 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 3.25s
avrdude.exe: verifying …
avrdude.exe: 5886 bytes of flash verified
avrdude.exe done. Thank you.
Добрый день. С наступающим. Я перешел с Arduino Uno на mini pro паставил радные фюзы FF, DA,05, и загрузил маin hex. Кага загужалса мигал led 13 на mini pro и рервый led ленты(белый), запустился. (А если Flash-series замкнуть на землю?) зделал, отключил питания mini pro и опять ключил mini pro горит но немигал led 13 и мигает начала ленты ( 0,5м.). Пока етом гаду буду откючят толко ленту а mini pro нод напряжением. Вечером кину атвет AVR dudess 2.4 после загруски. Спосиво.
Должно запускаться автоматически.
Может проблема с фьюзами?
А если Flash-series замкнуть на землю?
Спосиво за ответ и извини за ошивки.
Добрый день.
Запитал ленту от отдельного источника напряжения 5 v 3а. Почему после выключение питание arduino uno и ленты незапускаетса автоматически. Повторно ререшиваеш, снова работает.
Привет!
Фьюзы в ардуине менять не нужно — работает на родных.
По поводу моргания — возможно проседает напряжение от тока ленты. Попробуй запитать ленту от отдельного источника напряжения.
Добрый день.
Скажы пожалустаб где прцчина залил прошивку Main Hex, фюзы L-FF,H-DE,E-05 в Аrduino Uno черес програму Ardudess и USBAPS usbISP лента WS2812 работает моргает, включил — выключил — включил ( из юсб ) не работает, ререшиваеш снова работает до отключение питаня. На кнопки и потенрезисторы нерегирует. Cпосибо. arvydasado22@gmail.com
понятно, спасибо.
Привет!
Нет под Mega32U4 не заработает, так как контроллер совсем другой.
Добрый день.
Скажите, может ли Эффектор заработать на платах ардуино на мк атмеги Mega32U4 (Leonardo, mini? китайский клон — Pro micro)? или необходимо исходный код портировать?
спасибо.
Если вопрос про данное устройство, то я делал управление по ИК-каналу — вышло не очень — очень на малом расстоянии работает.
Если вообще, то можно использовать и Радию модули, и блютуз, и вайфай…
А что можно добавить, чтобы управлять арудино без проводов с компьютера?
Это устройство есть в gcManager — там все просто, в пару кликов
http://www.getchip.net/gcmanager/