零基础学ESP32:RGB彩色灯珠——让世界“色”彩斑斓!
前面我们点亮过单颗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 | 说明 |
|---|---|---|
| V | 3.3V | 公共正极 |
| R | GPIO5 | 红色控制(PWM) |
| G | GPIO19 | 绿色控制(PWM) |
| B | GPIO18 | 蓝色控制(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)
效果: 红→渐暗→亮→绿→渐暗→亮→蓝→渐暗→亮……循环往复,色彩像呼吸一样柔和变化!
核心逻辑:
- 对每个颜色通道(R、G、B)分别控制
- 每个通道从全亮到全灭再从全灭到全亮循环
- 三个通道交替进行 → 产生梦幻的渐变色效果!
第六步:保存运行,看炫彩效果!

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

RGB灯珠能做什么?
| 应用场景 | 用途 |
|---|---|
| 氛围灯 | 桌面氛围灯、卧室氛围照明 |
| 智能家居 | 变色智能灯泡,手机APP控制 |
| 舞台灯光 | 小型演出、派对灯光效果 |
| 电脑MOD | 机箱灯带、风扇灯效 |
| 创意DIY | 彩色灯光互动装置、艺术装置 |
| 状态指示灯 | 红色=警告,绿色=正常,蓝色=充电 |
颜色值速查表
| 颜色 | R | G | B |
|---|---|---|---|
| 红色 | 255 | 0 | 0 |
| 绿色 | 0 | 255 | 0 |
| 蓝色 | 0 | 0 | 255 |
| 黄色 | 255 | 255 | 0 |
| 青色 | 0 | 255 | 255 |
| 品红 | 255 | 0 | 255 |
| 白色 | 255 | 255 | 255 |
| 橙色 | 255 | 165 | 0 |
| 粉色 | 255 | 192 | 203 |
全程回顾
| 步骤 | 操作 | 效果 |
|---|---|---|
| 找到课程 | 文档→课程→ESP32+MicroPython→RGB灯珠 | 了解RGB灯珠 |
| 认识原理 | 三基色混合 + 共阳极取反 | 理解颜色控制逻辑 |
| 动手接线 | V→3.3V, R→GPIO5, G→GPIO19, B→GPIO18 | 硬件就位 |
| 打开代码 | 点击“打开”按钮 | 代码进入编辑器 |
| 运行指定颜色 | 运行代码1 | 灯珠显示指定颜色 |
| 运行呼吸效果 | 运行代码2 | 灯珠呼吸变色! |
如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好相关配件,跟着课件走一遍。
有任何问题或建议,欢迎在评论区留言告诉我们。
更多推荐



所有评论(0)