在BPI-Leaf-S3开发板上载有一个全彩LED灯珠,该灯珠的引脚同GPIO48相连,通过例程的下载则可产生间隔为0.5秒的白光闪烁效果,见图1所示。
图1 点亮灯珠
图2 运行程序
其实这个例程的功能是十分强大,对其稍加修改就可产生变化多样的效果。
例如,通过RGB参数的变化就可显示出不同的色彩,见图3至图5所示。
图3 显示红色
图4 显示绿色
图5显示蓝色
实现3基色循环变化的程序如下:
from machine import Pin
from neopixel import NeoPixel
import time
pin_48 =Pin(48) #BPI-Leaf-S3 板载的一颗 NeoPixel LED 在
GPIO48 上
np =NeoPixel(pin_48, 1,bpp=3, timing=1)# 初始化NeoPixel
while True:
np[0] = (200,0,0) #三色相同即亮白光
np.write() #输出显示
time.sleep_ms(250) #间隔250ms
np[0] = (0,200,0) #三色相同即亮白光
np.write() #输出显示
time.sleep_ms(250) #间隔250ms
np[0] = (0,0,200) #三色相同即亮白光
np.write() #输出显示
time.sleep_ms(250) #间隔250ms
np[0] = (0,0,0) #灭灯
np.write()
time.sleep_ms(250)
除了使用板载的灯珠,还可以外挂的方式来点亮WS212灯环及灯带,到了一个12灯珠灯环的效果如图6至图8所示。
图6 点亮单个灯珠
图7点亮2个灯珠
图8 点亮全部灯珠
该灯环与开发板所连接的引脚为GPIO47,所配置的灯珠数为12。
rom machine import Pin
from neopixel import NeoPixel
import time
pin_48 = Pin(47)#BPI-Leaf-S3 板载的一颗 NeoPixel LED 在
GPIO48 上
np = NeoPixel(pin_48, 12,bpp=3, timing=1)# 初始化NeoPixel
while True:
for j in range (12):
np[j] = (25,200,25)
np.write() #输出显示
time.sleep_ms(250) #间隔250ms
for j in range (12):
np[j] = (0,0,0) #灭灯
np.write()
time.sleep_ms(250)
开发板点亮灯带的效果如图9至图11所示,所连接的引脚仍为GPIO47,灯珠数为60。
图9 效果1
图10 效果2
图11 效果3
实现演示效果的程序为:
from machine import Pin
from neopixel import NeoPixel
import time
def rainbow(num=60,level=25,delay=100):
def write_all(num,delay,red,green,blue):
for j in range (num):
np[j] =(red,green,blue)
np.write()
time.sleep_ms(delay)
red,green,blue= level,0,0
rainbow_step_list2 =
[(0,1,0),(-1,0,0),(0,0,1),(0,-1,0),(1,0,0),(0,0,-1)]
for step in rainbow_step_list2:
for i in range (level):
red+=step[0]
green+=step[1]
blue+=step[2]
write_all(num,delay,red,green,blue)
pin_48 =Pin(47, Pin.OUT)#将GPIO48作为WS2812的信号传输线np =NeoPixel(pin_48, 60,bpp=3, timing=1)
while True:
rainbow(num=60,level=25,delay=10)