modules.ws2812(WS2812 灯带)
本模块使用K210
的I2S
进行模块的驱动,所以在使用的过程中需要注意是否冲突
目前最多支持12路灯带
构造函数
from modules import ws2812
class ws2812(led_pin=-1,led_num=-1,i2s_num=I2S_DEVICE_2,i2s_chn=I2S_CHANNEL_3,i2s_dma_chn=DMAC_CHANNEL1)
通过指定参数新建一个 ws2812
对象
参数
led_pin
: 灯带数据线连接的引脚,比如board_info.D[4]
led_num
: 灯带一共有多少颗灯珠i2s_num
: 该对象使用哪个I2S
设备进行驱动,默认为I2S_DEVICE_2
,取值范围为0-2
i2s_chn
: 该对象使用哪个I2S
通道,默认为I2S_CHANNEL_3
,取值范围为0-3
i2s_dma_chn
: 该对象使用的DMA通道,用户一般不考虑
方法
set_led
设置某个 led 灯颜色
class_ws2812.set_led(num, color)
参数
num
: 第N
颗灯珠,从0
开始color
: 该灯珠赋值的颜色,为tuple
类型, (R,G,B)
返回值
无
display
开始工作,设置完成后调用
class_ws2812.display()
参数
无
返回值
无
例程0
30 个 LED 灯全部亮红色
from modules import ws2812
class_ws2812 = ws2812(board_info.D[4],30)
for i in range(30):
class_ws2812.set_led(i,(0xff,0,0))
class_ws2812.display()
例程1
灯带红色渐变
from modules import ws2812
class_ws2812 = ws2812(board_info.D[4],30)
r=0
dir = True
while True:
if dir:
r += 1
else:
r -= 1
if r>=255:
r = 255
dir = False
elif r<0:
r = 0
dir = True
for i in range(30):
a = class_ws2812.set_led(i,(r,0,0))
a=class_ws2812.display()
以上例程,可见
MaixPy_scripts