游乐游手机版
首页/AI热点日报/热点详情

树莓派Pico驱动RGB LED模块完整教程

类型:热点整理2026-07-21
市面上常见的 RGB LED 模块,内部其实就封装了三颗灯丝——红、绿、蓝。别小看这三颗小灯,搭配树莓派 Pico,能调出上百种颜色来。 模块上分别标着 R、G、B 三个引脚,对应红、绿、蓝三通道,接 Pico 的三个 GPIO 即可。建议选支持 PWM 的引脚,后面做渐变或随机变色时才方便。本例中

市面上常见的 RGB LED 模块,内部其实就封装了三颗灯丝——红、绿、蓝。别小看这三颗小灯,搭配树莓派 Pico,能调出上百种颜色来。

模块上分别标着 R、G、B 三个引脚,对应红、绿、蓝三通道,接 Pico 的三个 GPIO 即可。建议选支持 PWM 的引脚,后面做渐变或随机变色时才方便。本例中我们用 GP4、GP3、GP2。

需要注意的是,这类模块分两种:共阴共阳。共阴模块上另一个引脚标着 GND,直接连 Pico 的 GND;共阳模块上另一个引脚是 VCC,得连 Pico 的 3V3。接线前务必看清,接反了灯不亮是小,烧掉模块就亏了。

先来个最直观的——让红、绿、蓝依次循环闪烁。代码如下:

import machine
import utime

r = machine.Pin(4, machine.Pin.OUT)
g = machine.Pin(3, machine.Pin.OUT)
b = machine.Pin(2, machine.Pin.OUT)

while True:
    for v in [(1,0,0), (0,1,0), (0,0,1)]:
        r.value(v[0])
        g.value(v[1])
        b.value(v[2])
        utime.sleep(0.3)

这个循环只是最基础的开关控制,每次只亮一个颜色。如果想调出更多颜色——比如淡紫、橙色——就得请出 PWM 了。通过快速调节每个引脚的占空比,能模拟出不同亮度的组合,从而混出近乎无限的色彩。

下面的代码就玩得更花了:随机生成 RGB 值,每隔 0.3 秒变一次色,视觉效果非常欢乐。

import machine
import utime
import urandom

r = machine.Pin(4, machine.Pin.OUT)
g = machine.Pin(3, machine.Pin.OUT)
b = machine.Pin(2, machine.Pin.OUT)

pwm_r = machine.PWM(r)
pwm_g = machine.PWM(g)
pwm_b = machine.PWM(b)

pwm_r.freq(1000)
pwm_g.freq(1000)
pwm_b.freq(1000)

def light(red, green, blue):
    pwm_r.duty_u16(65535 - red * 255)
    pwm_g.duty_u16(65535 - green * 255)
    pwm_b.duty_u16(65535 - blue * 255)

while True:
    light(urandom.randint(0,250), urandom.randint(0,250), urandom.randint(0,250))
    utime.sleep(0.3)

注意 duty_u16 的参数范围是 0~65535,我们传入了 65535 - color*255 这种写法,是因为共阴模式下引脚拉高对应更亮,而我们的颜色值 0 代表最暗,255 代表最亮。所以要用 65535 减去转换后的数值来反向映射。当然,如果用的是共阳模块,这里就得反过来处理。

实际使用中,PWM 频率设为 1000Hz 已经足够平滑,人眼不会感觉到频闪。你可以把 sleep 改小点,比如 0.1 秒,让颜色切换更丝滑;或者固定一组颜色值做呼吸灯效果,思路都是一样的。

来源:https://m.elecfans.com/article/2327847.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。