在此树莓派 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 。
如果您遇到任何问题或有任何反馈,请与我联系。