树莓派流水跑马灯,详细步骤驱动APA102 LED彩色灯条

在本篇树莓派LED灯条教程中,详细展示了如何将APA102 RGB LED灯条连接到Pi上。

Raspberry-Pi-APA102-LED-Strip-Thumbnail.jpg

除了向你展示如何将APA102 LED灯条连接到Pi上,还将展示如何利用 “apa102-pi “Python软件包与灯条互动,并改变单个LED的颜色。

APA102是为数不多的可以方便地与树莓派配合使用的RGB灯条。这种易用性得益于它的数据使用SPI协议,有一条时钟线和一条数据线。APA102最显著的优势之一是它对时序的敏感性不高。由于树莓Pi在维持临界时序方面并不出色,因此不需要临界时序对于树莓Pi来说至关重要。

你可以进一步扩展这个项目,利用传感器或其他设备来控制LED条的颜色。例如,你可以一个温度传感器,并有颜色的变化,这取决于它是多么热或冷。

本教程应该适用于所有版本的Raspberry Pi,除了第一个版本,因为它的引脚布局和其他的不一样。

设备清单

下面是树莓派驱动APA102需要的设备清单,点击连接可直达特别优惠购买。

建议

可选

将APA102 LED灯条连接到树莓派上

幸运的是,由于APA102利用SPI连接进行控制,APA102 LED灯条是为数不多的可以轻松连接到Raspberry Pi的LED灯条之一。

这里提供了书面说明和图表来帮助您连接APA102 LED灯条。

  • 将直流电桶适配器的正极引脚(+)连接到APA102的VCC接口上。
  • 将直流桶适配器的负极引脚(-)连接到树莓派的物理引脚6(GND)和APA102 LED灯条的GND连接。
  • 将APA102的SDI(DI)连接线连接到树莓派的物理引脚19(MOSI)。
  • 将APA102的CKI (CI)连接线连接到树莓派上的物理引脚23 (SCLK)。

如果上面的书面说明让你感到困惑,那么你应该看看下面的图,看起来更清晰一些。

确保将APA102 LED灯条的地线连接到直流电源和树莓派上。如果不这样LED灯条无法正常工作。

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

Raspberry-Pi-APA102-LED-Strip-Wiring-Schematic.png

使用Raspberry Pi校准APA102

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

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

sudo apt-get update
sudo apt-get upgrade

2. Raspberry Pi的操作系统已经更新了,现在可以继续安装Python 3和它的pip模块了。

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

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

3. 现在可以继续安装 apa102-pi Python 包了。

这个包是为树莓派设计的,用于处理与APA102 LED灯条通话和发送数据的所有繁琐工作。

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

sudo pip3 install apa102-pi

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

运行下面的命令开始编写一个Python文件,命名为 “rgbcalibrate.py”。

nano ~/rgbcalibrate.py

5. 在这个文件中,输入以下几行代码。我将逐步解释每一部分的作用。

from apa102_pi.driver import apa102

首先,将 “APA102 “库导入到脚本中,利用这个库与我们的APA102 LED灯条对话。

strip = apa102.APA102(num_led=150, order='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)  # Red
strip.set_pixel_rgb(2, 0x00FF00)  # Green
strip.set_pixel_rgb(3, 0x00FF00)  # Green
strip.set_pixel_rgb(4, 0x0000FF)  # Blue
strip.set_pixel_rgb(5, 0x0000FF)  # Blue
strip.set_pixel_rgb(6, 0x0000FF)  # Blue

接下来,利用 “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()

最后,在脚本完成执行之前,需要运行strip对象的 “cleanup() “函数。这个函数可以清理所有的连接,并为其做准备,这样就可以轻松地再次与APA102对话。

6. 一旦所有的东西都被输入到文件中,它应该像我们下面的样子。都正确后,可以按CTRL + X然后按Y再按ENTER键保存文件。

from apa102_pi.driver import apa102

strip = apa102.APA102(num_led=150, order='rgb')

strip.clear_strip()

strip.set_pixel_rgb(0,  0xFF0000)  # Red
strip.set_pixel_rgb(1, 0x00FF00)  # Green
strip.set_pixel_rgb(2, 0x00FF00)  # Green
strip.set_pixel_rgb(3, 0x0000FF)  # Blue
strip.set_pixel_rgb(4, 0x0000FF)  # Blue
strip.set_pixel_rgb(5, 0x0000FF)  # Blue

strip.show()

strip.cleanup()

测试Python脚本

1. 现在已经完成了 “rgbcalibrate.py “脚本的编写,可以通过运行以下命令来运行它。

python3 ~/rgbcalibrate.py

2. APA102的LED灯条现在应该已经亮了。如果指定的颜色顺序是正确的,并且一切都按预期工作,你应该看到1个红色LED,2个绿色LED和3个蓝色LED。

假设颜色顺序是正确的,那么你已经成功地将APA102灯条连接到树莓派上。没有其他需要做的事情了。

如果颜色顺序不正确,要做一个记录。例如,如果颜色顺序是蓝色、绿色、红色,那么将其记为 “bgr”,因为你需要稍微修改 “rgbcalibrate.py “脚本。

在脚本中搜索 “order=’rgb'”行,并更改其中的 “rgb “部分,以匹配LED灯条上显示的颜色顺序。

保存和重新运行脚本并观察现在显示在LED灯条上的颜色顺序来验证这一更改是否正确。

正如我在前面的教程中提到的,Raspberry Pi RGB LED灯条有很多用途。例如,你可以用它来显示施加在力传感器上的压力有多大。红色代表压力大,绿色代表压力小到没有。

希望到这里,你已经成功地将你的APA102 LED灯条连接到你的Raspberry Pi上,并使用 “apa102-pi “Python库测试了几个LED。如果你遇到任何问题或有一些反馈,那么欢迎在下面留言。

平均: 5 / 5. votes: 1

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

欢迎转载,请留下出处链接:Labno3 » 树莓派流水跑马灯,详细步骤驱动APA102 LED彩色灯条

赞 (1)

评论

5+7=