122-Эффектор с выходом на умную ленту WS2812

Автор: | 14.10.2015

После переноса старого Эффектора на платформу 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 (16167 Загрузок)

_

(Visited 119 404 times, 4 visits today)

122-Эффектор с выходом на умную ленту WS2812: 278 комментариев

  1. Илья

    Здравствуйте уважаемый GetChiper! А можно ли поменять в программе пин подключения для ленты?

  2. Климентий

    Здравствуйте, а почему кнопка работает только на выключение? нельзя ли сделать ее на выкл и вкл?

  3. Machete

    Все супер, как я понял предел пикселей 255, а можна как-то увеличить на 300?

  4. GetChiper Автор записи

    Привет!
    Запросто!

  5. Жора

    Доброго времени суток, Евгений. Можно ли разместить у себя на сайте Ваше видео, как демку возможностей Arduino? Разумеется, с обратной ссылкой

  6. GetChiper Автор записи

    Это я меняю плагин загрузок — скоро все ссылки начнут работать.

  7. Arvydas

    Иван. Добрый день!
    Как Ты Решил проблему. Том идело, Я применял ардуино — нано и ардуино -pro mini с 16МГц кварцем. Лента загораетса и работает вся лента ( 5 m) 150 Led пока невключил питание ардуино, включил неработает. Чтобы заработала снова нада перешыт ардуино. Ардуино -pro mini фюзы FF, DA,05, ардуино — нано фюзы FF, DЕ,05,.
    Арвидас, Литва.

  8. Иван

    Добрый день! Такая же проблема как у Арвидас. Так же не инициализировалась лента. Проблема в том, что некоторые ардуины нано с Китая идут с кварцем 12 МГц, взял другую ардуину с 16МГц кварцем, зашил в нее, лента загорелась. Можно перепаять кварц, а можно поправить скетч. Но исходников для IDE в архиве нет.

  9. GetChiper Автор записи

    Попробуй поставить кусок поменьше.
    Возможно это проблемы из-за помех возникающих от больших токов ленты.

  10. Arvydas

    Добрый день.
    Копия из AliExspress WS2812 5 В СВЕТОДИОДНЫЕ Полосы Света 30 светодиодов/m ( 5 m) 150 Led Smart Led Light магия Цвета IP67 Водонепроницаемый SMD 5050 RGBW Диод .

  11. GetChiper Автор записи

    А какая длина ленты?

  12. Arvydas

    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.

  13. Arvydas

    Добрый день. С наступающим. Я перешел с 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 после загруски. Спосиво.

  14. GetChiper Автор записи

    Должно запускаться автоматически.
    Может проблема с фьюзами?
    А если Flash-series замкнуть на землю?

  15. Arvydas

    Спосиво за ответ и извини за ошивки.

  16. Arvydas

    Добрый день.
    Запитал ленту от отдельного источника напряжения 5 v 3а. Почему после выключение питание arduino uno и ленты незапускаетса автоматически. Повторно ререшиваеш, снова работает.

  17. GetChiper Автор записи

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

  18. Arvydas

    Добрый день.
    Скажы пожалустаб где прцчина залил прошивку Main Hex, фюзы L-FF,H-DE,E-05 в Аrduino Uno черес програму Ardudess и USBAPS usbISP лента WS2812 работает моргает, включил — выключил — включил ( из юсб ) не работает, ререшиваеш снова работает до отключение питаня. На кнопки и потенрезисторы нерегирует. Cпосибо. arvydasado22@gmail.com

  19. olg_m

    понятно, спасибо.

  20. GetChiper Автор записи

    Привет!
    Нет под Mega32U4 не заработает, так как контроллер совсем другой.

  21. olg_m

    Добрый день.
    Скажите, может ли Эффектор заработать на платах ардуино на мк атмеги Mega32U4 (Leonardo, mini? китайский клон — Pro micro)? или необходимо исходный код портировать?
    спасибо.

  22. GetChiper Автор записи

    Если вопрос про данное устройство, то я делал управление по ИК-каналу — вышло не очень — очень на малом расстоянии работает.
    Если вообще, то можно использовать и Радию модули, и блютуз, и вайфай…

  23. DrDen

    А что можно добавить, чтобы управлять арудино без проводов с компьютера?

Добавить комментарий