这篇文章来源于DevicePlus.com英语网站的翻译稿。
使用LED是一种为家庭增添色彩的快捷简单的方式,可以将LED灯带应用于厨房储物柜、客厅角落或者任何可能需要额外照明的地方。如果您想要以低廉的价格制备自己的照明设备,并且对照明设备的颜色和图案进行更多控制操作,那么可以使用Arduino来实现。
LED灯带工作原理
LED灯带有多种形式,但是一般来说,大多数型号是一种放置有周期性LED模块的带状板,并且某些模块之间还有虚线部分,如果需要,您可以在这些虚线的地方对灯带进行切割。这些位置通常会标有金属触点,因此您可以添加额外的电路以将多个灯带连接在一起。在端口您会看到有一些可以插入Arduino的电线。
电线的数量可能会有所不同,但在本指南中,我们将会使用包含控制自身电路的灯带,让您可以通过使用一根电线对每个单独的LED进行寻址。还有一根额外的电源线和地线,这意味着整个项目只需要三根电线即可。这种类型的灯带通常来说都更加方便,所以我们将会使用该类型灯带,具体使用的型号为基于WS2812B的LED灯带。
LED灯带可以使用外部库进行控制,例如FastLED 或者Adafruit的Neopixel 库。在本指南中,我们将使用FastLED库,这个库包含了用于控制各种LED灯带控制器的函数,从而使设置颜色或动态模式变得更容易。
请下载此链接中的库,并将其添加到您的草图中。然后,在您的Arduino IDE中,进入Sketch > Include library > Add .ZIP library,并选择FastLED库。在File(文件)菜单的Example(示例)部分还提供了一系列的示例草图,您可以在探索时查看这些示例。不过现在,我们从一个简单的工作作为开始—将每个LED设置为相同的颜色。
所需部件
您可以根据需要购买任意数量的LED灯带布置到您的房间,但需要注意的一点是,每个LED都会消耗电力。如果使用少量的LED,您可以使用Arduino的5V电源,但是如果是大量LED,您需要使用外部电源。我们仅使用Arduino来完成此项目,但是如果您想要扩展项目的话,需要注意电源的选择。基于以上内容,您将需要以下部件:
一个LED灯带 | |
电源(用于大灯带) | |
Arduino Uno | |
Arduino IDE | |
USB数据线 | |
电线 |
这个项目的接线相对简单,因为我们选择了可寻址的LED灯带。但在接线前,我们先了解一下将要使用的代码。
代码
由于我们使用的是FastLED库,所以示例所用的代码非常简单。我们将指示Arduino按照顺序打开每个LED,并将其设置为一种颜色。以下为完整代码,您可以将其上传到Arduino Uno。
#include <FastLED.h>
#define numberOfLEDs 100
#define controlPin 5
CRGB leds[numberOfLEDs];
void setup() {
FastLED.addLeds<WS2812B, controlPin, GRB>(leds, numberOfLEDs);}
void loop() {
for (int thisLED = 0; thisLED < numberOfLEDs; thisLED++) {
leds[thisLED].r = 50;
leds[thisLED].b = 0;
leds[thisLED].g = 0;
FastLED.show();
}
}
现在,我们来看一下这些代码的内容。
#include <FastLED.h>
#define numberOfLEDs 100
#define controlPin 5
CRGB leds[numberOfLEDs];
第一行用于导入FastLED库,使您可以在草图中使用其中的函数。接下来的两行用于定义一对常量,这两个常量分别与灯带上您要控制的LED数量(如果您愿意的话也可以只控制灯带上的一部分LED)以及将用于控制LED的Arduino板上的引脚数量相对应。最后,CRGB一行将会创建一个具有上面指定的LED数量的阵列。
在本示例中,我们使用10个LED,这个数量很小,只用Arduino就可以提供足够的电源,所以我们就可以只用它来进行演示了。
void setup() {
FastLED.addLeds<WS2812B, controlPin, GRB>(leds, numberOfLEDs);
}
这一行通过使用与LED灯带对应的控制器芯片组来对LED进行设置。该行内容会因您所使用的灯带型号而异,您可能需要查看FastLED文档来找到适用的命令。FastLED的Blink草图中(不同于Arduino IDE的内置Blink草图)包含了对应于各种芯片组的代码。如果您使用的是WS2812B,那么使用上文中的代码即可。
void loop() {
for (int thisLED = 0; thisLED < numberOfLEDs; thisLED++) {
leds[thisLED].r = 50;
leds[thisLED].b = 0;
leds[thisLED].g = 0;
FastLED.show();
}
}
在本部分中,for()循环将遍历阵列中的每个LED并将其一一打开。以leds[]开头的三行通过将红色、绿色和蓝色值(每个值最高255)进行组合来设置LED颜色。您可以尝试调整这些值来更改LED的颜色。如果把三个值都设置为0,LED将会完全熄灭。
接线
因为我们选择了一个很简单的LED灯带,所以接线工作也变得很简单。您只需要连接三根电线即可:
● 将LED灯带上的5V电线连接到Arduino上的5V(仅有几个LED)或外部电源(有许多LED)。
● 将LED灯带上的GND连接到Arduino上的GND。
● 将中间的电线(有时标有DIN)连接到Arduino上的5V。
完成三根电线的连接后,为您的Arduino(和您的LED灯带,如果您使用了单独的电源的话)供电,LED灯将会被打开。尝试调整代码来更改颜色或编写更复杂的动态模式。FastLED库还附带一些预制草图,您可以参考它们对更多内容进行探索。