Arduino 混色器
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
Arduino 混色器
本教程非常简单,需要一点 Arduino 和电子知识 ,如果您不熟悉 Arduino,我将提供链接以指导您完成本教程。
在本教程中,我们将生成所有可能的颜色,您只需稍加改动即可看到。它还将让您看透RGB 颜色模型 并了解当今的显示器是如何工作的。
我们还将使用 Arduino 模拟输入/输出 (在教程后面称为 I/O)并将学习如何在 Arduino 引脚上读取和写入模拟电压。
这是我第一次尝试电路(前段时间,它在增加底池值时出现了一个小问题,但后来我解决了。)
1-1 组件
- Arduino 板(我使用的是 Arduino Uno)
- 面包板
- 男女跳线(约 15 人)
- 3 * 电位器(我使用的是 5K 电位器。)
- 3 * 330 欧姆电阻器(橙色 - 橙色 - 棕色)
- RGB LED(RGB 模块也可以)
- 安装了 Ardiuno IDE 的 PC,用于对 Arduino 进行编程
让我们滚吧!
混色器背后的想法是,Arduino 在 RGB LED 引脚上输出一个相对于模拟输入上电位计输入电压的电压。
1-2 连接锅。
锅将是我们的分压器电路,其中 Vout 是 Arduino 引脚
简而言之,它将可调节的电压量(通过旋转转子改变)转换为 Arudino 模拟输入引脚 (Vout),此链接进一步解释了该主题。
如图所示连接电位器,在 5v 或 GND 上连接外部端子根本无关紧要,最重要的连接是中间端子,它连接到模拟输入引脚。
您从 Arduino 引脚获得 5v 和 GND。
我使用橙色作为 5v(而不是红色)以便更容易区分电源线和信号线
对每种颜色的 3 个盆重复此连接。
我想尽可能保持连接整洁,所以我将连接 A0 上的红色、A1 上的绿色和 A2 上的蓝色的锅。
1-3 连接RGB LED
RGB LED 使用与传统 LED(二极管)相同的概念,神奇之处在于它包含 3 个并排的 LED,当这些 LED 发出的光落在您的视网膜上时,它们代表不同的颜色,因为您将它们视为单一组合颜色。
由于每个 PWM 输出有 256 个值和代表红绿蓝的 3 个引脚,因此我们总共有 256 * 256 * 256 种颜色,即 16,777,216 种颜色(近 1700 万种)。
RGB LED 的连接方式与连接普通 LED 的方式相同,但重复工作 3 次。
最终的输出应该是这样的,我在输入和输出引脚的最低引脚编号上连接了红色值,只是为了代码简单。
不要忘记连接 330 欧姆电阻,因为我犯了这个错误并且我的红色 LED 被烧坏了电力不会做太多工作来烧毁 LED,所以要小心。
现在我们有了一个完整的电路,代码真的是那么简单明了。
让我们编码
Arduino 的代码以顺序方式完成这些简单的任务。
在设置
- 设置3个模拟输入引脚的模式为输入
- 设置3个pwm(模拟输出)引脚的模式为输出
在循环中
- 读取底池的价值。使用analogRead函数
- 使用映射将模拟引脚的值映射到匹配的 PWM 值
- 功能
- 使用analogWrite函数将PWM值写入模拟引脚
代码在下方。
我的最终输出不要忘记我烧了红色 LED :\ -它连接在第一个锅上-
现在您拥有了 1700 万种颜色的终极色彩生成器!恭喜!!
如果您喜欢,请尊重并分享该项目:) 您可以在 utsource.net 上购买电子元件
查看我关于使用 1Sheeld 制作两轮驱动机器人的其他教程。
代码
- RGB LED 游戏代码
RGB LED 游戏代码Arduino
根据 outRGB 阵列中的引脚连接 LED 引脚和根据 inRGB 阵列的传感器引脚连接/* 使用每种颜色的电位器控制 RGB LED 名称:RGBLedPot.ino 创建时间:17/2/16 9:47:03 AM作者:Ahmed Hamdy GNUPL 3.0+*/// setup 函数在你按下 reset 或给 board 供电时运行一次int inRGB[] ={ A0,A1,A2 }; // 读取电位器值的模拟输入int outRGB[] ={ 9,10,11 }; // PWM 输出引脚来控制 RGB LEDint tempValue =0 中每种颜色的亮度; // Placeholderconst int inMinVal =0, inMaxVal =1023; // 定义从电位计读数返回的最大值和最小值的值void setup() { // 在所有引脚上循环(3 个值:红色、绿色和蓝色) for (int i =0; i <3; i++) { pinMode (inRGB[i], 输入); // 准备这些引脚以读取电位计值 pinMode(outRGB[i], OUTPUT); // 准备这些引脚以输出 RGB LED 的值 }}// 循环函数一遍又一遍地运行,直到断电或 resetvoid loop() { // 对每种颜色重复以下操作 for (int i =0; i <3; i++) { tempValue =analogRead(inRGB[i]); // 读取电位器 // 将电位器读数 (0 ~ 1023 ) 缩小到有效的 PWM 值 // 0 ~ 255 表示 Arduino PWM 输出的范围 tempValue =map(tempValue, inMinVal, inMaxVal, 0, 255); // 在 pin 上写入输出 analogWrite(outRGB[i], tempValue); }}
示意图
制造工艺