1 (изменено: maggot8950, 10-04-2017 22:54:09)

Тема: Динамическая подсветка монитора на Arduino.

http://s020.radikal.ru/i723/1704/f7/50d00a434046.jpg

Если вы любите смотреть фильмы на компьютере в темноте или играть в игры, то можно расширить возможности вашего монитора. Динамическая подсветка визуально расширяет границы экрана и благодаря ей ваши глаза будут меньше уставать.
Этот проект очень прост и так как я сам новичок в общении с Arduino, могу посоветовать начинать создавать что-то для дома именно с этого проекта. Итак, нам понадобится:

  • любая Ардуинка (Уно, Нано не важно),

  • от 1-го до 2-х метров светодиодной ленты WS2812B, о которой вы можете почитать здесь, можно заказать на Aliexpress. Советую брать 60 светодиодов на метр для более качественно эффекта, но и 30 сойдет

  • двусторонняя липкая лента или какой-нибудь клей,

  • Источник питания 5V 2A (зарядник от планшета, например)

  • резистор на 220 Ом

  • паяльные инструменты

  • необходимое ПО для компьютера, а именно: Arduino IDE , AmbiBox, библиотека для Arduino IDE - FastLed

Приступим. На светодиодной ленте есть три контакта - Плюс(+), Земля(G, GND) и вход (IN), а так же есть стрелочки, указывающее направление сигнала по ленте. Наша задача отрезать 4 отрезка светодиодной ленты таким образом. чтобы верхняя полоска была равна нижней, правая - левой. Отмерять будем прикладывая ленту с задней части нашего монитора. В общем нужно сделать так, как на картинке ниже.http://s020.radikal.ru/i704/1704/77/3e09b85d071c.jpg
Важно, чтоб количество светодиодов сверху и снизу было одинаковым, то же касается правой и левой стороны. Так же нужно учесть направление стрелок на самой ленте и припаять по порядку, как на картинке.

Теперь нам нужно подключить ленту к Ардуино согласно схеме:

http://s019.radikal.ru/i613/1704/ee/aa07755e8aaet.jpg

Минус от питания идет к контакту G на ленте и контакту GND на самой Arduino, Плюс напрямую к контакту + на ленте, а управляющий провод через резистор от ленты к нужному Пину. Главное запомнить Пин. Собственно, подключение на этом закончили.

Открываем установленную Arduino IDE и устанавливаем библиотеку FastLed ( В верхнем меню выбрать Скетч - Подключить библиотеку - Добавить ZIP библиотеку и выбрать скачанный архив с библиотекой)
Теперь с помощью Arduino IDE заливаем в Ардуинку скетч:

//////////

//

// Arduino interface for the use of ws2812 operated LEDs

// Uses Adalight protocol and is compatible with Boblight, Prismatik etc

// "Magic Word" for synchronisation is 'Ada' followed by LED High, Low and Checksum

//

#include <FastLED.h>

///// User definitions /////

// Define the number of LEDs

#define NUM_LEDS 44 //количество светодиодов

// Define SPI Pin

#define PIN 8 //порт, к которому присоединен управляющий провод

// Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)

#define serialRate 115200

// Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data

uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;

// initialise LED-array

CRGB leds[NUM_LEDS];

void setup()

{

FastLED.addLeds<WS2812, PIN, GRB>(leds, NUM_LEDS);

// initial RGB flash

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"); // Send "Magic Word" string to host

}

void loop() {

// wait for first byte of Magic Word

for(i = 0; i < sizeof prefix; ++i) {

waitLoop: while (!Serial.available()) ;;

// Check next byte in Magic Word

if(prefix[i] == Serial.read()) continue;

// otherwise, start over

i = 0;

goto waitLoop;

}

// Hi, Lo, Checksum

while (!Serial.available()) ;;

hi=Serial.read();

while (!Serial.available()) ;;

lo=Serial.read();

while (!Serial.available()) ;;

chk=Serial.read();

// if checksum does not match go back to wait

if (chk != (hi ^ lo ^ 0x55))

{

i=0;

goto waitLoop;

}

memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));

// read the transmission data and set LED values

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;

}

// shows new values

FastLED.show();

}

Перед заливкой нужно указать количество светодиодов, которое у вас получилось в сумме и ПИН, к которому вы припаяли управляющий провод. У меня получилось 44 светодиода и использовался 8-й пин.
Если у вас лента и ардуинка уже подключена к питанию, то после заливки скетча лента должна моргнуть тремя цветами, если этого не произошло, то отсоедините USB кабель и вставьте снова.
Теперь нам нужно установить программу AmbiBox. При установке программа спросит, какое устройство будет использоваться, нам нужно указать Adalight
В ней нам нужно перейти во вкладку "Интеллектуальная подсветка монитора"


http://s020.radikal.ru/i709/1704/49/e471aadf8278.jpg


Затем нажать "Больше настроек", теперь отображаются все функции.


http://s010.radikal.ru/i314/1704/bb/ea84cd0013f4.jpg


Нам нужно указать порт, к которому подключена Arduino ( цифра 1 на картинке)
Нужно указать количество светодиодов, которое у нас получилось (цифра 2 на картинке)
Выбрать метод захвата экрана. Тут на ваше усмотрение, поэксперементируйте и выберите подходящее. У меня метод Windows 8 ( цифра 3 на картинке)
Так же можно нажать "Показать зоны захвата" (цифра 4) и настроить их так, как наклеена лента. Ну. например, если у вас углы остались без светодиодов, то зоны можно сместить.
Не забудьте во вкладке "настройки программы" включить автозапуск с Windows.

На этом все. Все уже должно работать.

2

Re: Динамическая подсветка монитора на Arduino.

В данный момент наблюдаются проблемы с хостингом. Опубликуем когда все устаканиться. Пока можете внести последние правки.
Опубликовано будет от имени maggot8950. Напишите если хотите опубликовать под другим ником.

3

Re: Динамическая подсветка монитора на Arduino.

genaonyx пишет:

В данный момент наблюдаются проблемы с хостингом. Опубликуем когда все устаканиться. Пока можете внести последние правки.
Опубликовано будет от имени maggot8950. Напишите если хотите опубликовать под другим ником.

Можно под ником Бегемот. )
По поводу правок, вроде все отредактировал, как хотел. Думаю, если что не понятно будет, в комменты напишут.

4

Re: Динамическая подсветка монитора на Arduino.

Статья дооформлена и опубликована.

5

Re: Динамическая подсветка монитора на Arduino.

genaonyx пишет:

Статья дооформлена и опубликована.

Отлично! Заказал набор с Али. В дальнейшем еще что-нибудь напишу в процессе обучения.