Общество свифт было создано. Переводы swift (свифт): межбанковская платежная система. Для кого это сделано

Общество свифт было создано. Переводы swift (свифт): межбанковская платежная система. Для кого это сделано

Телевизоры с динамической подсветкой вокруг рамки дисплея - одна из фирменных фишек компании Philips. И в отличие от многих других она работает. Однако за всё приходится платить, и телевизоры с Ambilight и повышенным эффектом присутствия стоят дороже многих других моделей.

Российские разработчики предложили способ, который позволит оснастить динамической подсветкой и мониторы любого производителя. Для этого даже не придётся везти устройство в сервисный центр: потребуется только немного времени и усидчивости.

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

Предлагается две основные модели: версия для монитора (30 светодиодов) и версия для телевизора (60 светодиодов). Есть и совсем простая - на 10 светодиодов, но она подходит только для самых маленьких мониторов.

Версия для телевизоров оборудована внешним блоком питания. Также в её пользу говорит большее количество светодиодов, что даёт большую площадь подсветки (будет светиться шире и выше, другими словами). Если подобные варианты не подходят по каким-либо соображениям, можно связаться с разработчиками: за небольшую доплату они предложат модифицированный вариант.

mindrunway.ru

PaintPack, по сути, представляет собой небольшой корпус, к которому с двух сторон подключаются съёмные светодиодные ленты. Коробочка с начинкой несёт на себе индикаторы и разъём питания, а также microUSB для соединения с ПК. Есть ещё мастер-разъём (проприетарный) для последовательного подключения двух устройств.

Корпус устройства размещается на задней панели телевизора или монитора. Затем прокладываются LED-ленты в соответствии с инструкцией, подключается питание и начинается колдовство. При соединении PaintPack с компьютером через USB-разъём необходимо установить драйверы и произвести настройку устройства в комплектной программе.


mysku.ru

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

  1. Статический фон - устанавливается любой цвет, регулируется свечение светодиодов.
  2. Цветомузыка - подсветка будет мигать в такт звучанию музыки. Цвет подсветки устанавливается на зелёно-жёлтый.
  3. Динамический фон - плавное перетекание одного цвета в другой.
  4. Захват экрана - основной режим работы.

В этом режиме возможен захват цвета из просматриваемых фильмов и игр. Цвет подсветки будет меняться в соответствии с изображением на экране, разделяясь на верхнюю, нижнюю и боковые зоны (каждая в отдельности).

Работает PaintPack немного медленнее, чем официальный аналог от Philips. Но с учётом разницы в стоимости и возможности модернизации любого устройства выбор очевиден.

Добрый вечер, дамы и господа.
Сегодня я расскажу вам как за пять-десять минут с помощью паяльника, трех проводков и матерного слова (ну еще и ардуино с лентой на ws2812b) собрать аналог Ambilight от филипс, который по некоторым параметрам будет превосходить его.

Внимание! Под катом очень много картинок!

Обновление 22.11.14: Настройка на Android, вроде как...

Обновление 26.11.16: Новый форк призматик с космической производительностью в играх и видео


К управляемым светодиодам ws2812b присматривался давно, покупал парочку «поиграться», но большой заказ делать не позволяла жаба, но тут я все-таки созрел, придушил свою жабу и заказал ленту 4 метра по 60 диодов на метр. Заказ пришел относительно быстро. Прием в китае 3.11 - получение 17.11.

Пришла посылка (а точнее мелкий пакет) весом 134г., упаковано все в бумажный пакет с пупырчатым слоем внутри, сама лента была упакована в стандартный для светодиодных лент серебристый пакетик с застежкой.

Сама лента выглядит вот так.

Клеящий слой.

К ленте с двух сторон припаяны разъемы. С одной стороны для подключения контроллера и питания, с другой для наращивания ленты в длину (ленты можно соединять цепочкой). В комплекте идут разъемы для подключения питания и контроллера.

Быстро подключив ленту к ардуино и подав питание, вдоволь намигался и насветился, решил что пора что-нибудь с ней сделать. Думал не очень долго, фоновую подсветку для своего 3D монитора собрать хотел уже очень давно, да и комплектующие под рукой, поэтому я быстро приступил к делу. Собирать мы будем немного модифицированную подсветку Adalight.

Данная фоновая подсветка будут работать в паре с персональным компьютером, либо медиаплеером на android, но в данной статье я рассмотрю только вариант подключения к ПК.

