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越暗。
在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防反接口 |
模块原理图
通过调节R、G、B、三个灯的PWM值,控制LED元件显示红光、绿光和蓝光的比例,从而控制RGB模块上LED显示不同颜色灯光。当设置的PWM值越大,对应显示的颜色比例越重。理论上来说,通过调节这3中颜色光的混合比例,可以模拟出所有颜色的灯光。
实验组件
ESP32 Plus主板 x1
Keyes 共阴RGB模块 x1
XH2.54-4P 转杜邦线母单线 x1
USB线 x1
模块接线图
代码
# 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参数说明
参数名 | 作用 | 取值/单位 | 说明 |
Pin | PWM输出引脚 | Pin对象 | 如 Pin(32, Pin.OUT) |
freq | PWM信号频率 | Hz | 如 1000、10000 |
duty | 占空比 | 0~1023 | 0=全灭,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]之间的随机整数。 |