用树莓派控制WS2812灯带装饰圣诞树
本帖最后由 tobot 于 2021-12-24 00:35 编辑#申请原创# @21小跑堂
又是一年一度的圣诞节,某购物平台上推出WS2812灯带,144灯每米40元,感觉可以买个几米来玩玩。我们知道WS2812点灯原理很简单,就是逐个灯写入24bit的颜色。
其中T0H≈0.35us,T0L≈0.8us,T1H≈0.7us,T1L≈0.6us,对于一颗灯珠来说,至少需要0.2~0.3ms,灯珠之间不需要信号延迟,但两组信号量之间需要不小于50us的延迟。如下:file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63CD.tmp.jpg 对于有几百颗装饰灯的灯带来说,每次刷新颜色需要秒级的延迟,是可以忽略的。
虽然出差在外,但不影响规划圣诞树的装饰。距离圣诞没几天,先把代码写好,到货直接用,手边有块树莓派,拿块8灯的WS2812B-8先充数,做一个树莓派点灯的demo。首先是安装python库pip3 install rpi_ws281x写一小段代码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 原理其实很简单,就是吧随机颜色写到每个灯珠上,值得注意的是在代码 /usr/local/lib/python3.7/dist-packages/rpi_ws281x/rpi_ws281x.py中,已经明确提示只有支持PWM的GPIO口才能运行这段代码。file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps63FF.tmp.jpg 从树莓派的资料上查到,唯一硬件PWM口为Pin12(GPIO.1),也就是上图中的LED_PIN=18。但实际测试,可以发现设置LED_PIN的取值还可以是10(Pin19,MOSI)、12(Pin32,GPIO.26)、21(Pin40,GPIO.29)。而且还居然都可以用。然而其它某些我之前试过支持软PWM的接口反而是不能用的,不太明白其原因。目前看来,圣诞节是没法回去过了,把代码共享给出来,祝大家圣诞夜成双成对。。。
WS2812不是直接使用arduino开发最简单了吗? gaochy1126 发表于 2022-1-27 20:47
WS2812不是直接使用arduino开发最简单了吗?
是啊,(^U^)ノ~YO
arduino直接点灯很容易的。 这个树莓派不是有python的可控版本吗?这个简单多了。 arduino开发WS2812灯带也简单,里面的库函数很容易操作。 gaochy1126 发表于 2022-3-31 22:37
这个树莓派不是有python的可控版本吗?这个简单多了。
啥意思啊,这个不就是mpy么? 看看,学习下 太奢侈了一个几毛钱的单片机能解决的事情搞了个linux
页:
[1]