如何在家居照明系统中添加RGB LED灯带

这篇文章来源于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库还附带一些预制草图,您可以参考它们对更多内容进行探索。

DevicePlus 编辑团队
DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

相关文章

  1. 在最后一刻停下来!用Arduino和距离传感器制作小鸡赛车!(第3篇•最终篇)

  2. 在最后一刻停下来!用Arduino和距离传感器制作小鸡赛车!(第2篇)

  3. 01

    在最后一刻停下来!用Arduino和距离传感器制作小鸡赛车!(第1篇)

  4. 通过Arduino使用ESP-WROOM-32(环境搭建和配置-LED闪烁篇)

  5. 通过Arduino使用ESP-WROOM-32(Bluetooth-BLE连接篇)

  6. 六种可以用于扩展物联网应用的DIY项目

  7. 使用Arduino的五大DIY无人机项目

  8. 从电动滑板到无人机:5个DIY项目来提升您的电子技能

  9. Arduino车库开启器和通用无线电接口

TECH INFO

  • 重点必看
  • 技术分享
  • Arduino入门指南

基础知识

  • Si功率元器件
  • IGBT功率元器件
  • 热设计
  • 仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


PICK UP!

  1. 刘铭
  2. ROHM开发出业界先进的第4代低导通电阻
PAGE TOP