Esp32基础(⑨RGB LED)
WS = Wire Signal = 信号线,也就是控制 RGB LED 的数据输入引脚(通常是 DI 或 DIN)。
引脚4 连接 WS(信号线)
使用 MicroPython 在 ESP32 上驱动 RGB LED(WS2812 或类似)
RGB LED 引脚 | ESP32 引脚 | 说明 |
---|---|---|
VCC | 3.3V 或 5V(看模块) | 电源正极 |
GND | GND | 电源负极 |
WS(DI) | GPIO4 | 数据输入信号 |
代码如下
from machine import Pin
import neopixel
import time# 设置GPIO4为数据引脚,连接WS(DI)
pin = Pin(4, Pin.OUT)
np = neopixel.NeoPixel(pin, 1) # 1个LED# 设置颜色函数(RGB)
def set_color(r, g, b):np[0] = (r, g, b)np.write()# 示例:红 → 绿 → 蓝 循环
while True:set_color(255, 0, 0) # 红time.sleep(1)set_color(0, 255, 0) # 绿time.sleep(1)set_color(0, 0, 255) # 蓝time.sleep(1)
点亮两个代码
from machine import Pin
import neopixel
import timepin = Pin(4, Pin.OUT)
np = neopixel.NeoPixel(pin, 2) # 2 个 LED# 同时给两个 LED 设置同一颜色
def set_color(r, g, b):for i in range(2):np[i] = (r, g, b)np.write()# 如果想分别控制两个 LED,可写两个函数或传下标
def set_led0(r, g, b):np[0] = (r, g, b)np.write()def set_led1(r, g, b):np[1] = (r, g, b)np.write()# 示例:两个 LED 一起红→绿→蓝
while True:set_color(255, 0, 0)time.sleep(1)set_color(0, 255, 0)time.sleep(1)set_color(0, 0, 255)time.sleep(1)
流水灯代码
from machine import Pin
import neopixel
import timepin = Pin(4, Pin.OUT)
np = neopixel.NeoPixel(pin, 5) # 5 个 WS2812 灯珠def clear():for i in range(5):np[i] = (0, 0, 0)np.write()# 流水灯:红 → 黑 → 红 → 黑 ……
def running_light(r=255, g=0, b=0, speed_ms=150):while True:# 从左到右for i in range(5):clear()np[i] = (r, g, b)np.write()time.sleep_ms(speed_ms)# 从右到左for i in range(3, 0, -1): # 跳过最右端再亮一次clear()np[i] = (r, g, b)np.write()time.sleep_ms(speed_ms)# 启动!
running_light()
123