Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создание потрясающей системы Ambilight для монитора на Arduino

Компоненты и материалы

Программное обеспечение

О проекте

Ambilight — подсветка за монитором, повторяющая цвета краёв экрана в реальном времени. Этот проект реализует дешёвый PC-решение: программа Ambibox на Windows захватывает экран, вычисляет средние цвета по зонам и посылает их по USB на Arduino, который управляет лентой WS2812B через библиотеку FastLED.

Ограничения: работает только на Windows (Ambibox). В полноэкранных играх захват может не работать — используйте безрамочный оконный режим. На Linux/Raspberry Pi есть альтернативы (Hyperion), но они сложнее/дороже.

Сборка

Шаг 1: Подготовка LED-ленты

  1. Измерьте периметр задней стороны монитора (с отступом ~1 см от краёв).
  2. Отрежьте ленту на 4 отрезка по размеру сторон. Режьте только в отмеченных местах (между контактами).
  3. Спаяйте отрезки в одну цепь: +5V к +5V, DIN к DOUT следующего, GND к GND. Следите за стрелками направления данных!

Шаг 2: Подключение Arduino

Шаг 3: Прошивка Arduino (протокол Adalight)

#include <FastLED.h>
#define NUM_LEDS 60      // ваше число LED
#define DATA_PIN 4       // пин DIN
#define serialRate 115200

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

void setup() {
  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  // тестовая вспышка
  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");  // Magic Word
}

void loop() {
  // ожидание Magic Word
  for (i = 0; i < sizeof(prefix); ++i) {
    waitLoop:
    while (!Serial.available());
    if (prefix[i] == Serial.read()) continue;
    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 (chk != (hi ^ lo ^ 0x55)) { i = 0; goto waitLoop; }

  memset(leds, 0, NUM_LEDS * sizeof(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] = CRGB(r, g, b);
  }
  FastLED.show();
}

Шаг 4: Настройка Ambibox

  1. Установите Ambibox, выберите протокол Adalight.
  2. Укажите COM-порт Arduino, число LED (60), пин (4).
  3. Настройте зоны захвата по краям экрана.
  4. Запустите калибровку цветов (подстройте под цвет стены).
  5. Включите тестовое RGB-видео — проверьте синхронизацию.

Дополнительные возможности

Советы

Производственный процесс

  1. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  2. Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
  3. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  4. Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
  5. Сборка компактного FM-радио на Arduino Nano и RDA5807M
  6. DIY монитор уровня воды в коллекторе на Arduino Nano, MPXV5010DP и OLED
  7. Самодельный RC Porsche на Arduino: Пошаговое руководство
  8. Генерация музыкальных тонов на Arduino: полный спектр 88 клавиш пианино
  9. Продвинутая система домашнего мониторинга на Arduino Mega с IoT-датчиками
  10. Цифровой компас в реальном времени на Arduino и Processing