Для сборки своей собственной фоновой подсветки монитора или тв вам потребуется:

  • Arduino (Arduino Nano на ATmega328 будет идеальным вариантом)
  • Лента светодиодная на ws2812b (в моем случае ушло чуть больше 1 метра ленты на монитор 23")
  • Маломощный паяльник (флюс и припой)
  • Три проводка
  • Блок питания на пять вольт (один метр ленты потребляет максимум 14.4 ватт)
Ставим монитор спиной к нам. Путем прикладывания ленты к корпусу монитора с обратной стороны, отмеряем сколько ленты нам потребуется для каждой из сторон. Я решил делать подсветку только трех сторон, при этом низ оставить без подсветки, т.к. снизу находится не очень красивая подставка. Отмерять ленту нужно с левого нижнего края и по часовой стрелке (не забываем, что необходимо развернуть монитор к нам спиной) Если ваш телевизор или монитор висит на стене, то имеет смысл сделать подсветку по всему периметру. тогда отмерять нужно с центра нижней грани и по часовой стрелке (Так будет проще настроить программное обеспечение на последних этапах. Отрезаем обычными ножницами отрезки необходимой длины по линии отреза, ее вы можете определить по значку ножниц на ней. Резать начинайте со стороны разъемов для подключения контроллера, через них мы и будем подключать нашу подсветку. Места разреза спаяйте тремя проводками, восстанавливая контакт только что разрезанным дорожкам. Начало и конец ленты спаивать вместе не надо. Соблюдайте направление, не перепутайте! На ленте есть стрелочки, которые указывают на правильное направление сигнала от контроллера до конца ленты.

Получится вот так:

После того как вы спаяете все отрезки вместе, можно приклеивать нашу ленту по всему периметру монитора (с левой стороны и по часовой стрелке начиная с разъемов на ленте)

После данной процедуры вы должны получить это:

Красный провод (+5в) припаиваем, либо подключаем к пину +5в на ардуино, белый провод подключаем к земле, а зеленый (центральный) к пину D6

Блок питания подключаем ко второму комплектному разъему с двумя проводами: красный к +5в, белый к минусу. Важно чтобы напряжение питания находилось в пределах 5-5.2в. Длинную ленту лучше запитывать в нескольких точках, чтобы избежать большого падения напряжения на диодах.

Всё, основная физическая работа закончена.

Пользователь tidehunterrr советует использовать данный скетч если у вас возникает проблема с мерцающими диодами

Распаковываем Arduino IDE в любое удобное место, папку FastLED из архива с файлами внутри кидаем в папку libraries, которая находится в папке c ArduinoIDE. Запускаем файл с arduino.exe это создаст папку «arduino» в папке с документами, в ней создаем папку NeoPixel и кидем в нее наш скетч. Выходим из Arduino IDE.

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

Запускаем arduino.exe.

Видим следующее:

Открываем наш скетч

В меню Сервис-> Плата выбираем нашу нано
В меню Сервис -> Процессор выбираем ATmega328
В меню Сервис -> Порт выбираем виртуальный Com порт под которым числится наша ардуинка (обычно тот что не com1)

В месте выделенном желтым цветом указываем общее количество диодов в нашей подсветке (у меня получилось 69).

Жмем вот эту кнопку:

Это скомпилирует и загрузит скетч в нашу нано. Во время этой процедуры диодики на ардуине должны интенсивно мигать. После заливки скетча закройте IDE, отключите ардуино от компьютера, подключите её к ленте с помощью нашего разъема на 3 провода и подключите блок питания к ленте. Теперь вновь подключите нано к USB.

Скачайте замечательную программу Prismatik
От замечательного проекта «Лайтпак» и установите её.

Обновление: скачивайте новый форк отсюда

Практически нулевая нагрузка на процессор на рабочем столе, в видео и главное в играх!
При запуске увидите это:

Жмите «Next»

Выбираем Adalight и жмем «Next»

Здесь пишем номер нашего порта, а остальное не трогаем

Затем выбираем имя которое вам нравится

Тут нужно указать общее количество наших диодов

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

В трее рядом с часами появится иконка с изображением солнышка, нажмите на нее правой кнопкой и перейдите в настройки.

Убедитесь, что выбран режим «Захват экрана»

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

ВСЁ! НАША ПОДСВЕТКА ГОТОВА! Поздравляю!

Потрясающий эффект от подсветки. Монитор стал казаться больше, глаза меньше напрягаются при просмотре видео в темном помещении.

На сборку подсветки у меня ушло 10 минут, еще десять я потратил на настройку софта.

Внимательный читатель в этот момент должен возмутиться и сказать что-нибудь вроде «Минуточку! А где же матерное слово?» а то самое слово у меня вырвалось, когда я начал проводить испытания моей подсветки и выражало оно исключительно восторг от увиденного.

Чем оно лучше Ambilight? У меня получилось 69 независимых зон подсветки, а это, насколько мне известно, много больше чем у philips.

Как можно улучшить? Взять диоды мощнее, например такие

Дополнительно наклеить ленту спереди и закрыть рамкой светорассеивающей и получить аналог Philips Aurea. Также я заметил, что диоды в моем случае используются неэффективно, было бы гораздо лучше развернуть их немного в стороны от монитора, направляя световой поток.

Как использовать данную подсветку с android? Вот тут парень дает ссылку на свой скрипт для XBMC под андроид. Возможны и другие варианты о которых я не знаю.

Работает ли она с играми? Да работает, но не со всеми. И необходимо отключать все оверлеи (steam, msi afterburner). Есть информация, что программа Ambibox справляется с играми лучше, но у меня она не заработала.

Что еще можно сделать с данной лентой? Можно собрать светодиодную матрицу (дисплей) и транслировать на нее gif с помощью программы glediator, скетч для arduino можно найти на сайте программы.

Внимание! Чем больше зон подсветки, тем больше нагрузка на процессор компьютера. На тестовой сборке на 240 диодов, зависала ардуино.

Обновление :

Замечательные новости! Проблем с производительностью больше нет! Я попробовал восхитительную и бесплатную программу Ambibox
и вот результаты тестирования производительности на планшете с intel baytrail

Как видите даже планшет свободно тянет подсветку с 300 диодами и скорость обновления больше 40fps!
У неё есть плагин для xbmc.
Также заявлена хорошая совместимость с играми, правда через платную playclaw.

К сожалению протестировать работу подсветки на андроид так и не смог, потому что ни у одного моего устройства нет драйверов на ардуину в ядре.

Обновление 21.11.14г.

Настройка Ambibox

Я окончательно перешел c Призматик на Ambibox и сейчас расскажу вам как настроить вашу подсветку на работу с ней.

Скачиваем последнюю версию программы отсюда

И устанавливаем её. В самом конце процесса установки появится вот такое окошко

Выбираем «Adalight» и процесс установки закончен. После установки запустите программу, в трее рядом с часами появится цветной квадратик, нажмите на него два раза, откроется окно настроек. Язык программы можно поменять в настрйках программы, а основные настройки подсветки находятся здесь

А теперь внимание! Вот почему я не смог в первый раз настроить программу? Да потому что настроек-то и нет нигде. Но оказалось, что они есть, но не влезли в окно, поэтому растягиваем за правый нижний край окно и жмем кнопку «Больше настроек»

И в появившихся настройках выбираем порт нашей ардуинки и количество диодов. Программа может перезапуститься при выборе порта. Здесь же можно выбрать режим работы для текущего профиля, и метод захвата, в играх выбирать их игровой режим с playclaw, а для кино режим windows 8 (самый быстрый, по моим ощущениям).
При включенных дополнительных настройках жмите кнопку «Показать зоны захвата», появятся цветные квадратики по периметру и дополнительные кнопки в меню, нажимаем «Мастер настройки зон».

В этом конфигураторе очень удобно настраивать большое количество зон, можно выбрать количество сторон с подсветкой, количество диодов по вертикали и горизонтали, задать смещение, выбрать формат области для захвата, размер выреза на нижней грани под подставку, монитор с которого производить захват, и даже формат 3d изображения (если вы выводите 3d сигнал на тв в формате side-by-side или over-under). Настроив, жмите «Применить», затем в главном меню сохраните настройки. Настройки для моей системы на скриншоте.

Все! На этом основная настройка программы закончена, но в этой программе еще ОЧЕНЬ большое количество настроек! Вы можете настроить подсветку регулируя цветовые каналы по отдельности для каждого диода, настроить сглаживание, гамму, динамику, и прочее… Можете создать отдельные профили для широкоформатного кино и переключаться на него сочетанием клавиш или автоматически при открытии программы, и даже включать по открытию винампа режим цветомузыки! Экспериментируйте!

Обновление 22.11.14г.

Настройка на android

Всю ночь пытался запустить подсветку на андроид… забегая вперед скажу, что итог изысканий: -1 ардуина мега, но какие-то результаты все-таки есть: выяснилось, что моя мега абсолютно не хочет стыковаться с лентой, ни на одном пине, ни с одним скетчем, и с программами на windows тоже, а в итоге под утро, основательно «клюя носом» спалил ее по глупости. Но при том что лентой она не могла управлять, все остальное работало нормально данные получались, программами подсветка определялась, именно поэтому я не могу с полной уверенностью утверждать, что подсветка работает.

Как я уже писал в комментариях, драйверов на ардуино нано, а точнее на чип ft232r в ядре моих андроид устройств нет, поэтому сняв с другого проекта «Мегу» и убедившись что мой смартфон корректно её определяет и подмонтировывает ее как ttyACM0, приступил к экспериментам. И да, нам потребуется root.

Для начала я скачал последнюю стабильную версию xbmc для android из и установил её.

Затем скачал скрипт у этого парня
к нему потребовался еще модуль libboblight.so, его я нашел в гугле, качал, кажется, отсюда

Откройте XBMC и зайдите в настройки -> Аддоны и установите аддон под названием boblight с официального репозитория, затем закройте XBMC

Файловым менеджером откройте папку Android/data/org.xbmc.xbmc/files/.xbmc/addons и замените папку script.xbmc.boblight папкой, которую мы взяли с ютюба. (Эту процедуру я произвел потому что не был уверен, что скрипт установится правильно, если я просто закину скачанную папку).

Файл libboblight.so кидаем в /system/lib/ и для верности я закинул его еще и в Android/data/org.xbmc.xbmc/files/.xbmc/addons/script.xbmc.boblight/resources/lib/

После запуска XBMC скрипт перестал выдавать ошибку (как когда я запускал его без подключенной ардуины), определил мою подсветку и судя по диодикам на rx/tx начал работать как и положено, но как я уже писал сама лента у меня так и не засветилась.

Конфигурируется этот скрипт в файле hyperion.config.json в папке скрипта, править его можно конфигуратором HyperCon.jar вот отсюда

Дополнительная информация от пользователя andryvlad :

Для тех, кому нужно под Андроид - заработало с платой Arduino Uno R3. Проверял на TV-Box с процессором Amlogic AML8726-M6(MX), Android 4.2.2, Kodi 14.2 Helix с плагином Boblight. Один нюанс - ардуина должна быть собрана по оригинальной схеме (с ATmega16U2 в качестве USB-Com) - она определяется в Андроиде как ttyACM0 (брал такую). Arduino Nano (с FT232RL) увы, не определяется. В утилите HyperCon.jar в первой вкладке прописываем:
Device Type: Adalight
Output: /dev/ttyACM0
Baudrate: 115200
ну и указываем расположение и количество светодиодов (при заливке скетча в ардуино нужно прописать такое же их количество), остальные параметры не трогал. Сформированный файл hyperion.config.json закидываем в папку скрипта. В самом плагине Boblight ничего не настраивал.
Теперь при запуске Kodi появляется сообщение, что плагин подключен и лента мигает по очереди тремя цветами (это типа тест такой, отключается в настройках Boblight). Включаем фильм, наслаждаемся!)

На этом пожалуй все… заказал на али новую «мегу» на замену старой и к ней еще uno r3 и буду продолжать эксперименты потом, ну а сейчас я вполне доволен своей подсветкой монитора управляемой через «нано» замечательной программой Ambibox, а и да… товар рекомендую к покупке;-)

