首页 动态 版块 商城 我的
 退出
游客  
等级:
金币:
经验值:

全彩RGB灯模块 色彩调试 树莓派Pico使用Python例程

  6810 
 0
 8
lamp   single 


一:RGB三原色介绍

 

    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信号可实现不同颜色调整

Image

三:Python代码

RGB下载这个RGB源代码文件直接上传树莓派Pico文件内,直接运行查看数据(如下图) 

如果你还没有搭建好树莓派Python编程环境可参考这个帖子→:如何搭建Python编程环境

Image


只需要修改颜色参数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 转换等底层逻辑已封装,无需调整。



标签:
作者签名: www.ydxhuo.com   楼主  2026-03-18 20:15:14
回复列表
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
您的IP: 216.73.216.96 , 2026-04-02 09:32:09
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
(8) 分享
分享

请保存二维码或复制链接进行分享

取消
已有0次打赏