Loading...

Learning   Examples | Foundations | Hacking | Links

Examples > Control Structures

For循环(霹雳游侠)

经常需要遍历一系列的引脚以对每个引脚进行处理工作,如此例中,使用for()循环遍历数字脚的2-7脚来驱动引脚上连接的LED。这些LED被digitalWrite()delay() 函数控制着依次点亮和熄灭。

我们也叫这个例子为“霹雳游侠”" 以此纪念80年代的电视剧,此剧中David Hasselhoff拥有一部由人工智能KITT控制驾驶的Pontiac。该车装上了大量的LED来展示各种耀眼的特效,特别是用来显示KITT和KARR激烈斗争的来回扫描的特效。本例展示了KITT的显示效果。

所需硬件

  • Arduino板
  • (6) 220欧姆电阻
  • (6) LEDs
  • 连接导线
  • 面包板

电路图

将6个LED分别连上220欧姆的电阻,然后接到Arduino的2-7脚。

点击图片放大浏览

使用Fritzing设计此图。请前往Fritzing项目主页寻找更多电路图样例。

示意图

点击图片放大浏览

源代码

下面的代码从for()循环开始,将2-7脚设为OUTPUT模式,以驱动6个LED。

在主循环中,使用了两个for()循环来一步一步地控制LED。当7脚上的LED被点亮后,循环将从头开始,周而复始。

/*
  For循环
 
  演示for循环的使用方法。
  依次点亮LED,周而复始。
 
  电路:
  * LED接2脚至7脚,然后接地
 created 2006
 by David A. Mellis
 modified 30 Aug 2011
 by Tom Igoe

This example code is in the public domain.
 
 http://arduino.cc/en/Tutorial/ForLoop
 */


int timer = 100;           // 数值越高,点亮时间越长

void setup() {
  // 使用for循环来初始化2-7脚为OUTPUT。
  for (int thisPin = 2; thisPin < 8; thisPin++)  {
    pinMode(thisPin, OUTPUT);      
  }
}

void loop() {
  // 从最小的脚循环到最大的脚
  for (int thisPin = 2; thisPin < 8; thisPin++) {
    // 将引脚置为HIGH,点亮LED
    digitalWrite(thisPin, HIGH);  
    delay(timer);                  
    // 将引脚置为LOW,熄灭LED
    digitalWrite(thisPin, LOW);    
  }

  // 从最大的引脚循环到最小的脚
  for (int thisPin = 7; thisPin >= 2; thisPin--) {
    // 将引脚置为HIGH,点亮LED
    digitalWrite(thisPin, HIGH);
    delay(timer);
    // 将引脚置为LOW,熄灭LED
    digitalWrite(thisPin, LOW);
  }
}

参考:

  • for()
  • digitalWrite()
  • delay()

  • WhileLoop - 当按钮按下时,使用While循环校准传感器。
  • SwitchCase - 在多个离散值中选择执行,类似执行多个if语句。此例演示了如何把传感器的值分成四类,根据不同的类别执行对应的操作。
  • Array: For循环的另一种实现,演示如何使用数组。