前面我们点亮过单颗LED(只有开和关)、玩过呼吸灯(慢慢亮慢慢灭),但它们的颜色始终是单一的。今天,我们要玩点更炫酷的——RGB彩色灯珠

一颗小小的灯珠里,集成了红(R)、绿(G)、蓝(B) 三种颜色的发光芯片。通过控制三种颜色的亮度组合,就能调出任意颜色——红色、绿色、蓝色、黄色、紫色、粉色……你想要什么颜色,它就能变出什么颜色!

舞台灯光、电脑机箱灯效、智能家居氛围灯、炫酷DIY作品……彩色灯珠的应用无处不在。今天这节课,我们就用ESP32控制RGB灯珠,让世界色彩斑斓!

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 “文档”,在 “课程” → “ESP32 + MicroPython” 分类下,找到彩色RGB灯珠

在这里插入图片描述

打开课件,你会看到本节课的最终效果:RGB灯珠在红、绿、蓝之间渐变循环,色彩变化如呼吸般柔和流畅,非常炫酷!

在这里插入图片描述

第二步:什么是RGB彩色灯珠?

RGB灯珠内部集成了三颗独立的LED芯片:红色(R)、绿色(G)、蓝色(B)。通过调节三者的亮度比例,可以混合出各种颜色。

三基色原理:

组合结果
红色 + 绿色黄色
红色 + 蓝色品红
绿色 + 蓝色青色
红色 + 绿色 + 蓝色白色
全部熄灭黑色

本节课用的是共阳极RGB灯珠

在这里插入图片描述

引脚说明:

引脚颜色说明
V公共正极接电源正极(3.3V或5V)
R红色控制红色亮度(低电平亮)
G绿色控制绿色亮度(低电平亮)
B蓝色控制蓝色亮度(低电平亮)

💡 共阳极原理: V接正极,RGB引脚接负极(GND)时对应的颜色亮起。所以控制信号输出0(低电平)时亮,输出1(高电平)时灭。代码中需要取反计算。

第三步:动手接线

RGB灯珠有4个引脚:

灯珠引脚连接ESP32说明
V3.3V公共正极
RGPIO5红色控制(PWM)
GGPIO19绿色控制(PWM)
BGPIO18蓝色控制(PWM)

在这里插入图片描述

第四步:代码1——显示指定颜色

要控制LED亮度,必须使用PWM(脉冲宽度调制)。通过调节占空比,可以实现0~100%的亮度调节。

from machine import Pin, PWM
import time

# 创建引脚对象
led_r = Pin(5, Pin.OUT)
led_b = Pin(18, Pin.OUT)
led_g = Pin(19, Pin.OUT)

# 创建PWM对象
pwm_led_r = PWM(led_r)
pwm_led_r.freq(1000)
# 注意,占空比如果设置为1023可以理解为全部是高电平,0表示全部是低电平,又因为对应LED引脚输出0即低电平才量,所以要用1023减去
pwm_led_r.duty(1023 - int(255 / 255 * 1023))  

pwm_led_g = PWM(led_g)
pwm_led_g.freq(1000)
pwm_led_g.duty(1023 - int(206 / 255 * 1023))

pwm_led_b = PWM(led_b)
pwm_led_b.freq(1000)
pwm_led_b.duty(1023 - int(70 / 255 * 1023))

print("sleep 1...")     
time.sleep(1)

关键点——共阳极取反:

因为共阳极RGB灯珠是低电平亮,所以代码中要将亮度值取反:

实际占空比 = 1023 - (亮度值 / 255 × 1023)

亮度值占空比灯珠状态
255(最亮)0最亮(持续输出低电平)
0(最暗)1023熄灭(持续输出高电平)
128(中间)约512半亮

第五步:代码2——变化的颜色呼吸灯

指定颜色只是第一步,让颜色自动变化才是真正的炫酷!

from machine import Pin, PWM
import time

# 创建引脚对象
led_r = Pin(5, Pin.OUT)
led_b = Pin(18, Pin.OUT)
led_g = Pin(19, Pin.OUT)

# 创建PWM对象
pwm_led_r = PWM(led_r)
pwm_led_r.freq(1000)
# 注意,占空比如果设置为1023可以理解为全部是高电平,0表示全部是低电平,又因为对应LED引脚输出0即低电平才量,所以要用1023减去
pwm_led_r.duty(1023 - int(255 / 255 * 1023))  

pwm_led_g = PWM(led_g)
pwm_led_g.freq(1000)
pwm_led_g.duty(1023 - int(206 / 255 * 1023))

pwm_led_b = PWM(led_b)
pwm_led_b.freq(1000)
pwm_led_b.duty(1023 - int(70 / 255 * 1023))

print("sleep 1...")     
time.sleep(1)

# ------------ 添加如下代码 ---------------
pwm_led_r.duty(1023)
pwm_led_g.duty(1023)
pwm_led_b.duty(1023)

# 创建列表,存储pwm对象
leds = [pwm_led_r, pwm_led_g, pwm_led_b]

while True:
    for led_pwm_obj in leds:
        for i in range(1023, -1, -1):
            led_pwm_obj.duty(i)
            time.sleep_ms(1)
        for i in range(1024):
            led_pwm_obj.duty(i)
            time.sleep_ms(1)
        led_pwm_obj.duty(1023)

效果: 红→渐暗→亮→绿→渐暗→亮→蓝→渐暗→亮……循环往复,色彩像呼吸一样柔和变化!

核心逻辑:

  1. 对每个颜色通道(R、G、B)分别控制
  2. 每个通道从全亮到全灭再从全灭到全亮循环
  3. 三个通道交替进行 → 产生梦幻的渐变色效果!

第六步:保存运行,看炫彩效果!

在这里插入图片描述

点击运行按钮,RGB灯珠开始呼吸变色——红→绿→蓝→红……色彩过渡平滑,如彩虹般绚丽!

在这里插入图片描述

RGB灯珠能做什么?

应用场景用途
氛围灯桌面氛围灯、卧室氛围照明
智能家居变色智能灯泡,手机APP控制
舞台灯光小型演出、派对灯光效果
电脑MOD机箱灯带、风扇灯效
创意DIY彩色灯光互动装置、艺术装置
状态指示灯红色=警告,绿色=正常,蓝色=充电

颜色值速查表

颜色RGB
红色25500
绿色02550
蓝色00255
黄色2552550
青色0255255
品红2550255
白色255255255
橙色2551650
粉色255192203

全程回顾

步骤操作效果
找到课程文档→课程→ESP32+MicroPython→RGB灯珠了解RGB灯珠
认识原理三基色混合 + 共阳极取反理解颜色控制逻辑
动手接线V→3.3V, R→GPIO5, G→GPIO19, B→GPIO18硬件就位
打开代码点击“打开”按钮代码进入编辑器
运行指定颜色运行代码1灯珠显示指定颜色
运行呼吸效果运行代码2灯珠呼吸变色!

如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好相关配件,跟着课件走一遍。

有任何问题或建议,欢迎在评论区留言告诉我们。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