模拟信号输出[Mega]
本例会使用Arduino Mega 或 Genuino Mega 板让12个LED一个接一个的进行亮度渐变。使用Mega的原因由于它有更多支持PWM操作的引脚。
完成本例所需要的硬件
- Arduino Mega 或 Genuino Mega 板
- 12个红色LED
- 12个220Ω电阻
- 跳线
- 面包板
- 杜邦线/电路连接线
电路连接
将12个LED的阳极(长脚)通过220Ω限流电阻分别连接到2-13号引脚。将12个LED的阴极(短脚)连接到GND。
原理图
例程代码
在setup()函数中使用了一个for()循环来给2-13号引脚设置工作模式为OUTPUT。.
接着在loop()函数中,有一个嵌套的for循环。
最外层循环是:
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++)
最外层循环会遍历所有的LED。在最外层循环切换到下一个LED之前,还需要做两件事。
- 第一:你需要将当前LED逐渐点亮
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite(thisPin, brightness);
delay(2);
}
- 第二:你需要让当前LED逐渐熄灭
这个循环每过一次,brightness变量值+1,并且这个值会被写到引脚。当brightness达到最高的PWM值255时,下面的循环开始执行:
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(thisPin, brightness);
delay(2);
}
这个循环减少brightness变量值,这会将LED亮度减低到0。当brightness值为0时,最外层for循环继续循环执行。下一个LED就会重复上述过程。
/*
模拟信号输出[Mega]
这个例子让2-13号引脚连接的LED一个接一个的渐变。
本例子运行在Arduino Mega板,之前的板子不可用。
电路连接:
* LED分别从2到13连接到GND
代码是公开的。
*/
//常量,用来定义引脚范围
const int lowestPin = 2;
const int highestPin = 13;
void setup() {
//设置2号引脚到13:
for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// 迭代遍历所有引脚:
for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
//让LED渐亮:
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite(thisPin, brightness);
delay(2);
}
//让LED渐暗:
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(thisPin, brightness);
delay(2);
}
// 在LED渐变之间delay:
delay(100);
}
}
相关资料
模拟信号与串口: 从模拟信号输入引脚读取一个值,然后用这个值控制LED小灯
模拟信号输入: 使用电位器来控制LED的闪烁。
模拟信号输出[Mega]: 使用Arduino Mega板让12个LED一个接一个亮度逐渐减弱。
模拟信号的校准: 设置传感器输出模拟信号的最大、最小值来达到预期效果。
LED亮度渐隐:使用脉宽引脚(PWM pin)来让一个LED的亮度渐弱。
信号平滑:让多个模拟引脚的输入值变得更加均匀平滑。
更新进程
日期 | 日志 | 译者 |
---|---|---|
2016年5月9日 | 创建并翻译文档 | 唐家勋 |
译者:唐家勋
邮箱:[email protected]
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
时间: 2024-10-15 05:33:01