описание проекта:
Подсветка и захват экрана монитора по типу Philips Ambilight своими руками используя адресную светодиодную ленту WS2812 и arduino Nano 3,0 Atmega328
Управление и настройка производятся при помощи бесплатных программ AmbiBox или Prismatik.
Загрузка скетча через программу arduino
компоненты: | |||
---|---|---|---|
№ | наименование: | цена: | где купить: |
1 | Адресная светодиодная лента 60 светодиодов на 1м.п ip30 за Black PCB + 2m 60leds IP30 | ~ 566 | заказать |
2 | Контроллер Arduino Nano 3,0 Atmega328 - 1 единицу | ~ 148 | заказать |
3 | Блок питания на 5 вольт 3 ампера | ~ 270 | заказать |
4 | Резистор на 200 - 500 ОМ любой мощности | ~ 2 | заказать |
Фоновая подсветка монитора и захват экрана
Привет. Сегодня отвлекусь от темы сборки электровелосипедов. Так как много времени провожу за монитором компьютера и зимой так мало света для того что бы не сильно вредить зрению включаю лампу за монитором так глазам легче, и они меньше устают. Но недавно увидел проект фоновой подсветки монитора и решил реализовать его. Большую часть информации беру с блога Алекса гивера
Для реализации фоновой подсветки потребуется
- Адресная светодиодная лента на 5 вольт – я взял под маркировкой ws2812 – 60 светодиодов на 1 метр, можно взять и 30, но это будет менее динамично, наверное, на мой монитор 23,8 дюйма у меня ушло чуть меньше 2х метров ленты.
- Плата ардуино нано 3.0 можно заказать со шнуром mini usb если у вас есть, такой-то можно и без него, разница по стоимости что-то около 20 рублей.
- Так же потребуется резистор на 250 – 500 ом любой мощности.
- Блок питания на 5 вольт от 2 ампер – желательно на 3-4 ампера от него будет запитоваться лента, контроллер будет работать от usb компьютера.
- Ещё нужны будут провода, немного термоусадки, паяльник (ну куда же без него).
Нарезка светодиодной ленты по размеру монитора
Предварительно нужно нарезать светодиодную ленту по размерам монитора в моём случае монитор 23,8 дюйма 54 на 32,5 см на верхнюю и нижнюю часть у меня вместилось по 32 светодиода, а на боковые стороны по 19 светодиодов. На ленте указано место разреза в виде ножниц и белой полосы.
На ленте есть стрелки, которые показывают направление соединить их нужно последовательно учитывая направление стрелок против часовой стрелки, если развернуть монитор подключать питание и сигнальный провод к ленте следует от левого нижнего угла (смотрите фото ниже).
Лента соединяется при помощи трёх проводов +5v – D0 - GND
Подключение компонентов по схеме
Компоненты подключаются согласно схеме, длину проводов выбирайте с учётом расстояния до ПК и розетки.
От блока питания на 5 вольт минусовой провод к ленте с обозначением GND к нему же подключаем контроллер ардуино к контакту GND плюсовой провод от блока питания подключаем к ленте с обозначением +5v а сигнальный провод от ленты с контактом D0 подключаем к Arduino через резистор 250-500ом к контакту D13
программы и загрузка скетча на контроллер
На этом этапе нужно скачать и установитьбесплатную программу ARDUINO выберите программу для вашей операционной системы.
Установите загруженную программу на ваш ПК следуя инструкции установщика.
Загрузите и установите драйвера для китайского USB преобразователя CH341 для Windows
Скачайте библиотеку и скетч для установки на контроллер, файлы библиотеки (папку FastLED-master) следует распоковать или скопировать в папку libraries программы ARDUINO – у меня такой путь к папке - C:\Program Files (x86)\Arduino\libraries
скачивание с яндекс диска - безопасно!:
программа ARDUINO с офицального сайтаДрайвер CH341 Windows
скачать библиотеку с яндекс диска
скачать скетч для загрузки в контроллер ардуино
скачать программу AmbiBox
скетч фоновой подсветки экрана:
//----------------------НАСТРОЙКИ-----------------------
#define NUM_LEDS 102 // число светодиодов в ленте
#define DI_PIN 13 // пин, к которому подключена лента
#define start_flashes 0 // проверка цветов при запуске (1 - включить, 0 - выключить)
#define auto_bright 1 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить)
#define max_bright 255 // максимальная яркость (0 - 255)
#define min_bright 50 // минимальная яркость (0 - 255)
#define bright_constant 500 // константа усиления от внешнего света (0 - 1023)
// чем МЕНЬШЕ константа, тем "резче" будет прибавляться яркость
#define coef 0.9 // коэффициент фильтра (0.0 - 1.0), чем больше - тем медленнее меняется яркость
//----------------------НАСТРОЙКИ-----------------------
int new_bright, new_bright_f;
unsigned long bright_timer;
#define serialRate 115200 // скорость связи с ПК
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i; // кодовое слово Ada для связи
#include
CRGB leds[NUM_LEDS]; // создаём ленту
void setup()
{
FastLED.addLeds(leds, NUM_LEDS); // инициализация светодиодов
// вспышки красным синим и зелёным при запуске (можно отключить)
if (start_flashes) {
LEDS.showColor(CRGB(255, 0, 0));
delay(500);
LEDS.showColor(CRGB(0, 255, 0));
delay(500);
LEDS.showColor(CRGB(0, 0, 255));
delay(500);
LEDS.showColor(CRGB(0, 0, 0));
}
Serial.begin(serialRate);
Serial.print("Ada\n"); // Связаться с компом
}
void loop() {
if (auto_bright) { // если включена адаптивная яркость
if (millis() - bright_timer > 100) { // каждые 100 мс
bright_timer = millis(); // сброить таймер
new_bright = map(analogRead(6), 0, bright_constant, min_bright, max_bright); // считать показания с фоторезистора, перевести диапазон
new_bright = constrain(new_bright, min_bright, max_bright);
new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
LEDS.setBrightness(new_bright_f); // установить новую яркость
}
}
for (i = 0; i < sizeof prefix; ++i) {
waitLoop: while (!Serial.available()) ;;
if (prefix[i] == Serial.read()) continue;
i = 0;
goto waitLoop;
}
while (!Serial.available()) ;;
hi = Serial.read();
while (!Serial.available()) ;;
lo = Serial.read();
while (!Serial.available()) ;;
chk = Serial.read();
if (chk != (hi ^ lo ^ 0x55))
{
i = 0;
goto waitLoop;
}
memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
for (uint8_t i = 0; i < NUM_LEDS; i++) {
byte r, g, b;
// читаем данные для каждого цвета
while (!Serial.available());
r = Serial.read();
while (!Serial.available());
g = Serial.read();
while (!Serial.available());
b = Serial.read();
leds[i].r = r;
leds[i].g = g;
leds[i].b = b;
}
FastLED.show(); // записываем цвета в ленту
}
Настройка программы AmbiBox и включение подсветки
Компоненты подключаются согласно схеме, длину проводов выбирайте с учётом расстояния до ПК и розетки.
От блока питания на 5 вольт минусовой провод к ленте с обозначением GND к нему же подключаем контроллер ардуино к контакту GND плюсовой провод от блока питания подключаем к ленте с обозначением +5v а сигнальный провод от ленты с контактом D0 подключаем к Arduino через резистор 250-500ом к контакту D13
Подсветка и захват экрана монитора по типу Philips Ambilight за 1000 рублей своими руками
Мои покупки - Подсветка монитора на arduino:
Адресная светодиодная лента 60 светодиодов на 1м.п ip30 за Black PCB + 2m 60leds IP30
заказать - http://ali.pub/5hg3ok
Контроллер Arduino Nano 3,0 Atmega328 - 1 единицу
заказать - http://ali.pub/5hg3zg