0°

Arduino内置教程-模拟-PWM模拟输出

这个例子利用板上的数字引脚的PWM数目优势,使在Arduino或者Genuino Mega开发板上的12个LED灯一个接一个变暗和变亮。

简介

这个例子利用板上的数字引脚的PWM数目优势,使在Arduino或者Genuino Mega开发板上的12个LED灯一个接一个变暗和变亮。

硬件要求

  • Arduino 或者 Genuino Mega开发板
  • 12 Red LED灯
  • 12 220 ohm 电阻
  • 连接线
  • 面包板

电路

Arduino内置教程-模拟-模拟写入Mega

把12个LED灯的长脚(正极或者阳极)通过220 ohm限流电阻连接到数字引脚pin2-13。连接短腿(负极或阴极)到地。

原理图

Arduino内置教程-模拟-模拟写入Mega

样例代码

  • 在以下程序的setup()函数里,for()循环用来分配Mega板上的数字引脚pin2-13的输出。
  • 然后,在下面的loop()函数里,用上for()循环三重嵌套。
  • 三个循环的第一个循环
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) 
  • LED灯从最低位到最高一个接一个地移动。在这个循环允许从一个引脚移到下一个前,两件事必须完成。第一件是你使特定的LED灯通过这些代码变亮:
for (int brightness = 0; brightness < 255; brightness++) { analogWrite(thisPin, brightness); delay(2); } 
  • 伴随上面的每次循环,变量brightness增加到一点,然后这个值写入到主循环里被选中当前引脚。当引脚达到PWM值(255),进入到下面的循环:
for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(thisPin, brightness); delay(2); } 
  • 这个循环使brightness变量每次减去一点,使LED灯逐渐变暗直至0。一旦达到0,就会进入主循环的for循环,并且程序会移动到下一个LED灯,重复上面的步骤。
// These constants won't change.  They're used to give names
// to the pins used:
const int lowestPin = 2;
const int highestPin = 13;


void setup() {
  // set pins 2 through 13 as outputs:
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}

void loop() {
  // iterate over the pins:
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    // fade the LED on thisPin from off to brightest:
    for (int brightness = 0; brightness < 255; brightness++) {
      analogWrite(thisPin, brightness);
      delay(2);
    }
    // fade the LED on thisPin from brithstest to off:
    for (int brightness = 255; brightness >= 0; brightness--) {
      analogWrite(thisPin, brightness);
      delay(2);
    }
    // pause between LEDs:
    delay(100);
  }
}
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论