最近自己弄了一套显示器背景光,在此稍微记录一下。
因机缘巧合想起 SVP 里 SVPLight 这个小功能,四五年前买一套开箱即用的需要花费 200 至 600 软不等,想看看有没有新的开源破车被弄出来了。结果这一查发现开源破车已经出来好久了,而且需要购买的物料成本只要不到 20 软,于是立即下单开始了本次的折腾。
物料准备
在开始之前,首先说明需要购买的物料:
- WS2812B 灯条:某宝搜索「WS2812B」购买适合自己显示器长度的,咱选择了一米 30 个灯的,一共购买了两米。不建议买太密的灯条(一米 120 灯的),总数也不要过多。标准 USB 口供电是 1A,每个灯珠理论最大电流为 0.06A,默认设置下电流为 0.01A。此外目前软件能控制灯珠的上限大概是 400 个。
- Arduino 开发板:最便宜的可以选择 Arduino Nano,本次使用的是 Arduino Mega2560。也可以用其他兼容 Arduino 代码的开发板,要注意的是在兼容板上编译出的二进制文件可能会超过 256KB,建议使用有足够大 ROM 的板子。
- 跳线若干条:用于连接灯条与开发板,咱用公对公的杜邦线使用胶带固定。
- USB 线一条:用于灯条供电。
软件准备
下载并安装的:
- Arduino IDE
- 安装在电脑上的控制软件 Prismatik
需要烧写到 Arduino 里的代码:
开源破车组装
详细的图文组装过程参见 这一篇文章,以下对组装过程补充:
- 文中提到但并未提供的 LED.txt 文件就是咱提供的代码 Lightpack.ino,可以直接使用 Arduino IDE 打开,编译写入的方式完全相同
- 关于灯条与 Arduino 的连接:母口绿线连接 Arduino 的 GPIO 上,任意白线链接 Arduino 地线 GND,关于接口的说明详见下图。
- USB 口与电源的连接:按照标准,2.0 口的 USB 线剥开后有红、黑、绿、白四根线,其中红线为电源正极,黑线为电源负极。将灯条的红线于 USB 线的红线连接,灯条黑线与 USB 黑线连接。USB 线剩余的绿白两线不要接在一起,各自用胶带包好隔开。
- 总体连接:电脑 <-> Arduino 开发板(已写入程序) <-> 灯条 <-> USB 线 <-> USB 充电头->->->->
调试破车
组装最后一步,应该可以看到连接 USB 充电头的同时灯条会跑马三色然后熄灭,这证明链路已经 OK 了。这时打开装好的 Prismatik 软件,然后开始调试。以下对设置界面进行说明。
在安装指引界面可以看到这个设置界面,首先大略设置成自己安装灯条的顺序。
配置向导设置的同时,屏幕周围一圈会显示出每一颗灯珠的屏幕取色范围。
最后做细致调整,可以鼠标点击屏幕四周的小方块,对应的灯珠会同时点亮。以此调整方块的位置和大小。
调整色温的步骤此处跳过,请自行根据喜好调整。
进入设置主界面可以看到 Over-brightening 选项,这个选项可以调整灯珠的最大供给电流。可以肉眼观察增加数值是否继续变亮来确认是否已达到适配器的供给上限,也可以使用 USB 电流计直接观察电流变化,通常将设置维持在供电峰值的 80%~90% 最为合适。调整完成后灯条可充分利用适配器的输出功率,后续的亮度调整不再需要调整这一选项。
接着调整灯条的最低亮度,界面上是 Scene luminosity threshold 选项。如果室内较明亮可以设置为 0,如果室内昏暗且无其他灯源,请增加数值保护眼睛。
最后,选择一张合适的壁纸,调整亮度。至此,大功告成。
最后效果如下:
感谢以上全部开源软件背后贡献者的无偿付出。