P.S. по прошествии нескольких дней могу сказать, что для монитора плотность в 60 диодов на метр избыточна: слишком большая яркость и мелкие движения света немного утомляют. В настройках программы снизил яркость до минимума, поднял сглаживание и снизил динамику. Все-таки это фоновая подсветка а не продолжение монитора. С большого расстояния таких проблем нет и подсветка не мешает.
По поводу подсветки в играх: насколько я понял для подсветки в играх достаточно демо версии Playclaw 5, кроме окошка при запуске пока никаких ограничений на подсветку не увидел

Пользовательская галерея

Пользователь vre опубликовал небольшое видео со своей подсветкой (телевизор 42", подсветка 3х сторон, 125 диодов).

Пользователь ventura тоже поделился видео со своей системой

Пользователь chaloc прислал фото своего монитора с лентой ws2812b

Пользователь fp777 разместил фото и видео своей подсветки, в которой вместо ленты используются большие светодиоды (если будете повторять его систему, то диоды нужно развернуть, чтобы световой поток был направлен в сторону стены)

110 диодов WS2812B + ARUINO Nano + AmbiBox 2.1.7.
Играет Foobar а картинку на 50" телевизор выдает плагин MilkDrop2…

Видео от пользователя Ernesto

WS2811+Arduino nano, установлено на Samsung 40" 81зона

Отличное видео с монитором пользователя l0lder

112 диодов на 27" монике…

Телевизор товарища nukezzz

- 120 пикселей на 29" телике (2 метра ровно),
- ленту брал с защитой IP65 (отличный вариант).
- arduino nano на CH340

Телевизор пользователя Fedor


Низ не стал делать. Телек 55 дюймов.

Красивое видео с подсветкой пользователя Bron888


Собрал уже давно, когда ещё не было этой темы, ох и помучился тогда разыскивая информацию)))Отличная статья и здесь есть новый скетч убирающий глюк с мерцанием диодов, у себя борол с помощью Watchdog) вот мой результат.

