RGB色彩模式是工业界一种颜色标准,RGB名称即代表着:R红色、G绿色、B蓝色,总共为三个通道的颜色。每个通道的刺激量以及通道之间相互迭加的刺激量从而可组成为1670万种色彩!可呈现出人类视力所能感知到的所有颜色,也是运用最广的颜色系统之一。
在日常生活中我们电脑上的RGB所谓“多少数值”其实就是指亮度,一般使用整数来表示。RGB各有256级的亮度,用数字表示为从0、1、2...直到255,数字的最高是255,但0也是数值之一,0表示没有刺激量,255表示刺激量最大值。R、G、B均为255时就合成了白光,R、G、B均为0时就形成了黑色。依次类推,不同通道的数值变化和迭加会呈现不同的颜色。
编程思路: 在下面的实验中,我们将使用开发板的PWM技术来控制模块R/G/B三个引脚的亮度。(PWM)是脉冲宽度调制它是通过数字方式获取模拟结果的技术。数字控制用于创建方波,信号在高电平和低电平之间切换。这种开关模式,可以通过改变信号持续的时间部分,与信号关闭的时间来模拟全开(5V)和 关(0V)之间的电压。“有效”的持续时间称为脉冲宽度。要获得不同的模拟值,可以更改或调制脉冲宽度。如果你使用的LED重复此开关模式足够快,通过0到5V之间的不同电压,从而控制LED的亮度和颜色。
| 以树莓派Pico开发板为例,提醒: 请按下图的引脚标识接线,务必不能接错。如果接错线通电后会导致设备烧毁! |
下图中R引脚代表红色,B引脚代表蓝色,G引脚代表绿色。V是正极供电。通过程序对这RGB三个引脚输入PWM信号可实现不同颜色调整

| RGB | 下载这个RGB源代码文件直接上传树莓派Pico文件内,直接运行查看数据(如下图) |
如果你还没有搭建好树莓派Python编程环境可参考这个帖子→:如何搭建Python编程环境

只需要修改颜色参数0-255即可实现调色
1. 模块导入与硬件配置(基础层)
from machine import Pin, PWM # 引脚配置 PIN_RED = 2 # R接GP2 PIN_GREEN = 0 # G接GP0 PIN_BLUE = 1 # B接GP1 PWM_FREQ = 1000 # PWM频率(RGB模块通用1000Hz)
导入Pin(引脚控制)、PWM(脉冲宽度调制,用于模拟亮度)模块;
固定引脚编号匹配你的硬件接线,PWM 频率设为 1000Hz(兼顾亮度平滑度和模块兼容性)
2. PWM 初始化(驱动层)
# 初始化PWM(将引脚转为PWM输出模式) pwm_red = PWM(Pin(PIN_RED)) pwm_green = PWM(Pin(PIN_GREEN)) pwm_blue = PWM(Pin(PIN_BLUE)) # 设置所有PWM通道频率 pwm_red.freq(PWM_FREQ) pwm_green.freq(PWM_FREQ) pwm_blue.freq(PWM_FREQ)
将 R/G/B 对应的引脚初始化为 PWM 输出(普通 GPIO 只能亮 / 灭,PWM 可调节占空比实现亮度渐变);
统一设置频率,确保三通道亮度调节同步无频闪。
3. 核心开关与亮度控制函数(逻辑层)
IS_COMMON_CATHODE = True
def set_rgb(red, green, blue):
# 0-255亮度 → 0-65535 PWM占空比(Pico PWM的标准范围)
r = int(red / 255 * 65535)
g = int(green / 255 * 65535)
b = int(blue / 255 * 65535)
# 核心逻辑
if IS_COMMON_CATHODE:
r = 65535 - r
g = 65535 - g
b = 65535 - b
#输出PWM值到引脚
pwm_red.duty_u16(r)
pwm_green.duty_u16(g)
pwm_blue.duty_u16(b)IS_COMMON_CATHODE:切换开关,解决 “设置纯红不亮” 的核心 ——
共阳模块(V 接正极):占空比越高(数值大),灯越亮(无需取反,设为 False);
共阴模块(GND 接负极):占空比越高,灯越暗(需取反,设为 True);
set_rgb()函数:接收 0-255 的直观亮度值,自动转换为 Pico 识别的 PWM 值,再根据模块类型调整输出;
例:设置CUSTOM_RED=255时,共阴模式下实际输出65535-65535=0(低电平),红色灯亮。
4. 亮度设置与执行(应用层)
# 自定义亮度(你只需修改这三个值0-255,0最暗,255最亮)
CUSTOM_RED = 255 # 红色 CUSTOM_GREEN = 0 # 绿色 CUSTOM_BLUE = 0 # 蓝色
# 执行亮度设置 set_rgb(CUSTOM_RED, CUSTOM_GREEN, CUSTOM_BLUE)
你只需修改CUSTOM_RED/GREEN/BLUE的数值,即可自由控制颜色和亮度;
调用set_rgb()后,代码会自动完成 “数值转换→模块适配→引脚输出” 全流程。
三、关键知识点
PWM 核心:树莓派 Pico 的 PWM 占空比范围是 0-65535,代码将 0-255 的直观亮度值转换为该范围,降低调节难度;
模块类型:共阴 / 共阳是 RGB 模块的核心差异,通过65535-数值取反即可兼容,无需修改硬件;
使用逻辑:你只需关注CUSTOM_XXX的数值修改,引脚配置、PWM 转换等底层逻辑已封装,无需调整。