欢迎光临
我们一直在努力

模拟部分-模拟信号输出

本例会使用Arduino Mega 或 Genuino Mega 板让12个LED一个接一个的进行亮度渐变。使用Mega的原因由于它有更多支持PWM操作的引脚。

硬件需求

Arduino Mega(UNO同样适用)

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); 

未经允许不得转载:Arduino-Maker » 模拟部分-模拟信号输出

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育