Еще один день и еще один довольный пользователь самодельной подсветки.
Пользователь lesha_01 прислал видео о своей подсветкой.
Сделал уже давно, использую в течение года - всё стабильно работает с Amnibox, метр ленты ровно на 3 стороны пошёл.

crazyrock прислал очень красивое фото своего монитора

AlexNerf тоже поделился своим монитором

Монитор 20", Windows 8, питание от БП системного блока, лента в изоляции

Телевизор пользователя Dante


вот что у меня получилось. на углах ленту сгибал, питание не дублировал, думаю и не надо. 60" панель, получилось 118 диодов и зон, внизу вырез для подставки. использовал скетч из коментов, т.к. скетч тс мерцает.

Монитор пользователя Alber

AVR ATmega32U4 - 1 pcs (~$3)
LED-strip ws2812b - 100 pcs (~$9)
PSU Xiaomi 5V 10W - 1 pcs
LCD Acer 24" - 1 pcs
Software - Ambibox

Себестоимость без имевшихся в наличии блока питания и монитора составила 12 баксов.

Снято на смарт с руки в условиях когда монитор стоит на кронштейне в 15 см от тюля белого цвета.


Монитор пользователя Aimo

ТС спасибо за подробный обзор, т.к. в гайде у adafruit некоторые нюансы были не указаны.
Ленту соединял уголками на 3 пина, очень удобно.
Питание + конденсатор на 1000мкФ 6.3v подключал через коннектор, опять таки очень удобно.
Аккуратно подключив все провода и припаяв резистор на 470ом - Arduino nano поместил в «яйцо» от киндер сюрприза.

И обновленный вариант настроек

Телевизор пользователя Tauntik

Я сделал себе для 55" из ленты 60 диодов на метр, вышло 233 диода (около 4 метров)

Вы тоже можете присылать свои видео и фото, я с удовольствием добавлю их в обзор

Планирую купить +605 Добавить в избранное Обзор понравился +305 +714
  • Tutorial

Ролики с демонстрацией пиксельной подсветки выглядят довольно эффектно - куча разноцветных всплохов, динамичные отблески смотрятся просто замечательно и выглядят более подвижными по сравнению с другими типами подобной подсветки.
Желание поработать с управляемыми огоньками с помощью arduino побудили меня соорудить такую систему. Как оказалось, это довольно простое мероприятие, на которое в сумме было потрачено всего несколько часов (собственно, само сооружение - 10 минут, остальное - софт). Детали процесса сборки и программирования я и изложу в этой статье. Софт, выводы и демо прилагаются.

Аппаратная часть

Для такой подсветки нам понадобятся следующие предметы и устройства:

Схема (если это гордое слово подходит для соединения двух изделий четырьмя проводами) приведена на рисунке:

Процесс сборки прост до безобразия. Детально описывать его нет смысла (по этой же причине нет фотографий готового «изделия» - ардуин с четырьмя проводами в интернете полно).

  1. Припаять всё, как показано на схеме.
  2. Присоединить провода к arduino, саму ардуинку соединить с PC, подключить блок питания.
  3. Залить в ардуино скетч (см. ниже), запустить исполняемый файл на компьютере (ссылки на софт также см. ниже), установить в программе нужный порт COM.
    Если вы пользуетесь Windows Vista/7 - нужно обязательно отключить Aero. Иначе скорость работы просто плачевная, какого-то решения проблемы низкой скорости захвата экрана при включенном Aero, как я понял, не существует.
  4. Убедиться, что всё работает, выключить.
    Следует упомянуть, что работает софт в 32-битном цвете only . Это можно легко поправить, но большого смысла, на мой взгляд, в такой правке нет.
  5. Прикрепить ленту на монитор. Пустить ленту нужно от левого нижнего угла по периметру по часовой стрелке (ЛН->ЛВ->ПВ->ПН->ЛН). Разрезать ничего не нужно, лента хорошо гнется практически в любом месте, так что проблем быть не должно. Для закрепления я использовал двухсторонний скотч - лента очень легкая и этого более чем достаточно.
На этом сборка закончена. Остаётся посчитать и задать количество пикселей по вертикали и горизонтали, и можно смотреть ролики, играть, etc. и радоваться.

Программная часть

Программная часть состоит из двух компонентов:
  • Скетч для Arduino;
  • Программа управления для PC.
Скетч для Arduino
В ардуино нужно залить код, приведенный ниже. Используется библиотека SmallUART (которая, впрочем, ничего особенно выдающегося не делает, при желании можно обойтись стандартными средствами).
/*** ARDUINO CODE FOR PIXEL LIGHT ***/ #include #include unsigned long lastTime; // Time strip was updated last time const unsigned long fadeTimeout = 3000; //////////////////////////////////////////////////////////// // void setup() { UART_Init(115200); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV8); blackoutAll(); delay(1); lastTime = millis(); } //////////////////////////////////////////////////////////// // void loop() { uint8_t data; UART_SendByte("R"); // Byte "We"re ready" bool valid = false; data = uartRead(valid); if (valid) { uint16_t pix_num = data * 3; // Total following bytes for(uint16_t i=0; i < pix_num; i++) { data = uartRead(valid); if (!valid) break; SPI.transfer(data); // Transfer byte to SPI } lastTime = millis(); } if (millis() - lastTime > fadeTimeout) blackoutAll(); } //////////////////////////////////////////////////////////// // Turn off all possible 256 leds void blackoutAll() { for (int16_t i = 0; i < 768; i++) SPI.transfer(0); //погасить все пикселы ленты } //////////////////////////////////////////////////////////// // Read byte with timeout unsigned char uartRead(bool& valid) { uint8_t res = 0; valid = false; for (uint8_t i = 0; i < 255; ++i) { // Max timeout 256*10 if(UART_ReadByte(res)) { valid = true; break; } delayMicroseconds(10); } return res; }

Тут всё предельно просто:

  1. Посылаем сигнал, что мы готовы принять данные о подсветке;
  2. В течение небольшого промежутка времени ожидаем данные;
  3. Если данные пришли, то первый байт из этих данных - число диодов, которые обслуживаются. Умножаем на 3 (RGB) для того, чтобы узнать количество последующих байт;
  4. Переправляем принимаемые данные в ленту;
  5. Обновляем метку времени о последнем обновлении ленты (это нужно для тайм-аута и гашения всех пикселей ленты).
