树莓派如何连接控制 APA102 RGB LED 灯带?

在此树莓派 LED 灯带教程中,我们将向您展示如何将 APA102 RGB LED 灯带连接到 Pi 。


除了向您展示如何将 APA102 LED 灯带连接到 Pi 之外,我们还将向您展示如何利用”** apa102-pi **”Python 软件包与灯带进行交互并更改单个 LED 的颜色。

APA102 是可与树莓派轻松使用的少数 RGB LED 灯条之一。这种易用性归功于它使用 SPI 协议为其数据提供了一条时钟线和一条数据线。

APA102 最重要的优点之一是它对时序不那么敏感。对于树莓派而言,缺少关键计时至关重要,因为它在保持关键计时方面并不出色。

您可以通过使用传感器](/categories/raspberry-pi-sensors/) 或其他设备来控制 LED 灯条的颜色来进一步扩展该项目。例如,您可以使用 [温度传感器并根据其冷热程度改变颜色。

本教程应适用于所有树莓派版本,但第一个版本的引脚布局有所不同。

设备

以下是将 APA102 RGB LED 灯带与树莓派连接所需的所有设备。

推荐的

  • 树莓派

  • Micro SD 卡

  • APA102 LED 灯带

  • 女性直流电源适配器插孔

  • 5V,10A 交流电源适配器

  • 面包板线

可选的

  • 树莓派外壳

将 APA102 LED 灯带连接到树莓派

对我们来说幸运的是,由于 APA102 利用 SPI 连接进行控制,因此 APA102 LED 灯条是为数不多的可以轻松连接到树莓派的 LED 灯条之一。

我们提供了书面说明和图表,以帮助您为 APA102 LED 灯带接线。

将直流桶形适配器的正极 (** + ) 连接到 APA102 上的 VCC 连接。
* 将直流桶形适配器的负极引脚 (–) 既连接到树莓派的物理引脚 6 (GND),又连接到 APA102 LED 灯带的 GND 连接。
* 将 APA102 的
SDI ( DI ) 连接线连接到树莓派上的物理引脚 19 ( MOSI **)。
将 APA102 的
CKI ( CI ) 连接线连接到树莓派上的物理引脚 23 ( SCLK **)。

如果上面的书面说明使您感到困惑,那么您应该查看下图,该图显示了每个连接的方向。

确保将 APA102 LED 灯带的接地连接线连接到 DC 桶式适配器和树莓派本身。如果您不这样做,则 LED 灯条将无法正常工作,因为它需要两个连接。

我们使用外部电源,因为树莓派无法提供长 LED 灯条所需的电流。所需的功耗可能会损坏树莓派。

使用树莓派校准 APA102

在本教程中,我们将使用 Raspbian 操作系统的最新版本。为了获得最佳兼容性,我们建议您运行 Raspbian 。

1 开始编写一些代码来控制 APA102 之前,我们需要做的第一件事是通过运行以下两个命令来更新树莓派。

sudo apt-get update
sudo apt-get upgrade

2. 凭借最新的树莓派操作系统,我们现在可以继续安装 python 3 及其 pip ** 模块。

要安装控制 APA102 LED 灯条所需的软件包,请运行以下命令。

sudo apt-get install python3 python3-dev python3-pip

3 我们现在可以继续安装 apa102-pi Python 软件包

该软件包是为树莓派设计的,可以处理所有繁琐的工作,以便与 APA102 LED 灯带进行通信并将数据发送到 APA102 LED 灯带。

通过运行以下命令来安装 APA102 Python 软件包。

sudo pip3  install apa102-pi

4 现在,我们已经在树莓派上安装了”** apa102-pi **”Python 软件包,现在我们可以编写一个基本的 Python 脚本。我们将使用此脚本来处理 APA102 的颜色顺序。

运行以下命令以开始编写 Python 文件,我们将其称为”** rgbcalibrate.py **”。

vim 〜/rgbcalibrate.py

5 在此文件中,输入以下代码行。我们将逐步解释每个部分的功能。从 apa102 _pi.driver 导入 apa102
首先,我们将”** apa102 **” 库导入到脚本中。我们将利用该库与我们的 APA102 LED 灯带进行对话。

条= apa102.APA102(num_led = 150,订单='rgb')

在这里,我们将 apa102 库实例化为”** strip **” 对象。为此,我们传入了两个变量。

** num \ _led ** –此变量定义条带中存在的 LED 数量。您可以手动计算 LED 的数量,也可以通过将每米的 LED 数量乘以试纸条的长度 (以米为单位) 来计算。

例如,我们使用的 LED 灯带长 5 米,每米有 30 个 LED 。使用一点数学就意味着整个条带的 LED 数量为 150 。

** order ** –此变量定义 LED 灯带的颜色顺序,默认情况下,我们将其设置为”** rgb **”。本部分的目的是确定是否正确。

strip.clear_strip()

在这里,我们将”** strip “对象称为” clear \ _strip ()**” 函数。此功能将关闭灯条中的所有 LED 并将其完全留空。

strip.set_pixel_rgb(1,0xFF0000)#红色
strip.set_pixel_rgb(2,0x00FF00)#绿色
strip.set_pixel_rgb(3,0x00FF00)#绿色
strip.set_pixel_rgb(4,0x0000FF)#蓝色
strip.set_pixel_rgb(5,0x0000FF)#蓝色
strip.set_pixel_rgb(6,0x0000FF)#蓝色

接下来,我们利用”** strip “对象,” set \ _pixel \ _rgb ()**” 函数,以便我们可以定义要为各个 LED 设置的颜色。这些对象被推入缓冲区。

“** set \ _pixel \ _rgb **” 函数中的第一个参数定义了我们要设置颜色的 LED 的编号。

第二个参数定义为所选 LED 设置的颜色。使用十六进制代码设置颜色。例如,** 0xFF0000 ** 是纯红色。

我们利用此代码按以下顺序设置 LED :一个红色,两个绿色和三个蓝色。我们这样做是为了确保”** rgb **” 是我们 APA102 LED 灯带的正确颜色顺序。

strip.show()

此函数告诉 APA102 库,它现在应该将我们使用”** set \ _pixel \ _rgb ()**” 函数设置的缓冲区推送到 LED 灯条。此功能将点亮 LED 灯条。

strip.cleanup()

最后,在脚本执行完毕之前,我们需要运行剥离对象的”** cleanup ()**” 函数。此功能清除并准备好所有连接,以便我们可以轻松地再次与 APA102 通话。

6 将所有内容输入文件后,其外观应如下所示。

一旦感到满意,您可以先按 ** CTRL + X ,然后按 Y **,再按 ENTER 键保存文件。

从 apa102 _pi.driver导入 apa102 

条= apa102.APA102(num_led = 150,订单='rgb')

strip.clear_strip()

strip.set_pixel_rgb(0,0xFF0000)#红色
strip.set_pixel_rgb(1,0x00FF00)#绿色
strip.set_pixel_rgb(2,0x00FF00)#绿色
strip.set_pixel_rgb(3,0x0000FF)#蓝色
strip.set_pixel_rgb(4,0x0000FF)#蓝色
strip.set_pixel_rgb(5,0x0000FF)#蓝色

strip.show()

strip.cleanup()

测试 Python 脚本

1 现在我们已经完成了编写”** rgbcalibrate.py **” 脚本的工作,现在可以通过运行以下命令来继续运行它。

python3〜/rgbcalibrate.py

2 APA102 LED 灯带现在应该点亮了。如果我们指定的颜色顺序正确且一切正常,则应该看到 1 个红色 LED ,2 个绿色 LED 和 3 个蓝色 LED 。

假设颜色顺序正确,则您已成功将 APA102 led 灯带连接到树莓派。您无需执行其他任何操作。

如果颜色顺序不正确,请记录下来。例如,如果颜色顺序是蓝色,绿色,红色,则将其记为”** bgr “,因为您将需要稍微修改” rgbcalibrate.py **” 脚本。

在脚本中搜索”** order =’rgb’“行,然后更改其” rgb **” 部分,使其与您的 LED 灯条上显示的颜色顺序匹配。

您可以通过保存并重新运行脚本并观察现在显示在 LED 灯带上的颜色顺序来验证此更改是否正确。

正如我在本教程前面提到的那样,树莓派 RGB LED 灯带有很多用途。例如,您可以使用它来显示正在向 [力传感器] 施加多少压力。红色表示较大压力,绿色表示几乎没有压力。

此时,您现在应该已经成功将 APA102 LED 灯带连接到树莓派,并使用”** apa102-pi **”Python 库测试了两个 LED 。

如果您遇到任何问题或有任何反馈,请与我联系。

分享到