发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
[python]

用树莓派控制WS2812灯带装饰圣诞树

[复制链接]
3804|5
手机看帖
扫描二维码
随时随地手机跟帖
tobot|  楼主 | 2021-12-24 00:22 | 显示全部楼层 |阅读模式
本帖最后由 tobot 于 2021-12-24 00:35 编辑

#申请原创# @21小跑堂
又是一年一度的圣诞节,某购物平台上推出WS2812灯带,144灯每米40元,感觉可以买个几米来玩玩。
我们知道WS2812点灯原理很简单,就是逐个灯写入24bit的颜色。
图片1.png
其中T0H0.35usT0L0.8usT1H0.7usT1L0.6us,对于一颗灯珠来说,至少需要0.2~0.3ms,灯珠之间不需要信号延迟,但两组信号量之间需要不小于50us的延迟。如下:
图片2.png
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63CD.tmp.jpg
对于有几百颗装饰灯的灯带来说,每次刷新颜色需要秒级的延迟,是可以忽略的。

虽然出差在外,但不影响规划圣诞树的装饰。距离圣诞没几天,先把代码写好,到货直接用,手边有块树莓派,拿块8灯的WS2812B-8先充数,做一个树莓派点灯的demo
首先是安装python
pip3 install rpi_ws281x
写一小段代码
图片3.png
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63ED.tmp.jpg
WS2812的控制线接到GPIO1上,连接电源(只有少量几个灯珠,板上的3.3V或者5V都行,实际接灯带的话估计得使用外置电源)和地,就可以看到灯珠在不断变换色彩了,效果图(手机拍摄的效果还真是难看,不过不管怎么说,显示变颜色的功能还是实现得很好的)
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63FE.tmp.jpg
图片4.png
原理其实很简单,就是吧随机颜色写到每个灯珠上,值得注意的是在代码 /usr/local/lib/python3.7/dist-packages/rpi_ws281x/rpi_ws281x.py中,已经明确提示只有支持PWMGPIO口才能运行这段代码。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63FF.tmp.jpg
从树莓派的资料上查到,唯一硬件PWM口为Pin12GPIO.1),也就是上图中的LED_PIN=18
图片5.png
但实际测试,可以发现设置LED_PIN的取值还可以是10Pin19MOSI)、12Pin32GPIO.26)、21Pin40GPIO.29)。而且还居然都可以用。然而其它某些我之前试过支持软PWM的接口反而是不能用的,不太明白其原因。
目前看来,圣诞节是没法回去过了,把代码共享给出来,祝大家圣诞夜成双成对。。。

xmas-tree.rar

361 Bytes

圣诞彩灯代码

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 10.00 元 2021-12-24
理由:恭喜通过原创文章审核!请多多加油哦!

相关帖子

gaochy1126| | 2022-1-27 20:47 | 显示全部楼层
WS2812不是直接使用arduino开发最简单了吗?                                   

使用特权

评论回复
tobot|  楼主 | 2022-1-28 08:41 | 显示全部楼层
gaochy1126 发表于 2022-1-27 20:47
WS2812不是直接使用arduino开发最简单了吗?

是啊,(^U^)ノ~YO
arduino直接点灯很容易的。

使用特权

评论回复
gaochy1126| | 2022-3-31 22:37 | 显示全部楼层
这个树莓派不是有python的可控版本吗?这个简单多了。   

使用特权

评论回复
gaochy1126| | 2022-3-31 22:38 | 显示全部楼层
arduino开发WS2812灯带也简单,里面的库函数很容易操作。  

使用特权

评论回复
tobot|  楼主 | 2022-4-1 23:25 | 显示全部楼层
gaochy1126 发表于 2022-3-31 22:37
这个树莓派不是有python的可控版本吗?这个简单多了。

啥意思啊,这个不就是mpy么?

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则