Программа для PC
Вроде бы есть готовые решения для этого, но то, что я видел, мне не понравилось категорически, и вообще это неспортивно, зря что ли ардуино используется. Поэтому, пожевывая бутерброд, левой ногой была написана программа для захвата областей экрана, обработки их и передачи нужных данных в ленту. Вся программа с потрохами доступна на гитхабе по адресу github.com/sergrt/pixie (за код не пинайте).
Используется Qt 5.0.1 - интереса ради, никаких особенных вещей, присущих именно этой версии, не задействовано, так что вполне хорошо заработает и на 4 последние правки сделаны с использованием новых классов, так что теперь с версией 4 исходный код несовместим. Поскольку большую часть своих развлечений я проделываю под Windows, проект сделан под неё - Visual Studio 2012, захват GDI или DirectX. Я честно пытался генерировать.pro файлы для Qt Creator, но этот процесс страшно глючит с новым VS Qt Add-in, в итоге сходу эти файлы не заработали, разбираться не стал. Но всё можно без проблем скомпилировать под linux, см. UPD #3.
Настройки программы
Основная настройка - это указание количества светодиодов по вертикали и горизонтали, а также задание размеров захвативаемых областей. В мои 22" поместилось 10 шт по вертикали и 17 по горизонтали:


Ограничение частоты кадров разумно установить около 30. Значение «0» используется для работы с максимально возможной скоростью.

Также нужно правильно указать порт для обмена с Arduino и скорость обмена. Скорость в скетче по умолчанию 115200:

Для настройки яркости, порога срабатывания и ограничителя сделана отдельная вкладка «Обработка». Параметры, там представленные, регулируются в реальном времени:

Для удобства работы с программой можно настроить на автозапуск захвата при старте, а также запускать свернутой в область уведомлений.

Немного про внутренности софта для интересующихся
Основная идея состоит в запуске потока, хватающего области по заданному механизму, с подстраиваемым fps, и передающий эти области на обработку и последующую передачу ленте. Области захватываются в соответствии с настройками (кто бы мог подумать), цвет пикселя определяется простым средним по трем каналам RGB соответствующей области экрана. Опционально можно включить (директивами препроцессора) преобразование в Lab и усреднение его силами, но этот кусок кода не оптимизирован никак (взят как есть с просторов интернета), тормозит, поэтому по умолчанию выключен. Более того, каких-то особенных преимуществ Lab не заметно в контексте данной задачи, так что это не повод печалиться.
Обработка областей осуществляется по вертикалям и горизонталям, а на ленту отсылается последовательность цветов, начиная с левого нижнего угла и далее по периметру по часовой стрелке (так, как мы наматывали ленту на монитор при сборке).
Захват DirectX по скорости примерно равен захвату с GDI, при том, что в первом случае захватывается экран целиком, а во втором - только нужные куски. Вероятно, тут есть запас по оптимизации.
Обильное использование memcpy связано в первую очередь со скоростью работы - все остальные методы показали себя медленнее в той или иной степени.

Выводы и впечатления

Запас яркости у ленты просто огромный, что хорошо - можно пользоваться даже при наличии других источников света. В полной темноте лучше подвигать бегунками и сделать помягче. Сама лента вполне может служить самостоятельным источником освещения, нужно лишь переделать скетч.
Полагаю, немалое значение имеет диагональ монитора/телевизора. Чем больше - тем лучше.
Также следует устанавливать экран так, чтобы поблизости не было поверхностей, от которых отражаются светодиоды (в моём случае это боковые поверхности колонок) - это не особо критично, но лучше, чтобы резко выделяющихся пикселей не было видно совсем - так как между ними изрядное расстояние, это не лучшим образом влияет на картинку.

Что понравилось:
Просмотр видео и игры с такой подсветкой субъективно разгружают глаза - пропадает жесткий фокус на картинке монитора. Ощущение усталости глаз наступает позже, если не переусердствовать с яркостью. Смотреть видео как минимум необычно, для полноты эффекта лучше делать это с некоторого расстояния.

Что не понравилось:
К самой системе подсветки как таковой особенных претензий нет, но, как уже говорилось, для полноты удовольствия нужно правильное окружение - отстутсвие бликующих поверхностей, равномерный цветовой фон за экраном, etc. В процессе эксплуатации выяснилось, что дизайнерские изыски моего монитора несколько мешают нормальной работе ленты - передняя панель выполнена из прозрачного пластика и выступает над задней крышкой по всему периметру на несколько миллиметров, особенно выдаваясь в нижней части. Поэтому несмотря на то, что лента закреплена относительно далеко, на гранях этой панели видны отдельные светодиоды. Полагаю, мало кто с таким столкнется, но всё же пусть информация будет доступна заранее.

Ниже - ролик, как это выглядит в динамике. Оператор приносит свои извинения за заваленный горизонт.

Компания Philips в 2007 году запатентовала невероятно простую, но, без преувеличения, потрясающую технологию фоновой подсветки ТВ . С такой адаптивной подсветкой меньше устают глаза при просмотре в темноте, увеличивается эффект присутствия, расширяется область отображения и пр. Ambilight применима не только к видео и фото контенту, но и играм. Ambilight превратилась в визитную карточку телевизоров Philips. С тех пор компания Philips пристально бдит, чтобы никто из крупных производителей и думать не смел посягать на святое, создавая что-то подобное. Наверное, лицензировать эту технологию можно, но условия какие-то запредельные, и другие игроки рынка не особо горят желанием это делать. Небольшие компании тоже пытались (и сейчас есть компании, которые это делают) внедрять аналогичную технологию в виде отдельных комплектов, но кара от Philips была неизбежна. Так что в лучшем случае, если компания не продлит каким-то образом патент или его производную, другие производители лишь в 2027 году смогут выпускать что-то похожее.

Но нас, обычных потребителей, такая кара не касается. Мы вольны для себя делать то, что считаем нужным. Сегодня я расскажу в деталях, как самостоятельно сделать адаптивную фоновую подсветку для ТВ или монитора по типу Philips Ambilight (далее просто Ambilight). Для некоторых статья ничего нового в себе содержать не будет, т.к. таких проектов десятки, а статей написано сотни на разных языках, и людей, которые себе уже сделали подобное, тысячи. Но для многих это всё может оказаться очень интересным. Никаких особых навыков вам не потребуется. Только базовые знания физики за 8 класс средней школы. Ну, и совсем чуть-чуть пайки проводов.

