初代流光溢彩由飞利浦于2002年提供专利,2004提供量产电视,若干年后参加工作,LED洗墙灯
2021.6.18买了飞利浦的B97回音壁后,又动了流光溢彩电视的想法。果然JD上有HUE的套装,都进入了购物车,等待降价或双11入手

方案对比
序号 | 方案 | ¥ | 优缺点 |
0 | 屏幕摄像头 | 几钱都唔得 | 肯定不准,另有延迟,否决 |
1 | 飞利浦HUE TV | 有45°辐射角 昂贵,可能影响HDMI其他的 只有 HDMI 端口2和4是全速带宽 不适用于内置智能电视应用 长度严格限制 | |
2 | 飞利浦HUE 笔记本 | 有45°辐射角 需要装录屏程序软件采集 | |
3 | 仿飞利浦(Lightpack本尊) | ||
4 | YEELIGHT? | ||
5 | 小米追光 | ||
6 | 思码光 | 带磨砂透光板,且有45°辐射角 | |
7 | 自制 |
历史
据传说,氛围灯最早是一圈白光(Bias Light)用于背景衬托屏幕,伴随电视诞生(相当于周边衍生品),主要目的在于黑暗中降低整体对比度,从而保护视力(不要在黑暗中看手机)。

2002年,飞利浦研发并申请专利(集成到电视机上)
2004年量产Ambilight——42/50PF9966/等离子/1366*768/HDMI,当时使用的发光体是CCFL冷阴极荧光灯
2005年,给电视机顶部添上炫彩
2006年,全面改用LED。2007年期间推出过一款外圈边框都能变色的Aurea,但后来随着技术提升内框越做越窄,外框这多此一举的炫技也就不复存在了。最终,以2006年LED为蓝本的方案流传至今。
与此同时,0506年就有神秘大神开始自研开源版本,SMD尚未完全成熟且昂贵,所以采用了最传统的LED单色灯炮作为光源。

采购清单
序号 | 设备 | 参数 |
1 | WS2812B | 60 dots/m,60mA、0.3W/dot,5m一卷 |
2 | Aduino Nano | Amtel 328P |
3 | 明纬40W电源 | 5V8A,电流有点高噢 纵观所有教程,都没有用这种专业开关电源的,拜LED灯、屏工程经验所赐 |
4 | 辅材 | 导线、胶布、轧带 |
5 | 工具 | 斜口剪刀、烙铁 |
问题
2812用的好像是5050的灯珠,亮度如何(有空研究他的调光方式,如PWMM脉冲暂停比),角度如何,与几个竞品的对比如何?
这种平射的角度确实需要与墙壁保持一定距离,以便Wash Wall
相邻之间的光染色? (某论坛说不会有)
电源有杂音
实现——硬件连接
0、思考电源及开发板的位置:NUC的经验说应该吊于显示器VESA卡扣的中间偏下,考虑到低压大电流压降问题,电源线适宜从中间往两边分(网络上独家),电源线越短越好,以上两点,都指出电源及开发板应定于显示器屏幕中心偏下。
1、贴灯带:由显示器下边沿的中点开始,沿边贴一圈。相对于很多博主“内敛”的贴法,我认为沿边贴有两个好处:A. 容纳更多灯珠,过渡效果更自然细腻;B. 氛围的范围更亮、更广、更远。(往中间缩小周长=缩小范围,使眼睛更聚焦于显示器屏内内容,但实际眼睛距离显示器较近,视野自身就有所局限)。在边角时,我选择了最简单粗暴也是灯珠/像素损失最小的“灯间带直角∟弯折法”,另有A. 灯间带45°角x2弯折法 及 B. 现成直角连接件 两法可选。(如灯带故障,则换为B. 法较好,一次只换一个边的灯带即可)。贴完后,刚好上下两边各49颗,左右两边各22颗,共142颗灯珠均匀对称布置。
2、连接电源线:
2.1电源线由下沿灯带中间往两边分,每边一条,其中一条为自带
2.2另一条需要从金属连接点上焊接杜邦引线接至电源的直流输出口。灯带上沿的电源连接点别忘了给挖开断掉(工程经验)。
3、连接信号线:灯带原有的三色连接线(分别为红色电源+5V、绿色数据Din、白色地线GND)
3.0有说这里加一个330Ω?470 Ω 的电阻,暂未明所以
3.1插头处去掉红色电源线(因为灯带另由专用5V电源供电)
3.2插入Arduino开发板的D2及挨着的GND针脚
3.3最后把输入电源线及开发板的USB线(包含供电及数据)插入相应插座,齐活!

增加照片,并且把步骤按顺序分类
实现——代码、软件
1、安装USB转串口芯片驱动,WCH-CH341SER(Ft232RL改为CH340G),没问题
2、安装Arduino IDE开发程序,选择好COM口、设备Arduino Nano、CPU啥的,等待下载N久的基础包文件
3、下载FastLED库,用于驱动灯带
4、粘贴以下代码,这一步有两个小问题卡了很久,在编译器提示的情况下得以解决:
4.1 提示neopixel未定义,我不知道基础包里特别是FastLED.h里有无相关定义,百度未果,后面粘贴了另一段代码提示正常,经对比发现,应 用大写模式NEOPIXEL
4.2 缺少一个“}”号,凭借代码经验,在最后一行加入此符号解决
5、验证成功→上传,成功后灯带依次闪烁红绿蓝,我想这下混出成千上万种颜色应该不成问题了
6、在Prismatik中设置灯珠的区域,包括起点、顺序、定位等信息,总之以平均分律为纲领(有空可研究Profile场景文件.ini)
7、一次成形亮灯仪式thumbs up!

/*
* Arduino interface for the use of WS2812 strip LEDs
* Uses Adalight protocol and is compatible with Boblight, Prismatik etc...
* "Magic Word" for synchronisation is 'Ada' followed by LED High, Low and Checksum
* @author: Wifsimster <wifsimster@gmail.com>
* @library: FastLED v3.001
* @date: 11/22/2015
*/
#include "FastLED.h"
#define NUM_LEDS 142 //(灯带一共有多少个LED?)
#define DATA_PIN 2 //(绿色的数据线接在arduino几号端口?)
// 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() {
// Use NEOPIXEL to keep true colors
FastLED.addLeds<NEOPIXEL, DATA_PIN>(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);
// Send "Magic Word" string to host
Serial.print("Ada\n");
}
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();
}

同类软件进化路线:AmbiBOX<<<Prismatik<<<Hyperion
远期规划
1 | 直角用成品对插 |
2 | 使用Hyperion?USB串行通信?USB转网口? |
3 | 电视机用PHILIPS,花小钱省大心 |
4 | (新房)PHILIPS成套灯带 或 输出接口,现在已有普通灯带接入桥接器的方案 |
5 | 等厂家更新统一技术 |
6 | 离线运行的彩虹跑马灯(已KO,参见前传) |
7 | 接入触电开关切换程序及开关 |
8 | Chip on Board灯带 |
7、采用WIFI控制板,自己开发APK程序控制,结合HomeAssistant。

