Arduino RGB 颜色混合器 – 分步制作教程
项目简介
本教程将指导你制作一个 Arduino RGB 颜色混合器,通过三个电位器分别控制红、绿、蓝三通道的 PWM 输出,实现 1677 万种颜色(256³)的实时混合显示。适合初学者理解 RGB 颜色模型、模拟输入输出及 PWM 原理。
核心学习点
- RGB 加色混色原理与现代显示技术
- Arduino 模拟输入(读取电位器电压)与模拟输出(PWM 控制 LED 亮度)
- 电压分压电路设计与电位器接线
analogRead()、map()、analogWrite()函数的组合应用
硬件清单
| 组件 | 数量 | 规格/备注 |
|---|---|---|
| Arduino UNO | 1 | 或兼容板 |
| 面包板 | 1 | 标准半尺寸 |
| 公对公杜邦线 | 约 15 根 | 连接用 |
| 旋转电位器 | 3 | 建议 5kΩ 或 10kΩ |
| 330Ω 电阻 | 3 | 限流保护 LED(橙-橙-棕色环) |
| RGB LED(共阴极) | 1 | 或 RGB 模块 |
电路原理与接线
1. 电位器作为分压器
每个电位器两端分别接 5V 与 GND,中间滑动端接 Arduino 模拟输入引脚(A0/A1/A2)。旋转电位器改变分压比,输出 0-5V 电压供 ADC 采样(0-1023)。
接线建议:用橙色线表示 5V 电源,区分信号线;红/绿/蓝电位器分别接 A0/A1/A2。
2. RGB LED 接线
共阴极 RGB LED 的公共阴极接 GND,三个阳极分别经 330Ω 电阻连接 Arduino PWM 引脚(D9/D10/D11)。
关键提示:必须串联限流电阻,否则会烧毁 LED(作者曾因漏接电阻烧毁红光通道)。
3. 引脚分配表
| 功能 | Arduino 引脚 | 备注 |
|---|---|---|
| 红色电位器输入 | A0 | 模拟输入 |
| 绿色电位器输入 | A1 | 模拟输入 |
| 蓝色电位器输入 | A2 | 模拟输入 |
| 红色 PWM 输出 | D9 | ~ PWM 引脚 |
| 绿色 PWM 输出 | D10 | ~ PWM 引脚 |
| 蓝色 PWM 输出 | D11 | ~ PWM 引脚 |
代码实现
/* RGB LED 颜色混合器 - 电位器控制版
* 引脚定义:输入 A0/A1/A2,输出 D9/D10/D11
*/
int inRGB[] = { A0, A1, A2 }; // 电位器模拟输入引脚
int outRGB[] = { 9, 10, 11 }; // RGB LED PWM 输出引脚
int tempValue = 0;
const int inMinVal = 0, inMaxVal = 1023; // ADC 范围
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(inRGB[i], INPUT);
pinMode(outRGB[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 3; i++) {
tempValue = analogRead(inRGB[i]); // 读取电位器 (0-1023)
tempValue = map(tempValue, inMinVal, inMaxVal, 0, 255); // 映射到 PWM 范围
analogWrite(outRGB[i], tempValue); // 输出 PWM 控制亮度
}
}
代码逻辑解析
- 初始化:设置 3 组输入/输出引脚模式
- 主循环:依次处理 R/G/B 三通道
analogRead()读取 10 位 ADC 值(0-1023)map()线性映射至 8 位 PWM 范围(0-255)analogWrite()输出 PWM 波形驱动 LED
扩展与改进建议
- 添加按键切换模式:如呼吸灯、颜色循环、声音控制等
- 使用共阳极 RGB LED 时需修改逻辑(PWM 反相)
- 集成 OLED 显示当前 RGB 数值与十六进制颜色代码
- 改用 12 位 ADC(如 ADS1115)提升分辨率
- 设计 PCB 替代面包板,制作成成品调色灯
常见问题排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 某颜色通道不亮 | 电阻未焊接/引脚定义错误/LED 损坏 | 检查限流电阻、核对引脚、替换 LED |
| 颜色变化不连续 | 电位器接触不良/杜邦线松动 | 重新插拔、更换优质电位器 |
| 白平衡偏色 | 三通道 LED 光强不一致 | 软件端映射系数补偿、或选用匹配度高的 RGB LED |
项目资源
- 完整代码:GitHub 链接
- 原理图:见项目 Schematics 部分
- 元件采购:UTSOURCE 等电子元器件平台
制造工艺
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino RGB LED调色器:三电位器混色入门项目
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- Arduino + TEA5767 打造 FM 收音机:Nokia 5110 显频谱/信号强度/立体声
- Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里
- 动感音乐灯光秀 —— Arduino Nano 驱动 NeoPixel 打造新年视听盛宴
- 用 Arduino UNO 自制迷你钢琴 — 图文教程