如果您在PC或媒体中心上看了很多电影,我肯定您已经面临照明困境。您是否完全关闭所有灯?您是否让它们处于爆炸状态?还是使用调光开关将暗淡的黄色光芒保持在某处?
花费不到100美元,您就可以设置一个令人惊叹的照明系统,该系统可以反映屏幕上的内容;如果视频是蓝色的夜景,则灯光将是蓝色的;当橙色火焰燃烧时,您的灯光也会闪烁。欢迎来到环境RGB照明的世界。
组件
RGB灯带–这是5米长的RGB LED灯带,可以在eBay上购买并从香港发货每个不到20英镑。如果您在电子商店中购买商品,则需要按电表付款,而500万卷的价格是该价格的三到四倍,因此请在线购买。这些类型的LED灯条可以更改为任何颜色,但一次只能更改-它们不能单独调节。
12v电源-所需的功率(安培数)取决于您安装了多少LED灯条将连接。每个仪表消耗约0.6安培的电流,但这取决于您的LED的密度,因此请务必检查您的特定LED灯条。 3A足以满足我上面链接的5m带,并且如果您无法在其他地方采购一个,则可以以10英镑左右的价格购买单独的电源。
3 x MOSFET N晶体管–您可能会发现价格便宜,但我以10英镑左右的价格买了一包6张(em》 STP16NF06FP型)。这些用于隔离来自Arduino的电流-将板条直接连接到Arduino会将它们消耗的电流炸掉。对于红色,绿色和蓝色,每个LED彩色通道需要1个MOSFET晶体管。
Arduino –我没有包括此项目的成本,因为假设您已经拥有一个,并且有
因此,如果您买不起官方的副本,则可以购买各种克隆。
因此,总成本约为 40英镑(不包括Arduino)。 p》 简介
该项目由两部分组成。首先,我们将创建一个基本的Arduino电路,该电路可侦听来自计算机的命令,并将RGB LED设置为适当的颜色。第二个步骤是在计算机端使用一个名为处理和Java的新应用程序–计算当前屏幕上的颜色,将它们取平均,然后将其输出到串行通信端口,以便Arduino做出反应。
第1部分:电路和Arduino
我们正在使用的电路非常简单,如下图所示。 LED灯条的一端应带有公插头,您可以将其直接插入面包板中。
您的LED灯带可能会有所不同,但是如果您仔细观察,会看到 12v,R,G,B 写在轨道上的某个地方。这些条实际上可以在这些铜点处进行切割(我的每个LED上有3个LED),因此,如果您想在电视的角落切割条,则可以放心地进行操作-您也无需使用整个5m ,因此您可能还有一些可用于将来的项目。将12v正电压直接连接到外部电源。
MOSFET具有三个引脚。 门,流失和源。门就像Arduino将控制的电子开关一样。然后,这确定了在源极和漏极之间流动的电流。每个MOSFET的漏极都应连接到Arduino的地,并连接到电源的地,而源极应连接到LED灯带通道。
完成电路后,下载并运行此测试代码(最初从LadyAda,引脚已修改)。您应该会看到LED灯带通过各种颜色旋转。
第2部分:处理
下载处理并运行。您可能会惊讶地发现它看起来几乎完全像Arduino开发环境一样;这是因为Arduino环境基于此环境,尽管它们都执行不同的功能。拿起这段代码-最初是Silicon Republic的,但是我做了大量修改,使屏幕尺寸设置自动且具有更好的色彩表现力-花一点时间仔细研究一下。基本上,它使用名为 Robot 的Java类来每隔 10ms 进行屏幕捕获;然后,它挑选出每个奇数像素并平均总颜色。如果对您来说性能是一个问题,请将 skipValue 变量增加到3或4以跳过更多像素-总体效果应该相同,但是因为它检查的像素更少,所以运行速度更快。最后,我添加了一个过滤器,该过滤器通过增大找到的最大RGB值和减小最小的RGB值来帮助饱和颜色(没有这个,我发现颜色太白了)。
运行该应用;第一次,您可能会在尝试访问错误的串行端口时收到错误消息。
检查调试窗口以获取当前串行列表端口,并记下Arduino插入的端口旁边的数字。在Mac上,USB连接是端口4。将此行中的数字更改为正确的端口:
port = new Serial(this, Serial.list()[4],9600); //set baud rate
保存并重新运行;您应该会看到一个小窗口-这代表屏幕上所有内容的平均颜色。启动绘画应用程序或带有浓色的东西以对其进行测试,否则它可能只会显示模糊的灰色阴影。完成测试后,请停止应用程序,因为我们需要通过串行端口访问才能对Arduino进行编程。
最后,将此代码加载到Arduino上。这段代码不是向LED灯带发送随机颜色,而是从串行端口(处理输出到该端口)读取值。这很容易理解,唯一困难的部分可能是在串行数据中使用标记:
if (Serial.available()》=4) {
if(Serial.read() == 0xff){
red = Serial.read();
green= Serial.read();
blue = Serial.read();
}
}
这可确保我们读取正确的字节值– Processing app在每组值之间输出一个标记作为“断点”,以便Arduino不会不同步,并认为绿色值代表蓝色等。
一旦Arduino代码上传(存在最初在LED灯条上应该没有输出),然后您可以加载并运行Processing应用程序;立即,您应该会看到环境光在起作用。
下面是一个视频演示,演示了如何通过随机的Trippy音乐视频为我工作。
您觉得呢?虽然它不如分析屏幕的每个部分并使用单独的LED像素的东西令人印象深刻,但它便宜得多,而且亮度更高。唯一的缺点是,所有内容都必须在媒体中心计算机上运行,例如,它不能与常规电视广播或Xbox 360一起使用。如果您有任何问题,疑问或建议,则请走开;或链接到完成设置的视频。
责任编辑:wv
-
照明系统
+关注
关注
3文章
400浏览量
32858 -
Arduino
+关注
关注
187文章
6456浏览量
186471
发布评论请先 登录
相关推荐
评论