一、ESP32-S3上使用MicroPython点亮WS2812智能LED
二、ESP32-S3上使用MicroPython点亮WS2812智能LED让所有灯珠点亮
让WS2812 LED灯珠之间流转,并不断循环。下面的代码将颜色从一个灯珠传递到下一个灯珠,实现流动效果:
实现颜色流转的代码:
from machine import Pin
import neopixel
from time import sleep
# 设置GPIO 2为输出引脚,并初始化一个有7个LED的NeoPixel对象
led_pin = Pin(2, Pin.OUT)
num_leds = 7 # 你的LED数量
np = neopixel.NeoPixel(led_pin, num_leds)
# 定义要显示的颜色序列
colors = [
(255, 0, 0), # 红色
(0, 255, 0), # 绿色
(0, 0, 255), # 蓝色
(255, 255, 0), # 黄色
(255, 0, 255), # 洋红色
(0, 255, 255), # 青色
(255, 255, 255) # 白色
]
while True:
for i in range(num_leds):
# 将颜色列表向右移位
np[i] = colors[i]
np.write() # 发送数据到所有LED
sleep(0.2) # 控制流动速度
# 将颜色列表向右循环移动一位
colors = colors[-1:] + colors[:-1]
代码说明:
- while True: 创建一个无限循环,使颜色流动不断进行。
- for循环: 逐个设置每个LED的颜色,初始颜色按照
colors
数组中的顺序排列。 - colors = colors[-1:] + colors[:-1]: 这是一个列表操作,它将颜色列表的最后一个元素移动到列表的开头,其他元素依次向后移位。这样可以实现颜色的流动效果。
- sleep(0.2): 控制颜色流动的速度。你可以通过调整这个值来加快或减慢流动速度。
运行效果:
- 颜色会从第一个灯珠依次流动到最后一个灯珠,并不断循环。
- 整个灯珠阵列会显示出流动的彩虹效果。
你可以根据需要调整颜色列表的长度和内容,也可以调整sleep
的值来改变流动的速度。这个代码可以让你的LED阵列显示出动态、流动的颜色效果,非常适合用作装饰或者动态显示。