Чтобы вы лучше понимали, о чём я говорю, приведу свой пример того, что получилось. Реальные затраты на ТВ 42" - около 1000 рублей и 2 часа работы.


Видео не передаёт всех ощущений и эффекта целиком, но дети в первый раз сидели с открытыми ртами.

Возможные варианты реализации

Существует несколько вариантов вариантов реализации Ambilight. Зависят они от источника видеосигнала.

Самый дешёвый, простой и эффективный вариант - источником сигнала выступает ПК с Windows, Mac OS X или Linux. Сейчас очень распространены Windows-боксы на процессорах Atom, которые стоят от 70$. Все они идеально подходят для реализации Ambilight. Я уже несколько лет использую разные Windows-боксы (в тумбе под ТВ) в роли медиаплеера, написал небольшую кучку обзоров и считаю их самыми лучшими ТВ-приставками для медиаконтента. Аппаратная реализация этого варианта едина для всех перечисленных операционных систем. Именно об этом варианте я расскажу в статье . Программная часть будет относиться к Windows системе, в роли универсальной управляющей программы будет выступать AmbiBox. С Mac OS X и Linux можно использовать .

Второй вариант - источником сигнала выступает медиаприставка на базе Android, коих тоже огромное количество. Этот вариант самый проблемный. Во-первых, подсветка будет работать только в медиакомбайне Kodi (и в ответвлениях этого проекта). Во-вторых, в подавляющем большинстве случаев всё работает только с отключённым аппаратным декодированием видео, что для большинства боксов неприемлемо. Аппаратная реализация проекта тоже накладывает определённые требования. Я его затрагивать не буду, но если что-то интересует конкретное, то постараюсь ответить в комментариях.

Третий вариант - независимое от источника сигнала решение. Это самое затратное, но абсолютно универсальное решение, т.к. сигнал снимается прямо с HDMI кабеля. Для него вам понадобится достаточно мощный микрокомпьютер (типа Raspberry Pi), HDMI сплиттер (разветвитель), конвертер HDMI-RCA AV, USB 2.0 устройство захвата аналогового видео. Только с таким вариантом вы сможете гарантированно задействовать Ambilight с любой ТВ-приставкой/ресивером, Android-боксами, Apple TV, игровыми приставками (например, Xbox One, PlayStation 4) и пр. устройствами, которые имеют выход HDMI. Для варианта с поддержкой 1080p60 стоимость компонентов(без светодиодной ленты) будет около 70$, с поддержкой 2160p60 - около 100$. Это вариант очень интересный, но по нему нужно писать отдельную статью.

Аппаратная часть

Для реализации понадобится три основных компонента: управляемая светодиодная RGB лента, блок питания, микрокомпьютер Arduino.

Сначала небольшое количество объяснений.

WS2811 - это трёхканальный канальный контроллер/драйвер (микросхема) для RGB светодиодов с управлением по одному проводу (адресация к произвольному светодиоду). WS2812B - это RGB светодиод в корпусе SMD 5050, в который уже встроен контроллер WS2811.

Подходящие для проекта светодиодные ленты для простоты так и называют - WS2811 или WS2812B.

WS2812B лента - это лента, на которой последовательно размещены светодиоды WS2812B. Лента работает с напряжением 5 В. Существуют ленты с разной плотностью светодиодов. Обычно это: 144, 90, 74, 60, 30 на один метр. Бывают разные степени защиты. Чаще всего это: IP20-30 (защита от попадания твёрдых частиц), IP65 (защиты от пыли и водяных струй), IP67 (защита от пыли и защита при частичном или кратковременном погружении в воду на глубину до 1 м). Подложка чёрного и белого цвета.

Вот пример такой ленты:


WS2811 лента - это лента, на которой последовательно размещены WS2811 контроллер и какой-то RGB светодиод. Есть варианты, рассчитанные на напряжением 5 В и 12 В. Плотность и защита аналогичны предыдущему варианту.

Вот пример такой ленты:


Ещё встречаются WS2811 «ленты» с большими и мощными светодиодами, как на фотографии ниже. Они тоже подходят для реализации Ambilight для какой-нибудь огромной панели.


Какую ленту выбрать, WS2812B и WS2811?

Важный фактор - питание ленты, о чём я расскажу чуть позже.

Если у вас дома окажется подходящий по мощности блок питания (часто дома от старой или испорченной техники остаются блоки питания), то выбирайте ленту, исходя из напряжения блока питания, т.е. 5 В - WS2812B, 12 В - WS2811. В этом случае вы просто сэкономите деньги.

От себя могу дать рекомендацию. Если общее количество светодиодов в системе будет не более 120, то WS2812B. Если более 120, то WS2811 с рабочим напряжением 12 В. Почему именно так, вы поймёте, когда речь зайдёт о подключение ленты к блоку питания.

Какое уровень защиты ленты выбрать?

Для большинства подойдёт IP65, т.к. с одной стороны она покрыта «силиконом» (эпоксидной смолой), а с другой есть самоклеющаяся поверхность 3M. Эту ленту удобно монтировать на ТВ или монитор и удобно протирать от пыли.

Какую плотность светодиодов выбрать?

Для проекта подойдут ленты с плотностью от 30 до 60 светодиодов на метр (конечно, можно и 144, никто не запрещает). Чем выше плотность, тем больше будет разрешение Ambilight (количество зон) и больше максимальная общая яркость. Но стоит учитывать, чем больше светодиодов в проекте, тем сложнее будет устроена схема питания ленты, и понадобится более мощный блок питания. Максимальное количество светодиодов в проекте - 300.

Покупка ленты

Если ваш ТВ или монитор висит на стене, и все 4 стороны имеют рядом много свободного пространства, то ленту лучше всего разместить сзади по периметру на все 4 стороны для максимального эффекта. Если ваш ТВ или монитор установлен на подставку, или снизу мало свободного пространства, то ленту надо размещать сзади на 3-х сторонах (т.е. низ без ленты).

