用户工具

站点工具


learing:examples:analogwritemega

OCROBOT MEGA2560上12颗LED的模拟输出

这个例子使用OCROBOT MEGA2560使12颗LED依次产生渐变效果。

MEGA2560

硬件要求

  • OCROBOT MEGA2560控制器
  • 12个LED
  • 1个220欧姆电阻
  • 连接线
  • 面包板
  • 导线

在LED长脚的一端串联一个220欧姆限流电阻到控制器数字口2-13,短的脚接地。

原理图

代码

在setup()中for()的使用是为了分配MEGA2560的2到13号数字引脚为输出。 然后接下来又嵌套了三个for语句。第一个

for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++)

依次从最小的数字口的LED到最大的数字口的LED变换,这个循环中,移动引脚到下一个之前,两件事情被完成,第一,通过下面的代码点亮单独的LED。

for (int brightness = 0; brightness < 255; brightness++) {
      analogWrite(thisPin, brightness);
      delay(2);
}

每循环一次,亮度变量增加一点,这个亮度值对应当前的引脚。当俩都到了最大值,就开始下面的循环

for (int brightness = 255; brightness >= 0; brightness--) {
      analogWrite(thisPin, brightness);
      delay(2);
}

这个循环减小亮度变量,渐渐熄灭LED。当到达零值的时候,主要的for循环开始工作,程序移到下一个引脚,重复上面所有的步骤

/*
  Mega analogWrite() test
 使数字引脚2-13的LED产生渐变效果
  这个例子适用于arduinoMEGA,不适用于以前的板子
*/
// 常量定义引脚
const int lowestPin = 2;
const int highestPin = 13;
 
 
void setup() {
  // 设置为输出:
  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
    pinMode(thisPin, OUTPUT); 
  }
}
 
void loop() {
  // 遍历引脚:
  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
    // 使这个引脚从渐变灭到渐变亮
    for (int brightness = 0; brightness < 255; brightness++) {
      analogWrite(thisPin, brightness);
      delay(2);
    } 
    //使这个引脚从渐变亮到渐变灭
    for (int brightness = 255; brightness >= 0; brightness--) {
      analogWrite(thisPin, brightness);
      delay(2);
    } 
    // 延时:
    delay(100);
  }
}
learing/examples/analogwritemega.txt · 最后更改: 2017/04/07 10:03 (外部编辑)