【得捷电子Follow me第2期】+任务3:控制WS2812B
[复制链接]
本帖最后由 eew_bKCCPh 于 2023-9-25 20:36 编辑
一。介绍
Adafruit ESP32-S3 TFT Feather的板子上集成了一颗RGB灯WS2812B。还有两颗按键,其中复位键不能拿来当功能键使用,所以在不接外设的情况下,只有一个按键可以使用。两个器件的具体位置如下图。
介绍一下WS2812B灯珠。WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源,内置RGB三色灯珠,每个灯珠控制需要24位数据,8Bit绿色亮度+8Bit红色亮度+8Bit蓝色亮度,每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示。多个灯珠组合在一起可形成灯带,灯带上的灯珠供电并联,信号线“串联”。信号由DI进到灯珠,灯珠在锁存24Bit数据后,将剩余数据整形放大后通过DO端口输出给下一个级联的灯珠,每经过一个灯珠的传输,信号减少24bit。当灯珠接收到280μs以上的RESET数据,灯珠根据自己锁存的数据完成对RGB三色灯的控制。
二。代码
完成按一下按钮进行三个颜色的切换
import board
import neopixel
import digitalio
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixel.brightness = 0.3
button = digitalio.DigitalInOut(board.BUTTON)
button.switch_to_input(pull=digitalio.Pull.UP)
pixel.fill((0, 0, 0))
i = 0
while True:
if not button.value:
i = i + 1
if i > 3:
i = 1
if i == 1:
pixel.fill((255, 0, 0))
elif i == 2:
pixel.fill((0, 255, 0))
elif i == 3:
pixel.fill((0, 0, 255))
|