RGB模块调节LED颜色


项目介绍

在这个套件中,有一个Keyes 共阴RGB模块,它采用F10-全彩RGB雾状共阴LED元件。控制时,我们需要将模块的R、G、B脚连接至单片机的PWM口。由于我们这个RGB模块是共阴的,公共管脚就接GND(共阳RGB公共管脚接VCC)。

RGB三色也就是三基色,红色、绿色、蓝色。人眼对RGB三色最为敏感,大多数的颜色可以通过RGB三色按照不同的比例合成产生。同样绝大多数单色光也可以分解成RGB三种色光。这是色度学的最基本原理,即三基色原理。RGB三基色按照不同的比例相加合成混色称为相加混色,除了相加混色法之外还有相减混色法。可根据需要相加相减调配颜色。

接下来,我们基于刚刚学习的三基色原理,通过PWM端口控制R、G、B各色的占空比,使R、G、B三色按照不同的比例合成产生多重颜色显示在LED上。

PWM原理简介

PWM(Pulse Width Modulation,脉宽调制)是一种通过控制数字信号高低电平的占空比来模拟模拟信号的方法。它广泛应用于LED亮度调节、电机调速、声音合成等场景。

PWM信号的频率指的是每秒钟高低电平循环的次数,单位为Hz。占空比则表示在一个周期内,高电平所占的比例(0%~100%)。占空比越高,LED越亮;占空比越低,LED越暗。

PWM占空比图

在RGB模块中,分别对R、G、B三色通道使用PWM调节其亮度,通过不同的占空比组合,实现丰富的混色效果。

模块参数

工作电压DC 3.3 ~ 5V
工作温度-10°C ~ +50°C
输入信号PWM信号
尺寸32 x 23.8 x 16.9 mm
定位孔大小直径为 4.8 mm
接口间距为2.54 mm 4pin防反接口

模块原理图

RGB模块原理图

通过调节R、G、B、三个灯的PWM值,控制LED元件显示红光、绿光和蓝光的比例,从而控制RGB模块上LED显示不同颜色灯光。当设置的PWM值越大,对应显示的颜色比例越重。理论上来说,通过调节这3中颜色光的混合比例,可以模拟出所有颜色的灯光。

实验组件

ESP32 Plus主板
ESP32 Plus主板 x1
Keyes 共阴RGB模块
Keyes 共阴RGB模块 x1
XH2.54-4P 转杜邦线母单线
XH2.54-4P 转杜邦线母单线 x1
USB线
USB线 x1

模块接线图

RGB模块接线图

代码

# Pin用于控制引脚,PWM用于生成脉宽调制信号(调节LED亮度/颜色等)
from machine import Pin, PWM
from random import randint
import time

# 配置GPIO32、GPIO4和GPIO2的输出模式为PWM输出,PWM频率为10000Hz
pins = [32, 4, 2]

pwm0 = PWM(Pin(pins[0]),10000)
pwm1 = PWM(Pin(pins[1]),10000)
pwm2 = PWM(Pin(pins[2]),10000)

# 定义一个函数来设置RGBLED的颜色
def setColor(r, g, b):
    pwm0.duty(1023-r)
    pwm1.duty(1023-g)
    pwm2.duty(1023-b)

try:
    while True:
        red = randint(0, 1023)
        green = randint(0, 1023)
        blue = randint(0, 1023)
        setColor(red, green, blue)
        time.sleep_ms(200)
except:
    pwm0.deinit()
    pwm1.deinit()
    pwm2.deinit()

PWM参数说明

参数名作用取值/单位说明
PinPWM输出引脚Pin对象如 Pin(32, Pin.OUT)
freqPWM信号频率Hz如 1000、10000
duty占空比0~10230=全灭,1023=全亮

实验结果

按照接线图正确接好模块,用USB线连接到计算机上电,单击 运行按钮 来执行程序代码。代码开始执行,能看到模块上RGB LED开始随机显示颜色。

单击 停止按钮 或Ctrl+C退出程序

代码说明

代码说明
pins = [32, 4, 2]定义一个数组,这个数组是红灯、绿灯、蓝灯的引脚号。
pwm0 = PWM(Pin(pins[0]),10000)定义GP32脚为PWM输出并命名为pwm0,频率为10000Hz。
pwm0.duty(1023-r)设置占空比.
randint(a, b)randint(a,b)函数:生成一个[a,b]之间的随机整数。