这个例子使用OCROBOT MEGA2560使12颗LED依次产生渐变效果。
在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); } }