在本篇树莓派LED灯条教程中,详细展示了如何将APA102 RGB LED灯条连接到Pi上。
除了向你展示如何将APA102 LED灯条连接到Pi上,还将展示如何利用 “apa102-pi “Python软件包与灯条互动,并改变单个LED的颜色。
APA102是为数不多的可以方便地与树莓派配合使用的RGB灯条。这种易用性得益于它的数据使用SPI协议,有一条时钟线和一条数据线。APA102最显著的优势之一是它对时序的敏感性不高。由于树莓Pi在维持临界时序方面并不出色,因此不需要临界时序对于树莓Pi来说至关重要。
你可以进一步扩展这个项目,利用传感器或其他设备来控制LED条的颜色。例如,你可以一个温度传感器,并有颜色的变化,这取决于它是多么热或冷。
本教程应该适用于所有版本的Raspberry Pi,除了第一个版本,因为它的引脚布局和其他的不一样。
设备清单
下面是树莓派驱动APA102需要的设备清单,点击连接可直达特别优惠购买。
建议
- ? 树莓派
- ? 高速SD卡
- ? 树莓派4B电源
- ? 以太网线或Wifi
- APA102 LED灯条
- 母头直流电源适配器插孔
- 5V,10A AC电源适配器
- ? 面包板跳线
可选
将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
在本教程中,我们使用的是最新版本的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。如果你遇到任何问题或有一些反馈,那么欢迎在下面留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派流水跑马灯,详细步骤驱动APA102 LED彩色灯条