Ниже представлен проект изготовления подсветки Ambilight для телевизора или монитора. В предыдущей статье «Динамическая подсветка ТВ» использовался простой подход с использованием 4-х RGB светодиодных лент, что позволяло отображать на каждой стороне ТВ лишь один цвет.
В данном статье мы усовершенствуем нашу подсветку, использовав для этого RGB LED пиксели, которые позволяют управлять каждым RGB-светодиодом. Подробнее читайте здесь: RGB LED Pixels.
Итак, что нам понадобится:
— лента цифровых RGB LED Pixels на основе нового контроллера WS2801. Одной такой ленты (25 светодиодов) вполне хватит на обычный среднестатический монитор. Расстояние между RGB-модулями около 10 см. Для большого телевизора могут понадобиться 2 такие ленты
— стабилизированный источник питания 5В для питания RGB LED. Максимальный ток БП нужно подбирать исходя из энергопотребления RGB LED модулей. Если будет использоваться одна лента (25 RGB LED), то ток БП нужен 1.5А, если 2 ленты, то соответственно 3А.
— контроллер Arduino, разъемы и др. мелочи.
Монтаж
Для облегчения подключения к Arduino и БП с лентой были произведены небольшие доработки. Для линии data и clock ленты, были припаяны соединительные коннекторы, чтобы их можно было надежно вставить в разъемы Arduino. Для подключения блока питания припаяли разъем. От разъема, к Arduino припаяли общую «землю». На фото ниже я думаю все вполне понятно:
В Arduino 13-ый пин использовался для clock, а 11-ый пин для data. Плюс, не забудьте «землю».
Теперь, надо определиться как будет все это крепиться на задней стенке телевизора или монитора. Здесь вариантов много, и можно тупо прикрепить светодиоды скотчем сзади монитора, а можно вырезать красивый шаблон или оргстекла. Наш шаблон бы сделан из тонкого пластика, со всеми необходимыми вырезами под монитор и крепления:
Затем, необходимо равномерно расположить 25 LED RGB светодиодов. У меня вышло расстояние между светодиодами около 50мм.
Когда будете изготавливать шаблон, не закрывайте вентиляционные отверстия на мониторе, если таковые имеются.
После того, как все RGB LED пиксели закреплены, осталось прикрепить контроллер Arduino. Для этих целей лучше всего подойдет 2-хсторонний скотч. Подсоединяем USB кабель к Arduino и источник питания 5В к RGB LED ленте.
Программное обеспечение
Все необходимое ПО вы можете скачать с GitHub. В папке Arduino->LEDstream находится скетч для Arduino. Скомпилируйте его и загрузите в контроллер.
Для компьютера используется ПО под Processing IDE, который необходимо скачать и установить отдельно (не путать с Arduino Processing!). Если в вашей конфигурации не 25 RGB LED, то в скетч необходимо будет внести изменения. Также, необходимо выбрать COM-порт, к которому подключен контроллер Arduino, чтобы передавать данные (см. скриншот ниже).
Программа работает следующим образом: после запуска, программа работает в фоновом режиме и постоянно делает скриншоты экрана и анализирует цвета отдельных точек по периметру. Потом вычисляет среднее цвета для точек и передает данные в контроллер Arduino. И не важно, что запущенно на компьютере — медиаплеер, браузер с роликом с youtube или ещё что-то.
Код программы рассматривать не будем, т.к. он хорошо комментирован. Кстати в папке Colorswirl находится небольшой пример демо-скетча, который выводит на RGB светодиоды радугу.
Некоторое старое железо, может не справиться с нагрузкой (к примеру первые Atom’ы на нетбуках), т.к. постоянно делаются скриншоты. В этом случае может помочь уменьшение разрешения, к примеру 800х600.