Ambient Light помогает работать ночью. Когда вокруг темно и светит только монитор, то глаза сильно напрягаются. Лично мне приятно работать без верхнего света, и данное решение помогает мне это делать. Возникла у меня эта идея, когда я переехал на новое место с большим столом. Я вспомнил ролик AlexGyver и решил сделать себе такое же. Но в отличие от Гавера, Я делаю устройство на основе Corsair Lightning Protocol, что позволяет ему быть более универсальным в настройке эффектов и выборе платформы. Проблемы решения AlexGyver Только Windows Трудности с поиском Arduino и его ценой (на момент января 2023) Нет других эффектов Проблема решения Giant4  Только Windows или Android Нет других эффектов Есть так же решение с Aliexpress, но они тоже используют проприетарную программу под Windows. Что такое Ambient Light? Это динамическая подсветка монитора, которая как бы продолжает его. Светодиоды выводят края экрана тем самым делают иллюзию увеличения размера. ВАЖНО! Ambient Light только для компьютера. То есть мы делаем без Hdmi Splitter. Выбрал я rpi pico, потому что он был дешевле Arduino (в последствии из за этого нужно было немного помучиться, но все работает). Брал я все в разных магазинах, поэтому посоветовать ничего не могу. Нам понадобится: Паяльник Катушка припоя Адресная светодиодная лента (зависит от периметра вашего монитора, нужно посчитать рулеткой, мне хватило 4 метра, брал на 5v) Активный флюс Штука для чистки флюса (можно взять спирт или ацетон) 300-500 Ом резистор (без него светодиоды будут перегорать) Блок питания для вашей ленты (лучше брать с запасом, мне хватило 20w) Коннектор для питания (нужен чтобы поддерживал ваше напряжение) Красивая коробочка Клей пистолет, чтобы это все держалось Провода которые бы выдерживали ваше напряжение (взял 10 метров) Сама rpi pico Кабель usb для rpi pico Макетная плата для пайки Прямые руки (необязательно) Цена вышла под 6-8 тысяч рублей, так как многих элементов не было (паяльник, припой и другое для пайки) Как мы будем выводить с экрана на светодиодную ленту? Для этого мы воспользуемся Corsair Lightning Protocol, который совместим с множеством программ. Нас интересует OpenRGB (есть на Mac os, Windows, Linux). С помощью нее мы будем и задавать цвета на светодиоды. ВАЖНО! x2 Я случайно спалил целых 4 светодиода, так как запускал без резистора. Не повторяйте моих ошибок. Собираем! Есть маленькая особенность. Библиотека FastLed не имеет поддержку процессора rp2040 (rpi pico) в основной ветке. Поэтому нужно ручками скачать неофициальную библиотеку https://github.com/Zitt/FastLED/tree/rp2040 Ссылка на дополнительный список устройств: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json  Скачиваем arduino ide. Затем ставим драйвера для rpi pico и прошиваем изменяя количество светодиодов и порт ленты.  iCUE (программа для управления corsair node) рассчитана на проприетарные ленты, но туда можно добавить свои, что и нужно сделать.  В OpenRgb не хватало настроек для достижение эффекта, которого я хотел. Мне также не понравились режимы работы Ambient Light: только среднее значение всего экрана или вывод экрана полностью без сглаживания, из за чего лента резко меняет цвета и глазам становится больно. А еще Ambient Light фотографирует через Qt в 60 кадров в секунду. Из за этого fps экрана проседает в два раза!! Это не дело, и я решил изменить код, который должен был бы решать эти две проблемы.  У OpenRgb также есть api, но он не подходит для потоковой передачи видео. Он очень медленно меняет и имеет большую задержку. Для адекватной работы эффекта пришлось изменить часть кода плагина Effects OpenRgb и добавить новый функционал. За два дня я: Улучшил работу ScreenRecorder Сделал дополнительное меню с глобальными настройками Добавил параметр smoothness который отвечает за сглаживание Сделал функцию SmoothMatrix для работы для матрицы Изначально в коде Screen Recorder не было instance. Так, при каждом новом эффекте с использованием записи экрана нужно было создавать еще один, тем самым увеличивая нагрузку на компьютер. Теперь все эффекты могут использовать один экземпляр ScreenRecorder Для начало нужно сделать в qtcreator эти самые настройки Так она выглядит в редакторе За основу я взял уже существующее окно About. Скопировал его и написал свою логику Код инициализации виджета Код, который при изменении значения ползунка меняет значение скорости захвата кадров  Основной эффект в Ambient я считаю Screen Copy. Поэтому объяснять принцип работы SmoothMatrix я буду на нем. Тут я добавил только использование функции SmoothMatrix Сама функция  Весь код выложен в открытый доступ. Чтобы установить этот плагин, нужно: Установить последнюю openrgb версию из pipeline  Скачать плагин из моего репозитория (UPDATE: патч был добавлен в master. Теперь его можно скачать из pipeline плагина) Импортировать расширение в разделе settings Будет ругаться Windows, но только потому, что у софта нет подписи из-за того, что мы используем версию pipeline  Для нормальной работы нужно еще скачать плагин для создания матрицы, чтобы экран корректно отображался.  Я сделал себе подсветку, именно которую я хотел. Мне очень понравилось делать руками и разбираться как в сишном коде, так и в пайке. Для меня это был отличный опыт на новогодние праздники. Я испытывал множество эмоций от этого процесса, когда что то шло не так, когда что то не получалось, но в итоге все заработало! Эта реализация работает на любой платформе (Windows, Linux, Mac os). Кроме эффекта Ambient Light, можно настроить и другие в плагине Effects. Думаю еще рассказать про перерождение моего Openwrt роутера, который я угробил. Для починки мне пришлось подключаться по UART с помощью 🐬 Flipper Zero и модифицировать прошивку Openwrt.  Btw i use arch