Если вы смотрите много фильмов на своем компьютере или в медиацентре, я уверен, что вы столкнулись с дилеммой освещения; Вы полностью выключаете все огни? Вы держите их на полную мощность? Или вы используете диммер, чтобы держать тускло-желтое свечение где-то? Ну, больше не мучайся.
Менее чем за 100 долларов вы можете установить удивительную систему освещения, которая будет отражать то, что на экране; если видео — синяя ночная сцена, свет будет синим; когда вспыхнет пламя оранжевого огня, зажгутся и ваши огни. Добро пожаловать в мир RGB освещения.
Компоненты
- Световая полоса RGB — это 5-метровая полоса светодиодов RGB, которую можно купить на eBay и отправить из Гонконга менее чем за 20 фунтов стерлингов каждая. Если вы покупаете в магазинах электроники, вы будете платить по счетчику, а стоимость катушки 5 м будет в три-четыре раза больше, поэтому покупайте онлайн. Эти типы светодиодных лент могут быть изменены на любой цвет, но только все сразу — их нельзя настроить индивидуально.
- Блок питания 12 В — требуемая мощность (амперная мощность) зависит от того, сколько светодиодных полос вы будете подключать. Каждый метр потребляет примерно 0,6 А, но это зависит от плотности ваших светодиодов, поэтому обязательно проверьте вашу конкретную светодиодную ленту. 3A будет достаточно для 5-метровой полосы, которую я подключил выше, и отдельные источники питания можно будет купить примерно за 10 фунтов стерлингов, если вы не сможете найти их в другом месте.
- 3 x МОП-транзистора N транзисторов — вы можете, вероятно, найти дешевле, но я купил пакет из 6 (типа STP16NF06FP) примерно за 10 фунтов стерлингов. Они используются для изоляции тока от Arduino — подключение полос непосредственно к Arduino поджаривает его на величину тока, который они потребляют. Вам нужен 1 МОП-транзистор на каждый цветной светодиодный канал, для красного, зеленого и синего.
- Arduino
— Я не включил стоимость этого предмета, поскольку предполагается, что он у вас уже есть, и есть множество клонов, которые можно купить, если вы не можете позволить себе приобрести официальный.
Таким образом, общая стоимость была около £ 40 не включая Arduino.
Вступление
Проект состоит из двух частей. Сначала мы создадим базовую схему Arduino, которая слушает команды с компьютера и настраивает светодиоды RGB на соответствующий цвет. Второй включает использование нового приложения под названием Processing и Java на стороне компьютера — чтобы выяснить, какие цвета в настоящее время отображаются на экране, усреднить их и вывести на последовательный порт связи, чтобы Arduino реагировал на них.
Часть 1: Схема и Ардуино
Схема, которую мы используем, очень проста, как вы можете видеть на диаграмме ниже. Светодиодная лента должна поставляться с вилкой на одном конце, которую вы можете поместить прямо в макет.

Ваша светодиодная лента может отличаться, но если вы посмотрите внимательно, вы увидите 12 В, R, G, B написано где то на рельсах. Эти полосы могут быть нарезаны в этих медных точках (каждые 3 светодиода на тех, которые у меня есть), поэтому, если вы хотите разрезать полосы по углам телевизора, вы можете сделать это безопасно — вам тоже не нужно использовать целые 5 метров так что у вас может быть что-то осталось для будущего проекта. Подключите положительный 12 В непосредственно к внешнему источнику питания.

МОП-транзисторы имеют три контакта; Ворота, истощать, а также источник. Ворота похожи на электронный переключатель, которым будет управлять Arduino. Затем определяется ток, протекающий между истоком и стоком. Сток каждого MOSFET должен быть соединен с землей Arduino и землей источника питания, в то время как источник подключен к каналам светодиодной ленты.

Когда вы закончите кругооборот, загрузите и запустите этот тестовый код (первоначально от LadyAda, измененные штырьки). Вы должны увидеть вихревую светодиодную ленту разных цветов.

Часть 2: Обработка
Скачать Обработка и запуск. Вы можете быть удивлены, обнаружив, что он выглядит почти так же, как среда разработки Arduino; это потому, что среда Arduino была основана на ней, хотя они оба выполняют разные функции. Возьмите этот код — первоначально от Silicon Republic, но он был сильно изменен мной, чтобы сделать настройки размера экрана автоматически и с лучшим отображением цвета — и найдите время, чтобы просмотреть его. В основном он использует класс Java под названием робот делать снимок экрана каждый 10мс; затем он выбирает каждый нечетный пиксель и усредняет общий цвет. Если производительность является проблемой для вас, увеличьте skipValue измените значение на 3 или 4, чтобы пропустить больше пикселей — общий эффект должен быть таким же, но он будет работать быстрее, поскольку он исследует меньше пикселей. Наконец, я добавил фильтр, который помогает насыщать цвет, увеличивая максимум и уменьшая найденные минимальные значения RGB (без этого я обнаружил, что цвета слишком белые).
Запустите приложение; в первый раз вы, вероятно, получите сообщение об ошибке при попытке доступа к неправильному последовательному порту.

Проверьте в окне отладки список текущих последовательных портов и запишите номер рядом с тем, к чему подключен ваш Arduino. В моем случае на Mac подключение USB — это порт 4. Измените номер в этой строке на правильный порт:
port = new Serial (this, Serial.list () [4], 9600); // установить скорость передачи
[/ NOEDIT]
Сохранить и перезапустить; Вы должны увидеть маленькое всплывающее окно — оно представляет средний цвет всего на экране. Запустите приложение для рисования или что-нибудь с яркими цветами, чтобы протестировать его, иначе оно, вероятно, просто покажет мутный оттенок серого. Остановите приложение, когда закончите тестирование, так как нам нужен доступ через последовательный порт для программирования Arduino.

Наконец, загрузите этот код на свой Arduino. Вместо того, чтобы посылать случайные цвета на светодиодную ленту, этот код считывает значения из последовательного порта (на который выводится обработка). Это довольно легко понять, единственной трудной частью может быть использование маркера в последовательных данных:
if (Serial.available ()> = 4) {
if (Serial.read () == 0xff) {
красный = Serial.read ();
зеленый = Serial.read ();
синий = Serial.read ();
}
}
[/ NOEDIT]
Это гарантирует, что мы читаем правильные значения байтов — приложение Processing выводит маркер в качестве «точки останова» между каждым набором значений, чтобы Arduino не выходил из синхронизации и думал, что зеленое значение для синего и т. Д.
Как только код Arduino загружен (изначально на светодиодной полосе не должно быть выхода), вы можете загрузить и запустить приложение Processing; немедленно вы должны увидеть работу окружающего света.
Вот видео-демонстрация того, как у меня получилось с каким-то случайным триповым музыкальным видео.
Как вы думаете?! Хотя это и не так впечатляет, как то, что анализирует каждую часть экрана и использует отдельные светодиодные пиксели, оно намного дешевле и ярче. Единственным недостатком этого является то, что все должно выполняться на компьютере вашего медиацентра — он не будет работать с обычным ТВ-вещанием или, например, с вашим Xbox 360. Если у вас есть какие-либо проблемы, вопросы или предложения, пожалуйста, задавайте их; или, возможно, ссылка на видео вашей завершенной настройки.