TriLight 模块
模块介绍
三通道 PWM 光输出控制器,用于控制 RGB LED 等三色光设备。支持共阳极(is_0_max=True:duty=0 最亮)或共阴极(默认)两种模式,提供丰富的颜色控制接口。
硬件引脚说明
| 引脚名称 | 全称/含义 | 接线颜色 | 功能描述 |
|---|---|---|---|
| R | Red/红色 | 红色 | 红色通道控制引脚(需支持 PWM 输出) |
| G | Green/绿色 | 绿色 | 绿色通道控制引脚(需支持 PWM 输出) |
| B | Blue/蓝色 | 蓝色 | 蓝色通道控制引脚(需支持 PWM 输出) |
| V | Voltage/电源 | 红色/黑色 | 电源电压输入(共阳极接 VCC,共阴极接 GND) |
| GND | Ground/地线 | 黑色 | 接地引脚(共阴极接 GND,共阳极接 VCC) |
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin1 | Pin | 无 | R 通道 GPIO 引脚(需支持 PWM 输出) |
| pin2 | Pin | 无 | G 通道 GPIO 引脚(需支持 PWM 输出) |
| pin3 | Pin | 无 | B 通道 GPIO 引脚(需支持 PWM 输出) |
| is_0_max | bool | False | 是否共阳极(True=duty=0 最亮,False=共阴极) |
| freq | int | 5000 | PWM 频率(Hz) |
| max_duty | int | 1023 | 最大占空比(ESP32 默认 1023,Pico 用 65535) |
导入和实例创建
python
from machine import Pin # 导入Pin模块
from trilight import TriLight # 导入TriLight驱动模块
# 初始化共阴极 RGB LED(默认)
light = TriLight(Pin(25), Pin(26), Pin(27), is_0_max=False) # R、G、B通道分别接GPIO25、26、27
# 初始化共阳极 RGB LED
light = TriLight(Pin(25), Pin(26), Pin(27), is_0_max=True) # 共阳极LED需要设置is_0_max=True核心属性方法
| 属性或方法 | 参数 | 返回类型 | 说明 |
|---|---|---|---|
| color | 无 | tuple | 可读写属性:当前颜色 (r, g, b),每个分量 0~255 |
| r | 无 | int | 可读写属性:红色分量 0~255 |
| g | 无 | int | 可读写属性:绿色分量 0~255 |
| b | 无 | int | 可读写属性:蓝色分量 0~255 |
| set_rgb() | r (int 0~255), g (int 0~255), b (int 0~255) | None | 设置颜色,三个独立参数 |
| set_color() | color (tuple/list (r,g,b)) | None | 设置颜色,传入一个 RGB 元组或列表 |
| off() | 无 | None | 关闭所有通道 |
| deinit() | 无 | None | 释放 PWM 资源 |
使用示例
python
from machine import Pin
from trilight import TriLight
from time import sleep_ms
# 初始化共阴极 RGB LED
light = TriLight(Pin(25), Pin(26), Pin(27), is_0_max=False)
# 方式1:使用 set_rgb()
light.set_rgb(255, 0, 0) # 红色
sleep_ms(500)
# 方式2:使用 set_color()
light.set_color((0, 255, 0)) # 绿色
sleep_ms(500)
# 方式3:使用 color 属性
light.color = (0, 0, 255) # 蓝色
sleep_ms(500)
# 方式4:分别设置 r, g, b
light.r = 255
light.g = 255
light.b = 0 # 黄色
sleep_ms(500)
light.off() # 关闭
light.deinit() # 释放资源注意事项
引脚与硬件要求
- 确保所用引脚支持 PWM 输出(如 ESP32/ESP8266 多数 GPIO 均支持)
- 根据硬件类型设置 is_0_max 参数(共阳极=True,共阴极=False)
使用技巧
- RGB 各分量范围 0~255,超出范围会自动限制
- 使用完毕后建议调用 deinit() 释放 PWM 资源