如何让Arduino点亮APA102 RGB LED灯条

在本教程中,你将学会Arduion与APA102 LED的线路连接,使用外部电源点亮LED,用FastLED库控制LED闪烁。

学会之后有很多方法可以扩展这个项目。例如,你可以使用类似DS18B20温度传感器,改变灯条上的颜色来表示当前的温度。

如果你喜欢用Pi来完成所有的项目,也可以用树莓派控制APA102 LED灯条,也非常好玩。

设备清单

必要设备

  • Arduino Uno
  • APA102 LED灯条
  • 母头直流电源适配器
  • 5V,10A交流电源适配器
  • 面包板导线

连接Arduino APA102 LED灯条电路

将APA102 LED电路连接到Arduino过程相对简单。这里有张图,照着图做就可以了。

  • 将直流电筒适配器的正极引脚(+)连接到APA102上的VCC连接处。
  • 将直流管状适配器的负极引脚(-)连接到Arduino上的GND引脚和APA102 LED灯条上的GND连接。
  • 将 APA102 的 CKI (CI) 连接线连接到 Arduino 上的引脚 11。
  • 将APA102的SDI(DI)连接线连接到Arduino上的引脚13。

特别要注意的是,APA102 LED灯条与桶形连接器和Arduino本身需要连接的地线。

在这个电路中,确保使用单独的电源来为APA102 LED供电,因为从arduino主板中通过太大的电流,主板极有可能会烧毁。

Arduino APA102 LED Strip Wiring Schematic

导入APA102 LED灯条控制库

使用FastLED库与Arduino的APA102 RGB LED灯条进行交互。FastLED库的设计就是为了方便与各种LED灯条进行交互,包括本教程中使用的APA102。

  1. 在Arduino集成开发环境中,在Sketch (1.) -> Include Library (2.) -> Manage Libraries (3.) 中导入 “FastLED “库。Arduino APA102 LED Strip Arduino IDE 01 Manage Libraries
  2. 在Arduino库管理器中,在文本框中搜索 “fastled”(1. 接下来,找到 “FastLED by Daniel Garcia “并点击 “安装 “按钮(2.)。 安装好 “FastLED “库后,可以继续点击 “关闭 “按钮(3).Arduino APA102 LED Strip Arduino IDE 02 Install FastLED

用Arduino校准RGB LED灯条

现在可以写程序控制LED灯条了。

  1. 在Arduino IDE界面内,输入以下几行代码。 我们将为您讲解每一段代码的作用,让您了解如何根据自己的需求进行修改。
#include <FastLED.h>

首先,我们需要包含 “FastLED “库的头文件。

我们将利用这个库来向APA102 LED灯条发送数据,它大大简化了与LED灯条的交互过程。

#define NUM_LEDS 6
#define DATA_PIN 11
#define CLOCK_PIN 13

这里定义几个常数,之后将在整个代码中引用这些常数。 NUM_LEDS:要处理的LED数量。在这个简短的片段中,我们只需要6个LED,因为我们只需要校准灯条。

DATA_PIN: 库输出数据的引脚号,用于控制APA102。

CLOCK_PIN: 库需要用来发送时钟信号的引脚号。这个引脚是APA102带状器所需要的,因为它使用的是SPI接口。

CRGB leds[NUM_LEDS];

接下来,定义一个名为 “LED “的数组,该数组使用FastLED的CRGB作为数据类型。

这个数组将被FastLED库监控,以便它知道哪些LED需要被点亮,以及它们需要的颜色。

void setup() {
    delay(2000);
    LEDS.addLeds<APA102,DATA_PIN, CLOCK_PIN,RGB>(leds,NUM_LEDS);
}

这个 “setup() “函数是在Arduino设备启动时运行的。

我们首先使用 “delay() “函数。我们使用这个函数是为了在Arduino出现问题时给你一个重新编程的机会。

接下来利用FastLED库的 “addLeds<>() “函数,使用这个函数让与APA102 LED灯条工作。

在这个函数中,要传递LED灯条的型号(APA102)、DATA_PIN和CLOCK_PIN常数以及颜色顺序(现在是RGB)。

还引用了我们创建的 “LEDS “数组和NUM_LEDS。当我们调用 “show() “函数时,库会自动从数组中读取。

void loop() {
    leds[0] = CRGB(255,0,0);
    leds[1] = CRGB(0,255,0);
    leds[2] = CRGB(0,255,0);
    leds[3] = CRGB(0,0,255);
    leds[4] = CRGB(0,0,255);
    leds[5] = CRGB(0,0,255);
    FastLED.show();
    delay(1000);
}

“loop()“函数在 “setup()“函数触发后自动持续运行。

在这个循环中,为 “LEDS “数组中的每个点定义一个值。

它将点亮灯带的前6个LED,最终应该按照以下顺序显示:1个红色,2个绿色,3个蓝色。 使用 “FastLED “库的 “CRGB() “函数来格式化每个LED的颜色。

设置好每个值后,利用FastLED的库 “show() “函数将新的颜色数组推送到APA102的LED条上。

最后,为了结束这个循环,将脚本延迟1秒。

  1. 最终的完整代码如下
#include <FastLED.h> 

#define NUM_LEDS 6
#define DATA_PIN 11
#define CLOCK_PIN 13

CRGB leds[NUM_LEDS];

void setup() {
    delay(2000);
    LEDS.addLeds<APA102,DATA_PIN, CLOCK_PIN,RGB>(leds,NUM_LEDS);
}

void loop() {
    leds[0] = CRGB(255,0,0);
    leds[1] = CRGB(0,255,0);
    leds[2] = CRGB(0,255,0);
    leds[3] = CRGB(0,0,255);
    leds[4] = CRGB(0,0,255);
    leds[5] = CRGB(0,0,255);
    FastLED.show();
    delay(1000);
}
  1. 现在可以把代码上传到Arduino上了,先点击 “Verify”按钮(1.),然后点击 “Upload”按钮(2)。Arduino APA102 LED Strip Arduino IDE 03 Verify and upload
  2. 将代码推送到Arduino后,APA102的RGB LED条应该会亮起。记下现在LED灯条上显示的颜色顺序,应该是红、绿、蓝。它应该是红色、绿色和蓝色。

如果颜色顺序是正确的,可以进行下一步了。

改变颜色顺序 如果颜色的顺序不正确,则需要将颜色顺序记下来。例如,如果它显示为蓝色、绿色和红色,那么你需要记下颜色顺序是BGR。

在代码中,你需要修改 “LEDS.addLeds “一行。

将定义的 “RGB “色序改成你刚才计算出来的新色序。在这个例子中,我们需要将值切换为 “BGR”。

修改后的行看起来应该像下面这样。

LEDS.addLeds<APA102,DATA_PIN, CLOCK_PIN,BGR>(leds,NUM_LEDS);
  1. 完成修改后,再次验证并重新上传代码到Arduino中。

如果一切正常的话,你的LED灯条上的颜色应该会按照正确的顺序显示出来。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 如何让Arduino点亮APA102 RGB LED灯条

赞 (1)

评论

8+3=