Arduino RGB 混色器
组件和用品
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 3 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 3 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
应用和在线服务
![]() |
|
关于这个项目
这是给谁的? :这个 RGB LED 颜色混合器项目非常适合热衷于尝试构建交互式小工具的 Arduino 初学者用户,这不仅有趣且易于制作,而且对于使用 RBG 颜色的任何人(例如艺术家、网络)都有用开发人员和交互式照明控制器。
有什么作用: 这个简单的电路结合了三个电位器,用于设置 RGB LED 内每个红色、绿色和蓝色 LED 的亮度。
按钮开关增加了一个额外的功能来打开和关闭电路。
我该如何构建它? 按照原理图接线。 RGB LED 连接到 Arduino 上的 PMW 引脚 9、10 和 11。按钮连接到引脚 7,3 个电位器连接到 A0、A1 和 A2。请记住在按钮的接地连接上添加一个 10K 欧姆的上拉电阻。有关其工作原理的解释,请在此处查看 https://playground.arduino.cc/CommonTopics/PullUpDownResistor
还要确保在 LED 和输出引脚之间连接 3 220 ohm 电阻,这将确保您的 LED 不会烧坏。
每个电位器的值都打印到串口监视器上,所以如果你摆弄 LED 并找到你喜欢的颜色,你可以记录下 RGB 值以备后用。
连接好电路并上传草图后,尝试转动电位计上的旋钮。在你按下按钮之前,一开始什么都不应该发生。现在再次尝试转动旋钮。 LED 现在应该亮了。是时候玩光了!请记住,RGB 灯不像混合颜料。当所有电位器都全开时,灯应该是白色的。尝试将电位计中的一个保持关闭或非常低,并改变另外两个。
这个项目的一个扩展是为你喜欢的特定颜色硬编码一些 RBG 值,并添加一些更多的按钮,当按下时,会将 RGB LED 设置为这些颜色。如果您尝试这样的扩展程序,请随时分享代码!
享受!
代码
- RGB 混色器
RGB 混色器C/C++
int blue =9; //为LED的每种颜色定义数字引脚int green =10;int red =11;int redPot =A0;int greenPot =A1; //为3个电位器定义模拟引脚int bluePot =A2;int greenVal =0; //创建一个变量来存储每个电位器的状态int blueVal =0;int redVal =0;const int BUTTON =7; //定义按钮 Pinint state =0; //创建一个变量来存储按钮是打开还是关闭 val =0; //创建一个变量来存储按钮的瞬时状态int old_val =0; // 创建一个变量来存储 buttonvoid setup() 的前一个状态 { // 把你的设置代码放在这里,运行一次: pinMode(green, OUTPUT); //设置 LED 为输出,按钮为输入 pinMode(blue, OUTPUT); pinMode(红色,输出); pinMode(按钮,输入); Serial.begin(9600);}void loop() { // 把你的主要代码放在这里,重复运行:Serial.begin(9600); //在 9600 波特处打开串行监视器 val =digitalRead(BUTTON); // 检查按钮状态 if ((val ==HIGH) &&(old_val ==LOW)) { //检查按钮状态是否改变 state =1 - state; //将按钮设置为开(1)或关(0)延迟(10); } old_val =val; // 通过循环保存上一次按钮读数以供下次比较 greenVal =analogRead(greenPot); //读取电位器的位置 blueVal =analogRead(bluePot); redVal =模拟读取(redPot); if (state ==1) { //如果按钮是打开的,根据位置analogWrite(green, greenVal / 4)设置每个LED的状态; //其对应的电位器。 Anolog 输入范围从 0-1023,analogWrite(blue, blueVal / 4); // 而模拟输出为 PMW 可以是 0-255。因此我们必须analogWrite(red, redVal / 4); // 将电位计读数除以 4 以正确设置状态 Serial.print("RGB("); Serial.print(redVal/4); Serial.print(","); Serial.print(greenVal/4); Serial.print(","); Serial.print(blueVal/4); //打印 RGB 代码,可在任何 RGB 应用程序中重用 Serial.println(")");延迟(50); } else { // 如果按钮关闭,将所有 LED 设置为低/关闭模拟写入(绿色,0);模拟写入(蓝色,0);模拟写入(红色,0);延迟(50); }}
示意图

制造工艺