Для себя я выбрал белую ленту WS2812B IP65 с 30 светодиодами на метр. Подходящий блок питания на 5 В у меня уже был. Решал, 60 или 30 светодиодов на метр, но выбрал последнее после пересмотра видео с готовыми примерами реализации - яркость и разрешение меня устроили, да и питание легче организовать, меньше проводов. На Алиэкспресс огромное количество лотов лент WS2812B. Я заказывал 5 метров за 16$. Для моего ТВ (42", 3 стороны) нужно было только 2 метра, т.е. можно было купить за 10$, оставшиеся три метра для друга. Цены часто меняются у продавцов, предложений много, так что просто выберите на Алиэкспресс дешёвый лот с высоким рейтингом (ключевые слова для поиска - WS2812B IP65 иди WS2811 12V IP65).




Покупка блока питания для ленты

Блок питания подбирается по мощности и напряжению. Для WS2812B - напряжение 5 В. Для WS2811 - 5 или 12 В. Максимальная потребляемая мощность одного WS2812B светодиода 0,3 Вт. Для WS2811 в большинстве случаев аналогично. Т.е. мощность блока питания должна быть не ниже N * 0,3 Вт, где N - количество светодиодов в проекте.

Например, у вас ТВ 42", вы остановились на ленте WS2812B с 30 светодиодами на метр, вам нужно 3 метра ленты все 4 стороны. Вас понадобится блок питания с напряжением 5 В и максимальной мощностью от 0,3 * 30 * 3 = 27 Вт, т.е. 5 В / 6 А. В моей реализации используются только 3 стороны, всего 60 светодиодов (если быть точным, то 57) - мощность от 18 Вт, т.е. 5 В / 4 А.

У меня давно уже лежит без дела многопортовая USB-зарядка ORICO CSA-5U (8 А), оставшаяся после старого обзора. Питание портов у неё запараллельно (это критически важно), мне это ЗУ идеально подходит в роли БП, т.к. подключать ленту я буду через 2 параллельных соединения (объяснения будут чуть позже в статье).


Если бы этого ЗУ у меня не было, то я бы выбрал (есть информация, что именно в этот БП ставят внутренности на 2,5 А, так что надо детальней изучить этот вопрос у продавца, или посмотреть другие модели).

Покупка микрокомпьютера

Управлять Ambilight будет микрокомпьютер Arduino. Arduino Nano на Алиэкспресс стоит около за штуку.

Затраты на мой вариант (для ТВ 42"):

10$ - 2 метра WS2812B IP65 (30 светодиодов на метр)
4$ - блок питания 5 В / 4 А (денег на БП не тратил, привожу стоимость для ясности)
2,5$ - Arduino Nano
-----------
16,5$ или 1000 рублей

Реализация аппаратной части

Самое главное - это правильно организовать питание ленты. Лента длинная, напряжение просаживается при большом токе, особенно при 5 В. Большинство проблем, которые возникают у тех, кто делает себе Ambilight, связаны именно с питанием. Я пользуюсь правилом - нужно делать отдельную подводку питания на каждые 10 Вт потребляемой максимальной мощности при 5 В и 25 Вт потребляемой мощности при 12 В. Длина подводки питания (от блока питания до самой ленты) должна быть минимальной (без запаса), особенно при 5 В.

Общая схема подключения выглядит следующим образом (на схеме отображено подключение питания для моего варианта):


К ленте с обоих концов подведено питание - два параллельных подключения. Для примера, если бы я делал подсветку на все 4 стороны, а лента была по 60 светодиодов на метр (т.е. максимальная мощность 54 Вт), то я бы сделал такой подвод питания:


Провода подводки нужно использовать соответствующие, чем меньше калибр (AWG), тем лучше, чтобы их с запасом хватало для расчётной силы тока.

К Arduino от ленты идут два контакта. GND, который нужно подключить к соответствующему пину на Arduino. И DATA, который нужно подключить к шестому цифровому пину через резистор 300-550 Ом (лучше 470 Ом). Если резистора у вас нет, то в большинстве случаев всё будет прекрасно работать и без него, но лучше, чтобы он был. Резистор можно купить за пару копеек в любом радиомагазине. Сам микрокомпьютер Arduino можете разместить в любом удобном корпусе, многие используют для этого яйцо Киндер-сюрприза. Arduino нужно размещать как можно ближе к ленте, чтобы подводка DATA имела минимальную длину.

Припаивать провода к ленте просто. Главное правило - время контакта с паяльником должно быть минимальным, «возюкать» паяльником нельзя.

В моём случае получилось вот так:



Два чёрных качественных USB кабеля пошли на питание, а белый для подключение к компьютеру. Белые термоусадочные трубки у меня закончились, я использовал красные. Не так «красиво», но меня устраивает (всё равно это спрятано за ТВ).

Важный вопрос - как изгибать ленту под прямым углом? Если у вас лента на 60 светодиодов, то ленту нужно разрезать и соединять короткими проводами (разместив всё это в термоусадочной трубке). Можете купить специальные угловые коннекторы на три контакта для светодиодных лент (на снимке 4 контакта, просто для примера):


Если у вас лента на 30 светодиодов, то расстояние между светодиодами большое, вы легко можете сделать угол без резки. Удаляете кусочек «силиконового» покрытия, изолируйте (можно даже «скотчем») контактную площадку и сгибаете по схеме:

Я отрезал кусок ленты, чтобы практиковаться. Главное, не нужно переусердствовать - слегка согнули один раз и всё. Тюда-сюда перегибать не нужно, сильно сдавливать линию изгиба не нужно.


Вот вид сзади ТВ, все провода через отверстие уходят внутрь тумбы:

Программная часть

Это самое простое.

Подключаем микрокомпьютер Arduino по USB. Драйвер (последовательного интерфейса CH340) установится автоматически. Если этого не произошло, то в папке Arduino IDE есть папка Drivers со всем необходимым.

Запускаем Arduino IDE и открываем файл Adalight.ino.


Изменяем количество светодиодов в коде. У меня 57.


Инструменты > Плата > Arduino nano
Инструменты > Порт > Выбираете COM-порт (там будет нужный вариант)

Нажимаем кнопку «Загрузить»:


Программа проинформирует, когда загрузка будет завершена (это буквально пара секунд).

Готово. Нужно отключить Arduino от USB и подключить заново. Лента загорится последовательно красным, зелёным и синим цветом - Arduino активировался и готов к работе.

Загрузите и установите программу . В программе нажмите «Больше настроек» и укажите устройство - Adalight, COM-порт и количество светодиодов. Выберите количество кадров для захвата (до 60).


Далее, нажмите «Показать зоны захвата» > «Мастер настройки зон». Выберите конфигурацию вашей ленты.


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


Чтобы активировать профиль, достаточно два раза мышкой нажать на соответствующую иконку (профилей AmbiBox) в области уведомлений Windows. Лента сразу загорится. Отключается тоже двойным нажатием.

Вот в принципе и всё. Результат вы видели в начале статьи. Ничего сложного, дёшево и здорово. Уверен, что у вас получится лучше, так что делитесь своими поделками в комментариях.

В этом уроке мы научимся создавать свою собственную подсветку ambilight для телевизора своими руками с помощью Arduino Nano.

Имейте в виду, что Эмбилайт Ардуино будет работать только на ПК с программным обеспечением Bambilight (скачать библиотеку на GitHub).

Вам понадобятся следующие компоненты:

  • Индивидуально адресуемая светодиодная лента RGB
  • Макетная плата небольшого размера
  • Несколько кабелей
  • 12V DC адаптер питания
  • Двусторонний скотч
  • 4-5 Скрепки
  • Затяжки (стяжки) пластиковые для проводов

Шаг 2. Тестирование светодиодной ленты

Будет неприятно, если вы сначала установите ленту на ваш телевизор, но потом поймете, что один светодиод не работает и вам придется удалять ленту и начинать всё сначала.

Поэтому неплохо припаять временные провода к вашей светодиодной ленте и протестировать ее с помощью Arduino, адаптера питания и файла.ino (можно загрузить на следующих шагах). Загрузите.ino в свой Arduino. Здесь вам пока еще ничего не нужно настраивать. Вы должны увидеть несколько меняющихся цветов светодиодной ленты.

Шаг 3. Схема подключения

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

Наша светодиодная лента использует IC WS2811 для управления 3 светодиодами в отдельности.

Шаг 4. Установка ambilight на монитор/телевизор

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

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

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

Важно!

Убедитесь, что стрелки на светодиодных полосах направлены вокруг вашего монитора! Если нет вам придется начать все заново!

Как только ленты на месте, вы сможете установить на тыльную сторону монитора. Не забудьте установить её в удобное место, потому что вам нужно будет подключить USB-кабель к компьютеру позже.

Шаг 5. Пайка всей электроники

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

Теперь подключите светодиодную ленту к Arduino, используя ту же схему, что и на шаге выше. Подключите USB-кабель, установите библиотеку FastLED (скачать на GitHub) и загрузите код, указанный на следующем шаге, в ваш Arduino. А далее вам останется только подключить адаптер питания, так как мы сделали всю проводку.

Шаг 6. Скетч Arduino Ambilight

Ниже вы можете скачать или скопировать код для нашей подсветки Ардуино Эмбилайт.

#include "FastLED.h" #define NUM_LEDS 38 #define LED_DATA_PIN 3 #define NUM_BYTES (NUM_LEDS*3) // 3 colors #define BRIGHTNESS 100 #define UPDATES_PER_SECOND 100 #define TIMEOUT 3000 #define MODE_ANIMATION 0 #define MODE_AMBILIGHT 1 uint8_t mode = MODE_ANIMATION; byte MESSAGE_PREAMBLE = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; uint8_t PREAMBLE_LENGTH = 10; uint8_t current_preamble_position = 0; unsigned long last_serial_available = -1L; uint8_t led_counter = 0; uint8_t byte_counter = 0; CRGB leds; byte buffer; // Filler animation attributes CRGBPalette16 currentPalette = RainbowColors_p; TBlendType currentBlending = LINEARBLEND; uint8_t startIndex = 0; void setup() { Serial.begin(115200); FastLED.clear(true); FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); } void loop() { switch (mode) { case MODE_ANIMATION: fillLEDsFromPaletteColors(); break; case MODE_AMBILIGHT: processIncomingData(); break; } } void processIncomingData() { if (waitForPreamble(TIMEOUT)) { Serial.readBytes(buffer, NUM_BYTES); /* DEBUG for (int i = 0; i < NUM_BYTES; i++) { Serial.write((char)buffer[i]); } */ while (byte_counter < NUM_BYTES) { byte green = buffer; byte blue = buffer; byte red = buffer; leds = CRGB(red, green, blue); } FastLED.show(); byte_counter = 0; led_counter = 0; } else { mode = MODE_ANIMATION; } } bool waitForPreamble(int timeout) { last_serial_available = millis(); while (current_preamble_position < PREAMBLE_LENGTH) { if (Serial.available() > 0) { last_serial_available = millis(); if (Serial.read() == MESSAGE_PREAMBLE) { current_preamble_position++; } else { current_preamble_position = 0; } } if (millis() - last_serial_available > timeout) { return false; } } current_preamble_position = 0; return true; } void fillLEDsFromPaletteColors() { startIndex++; // speed uint8_t colorIndex = startIndex; for(int i = 0; i < NUM_LEDS; i++) { leds[i] = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); colorIndex += 3; } FastLED.delay(1000 / UPDATES_PER_SECOND); if (Serial.available() > 0) { mode = MODE_AMBILIGHT; } }

Шаг 7. Настройка программного обеспечения

Откройте файл.ino и отредактируйте следующие строки, чтобы они соответствовали вашей ситуации:

#define NUM_LEDS 38 // количество светодиодов #define BRIGHTNESS 100 // яркость

Теперь загрузите скетч в Arduino. Ранее вы должны были скачать библиотеку Bambilight, но если вы этого не сделали вы можете скачать библиотеку на GitHub сейчас.

Откройте Bambilight.exe, расположенную в:

[Местоположение, где вы сохранили папку Bambilight] \ Bambilight-master \ Bambilight-master \ Binary

Теперь настройте всё по своему усмотрению и протестируйте, используя тестовое видео, например, такое:

Как только вы будете удовлетворены результатом, вы можете минимизировать программу Bambilight.

В целом у вас должен быть такой результат работы подсветки ambilight для телевизора, которую вы сделали своими руками с помощью Arduino. Возьмите попкорн, пепси и наслаждайтесь результатом.