Loading...

Learning   Examples | Foundations | Hacking | Links

Examples > Control Structures

数组

本例是For循环的另外一种用法,展示了如何何用数组。数组是多个相同类型变量的集合。若把变量比作一个可以放东西的杯子,那么数组就可以认为是一个可以放多件物品的托盘,它像是把许多杯子串起来,每个杯子装同样多的物品。

For循环例子展示了如何点亮连在2到7脚的诸多LED,该例子有一定的限制条件(引脚必须是连号的,并且LED也必须被顺序点亮)。

下面的例子将告诉你怎么点亮一系列引脚上的LED,而这些引脚无须是顺序、连号的。为了达到这个目标,需要将引脚号放在数组里,然后使用for循环来遍历数组。

本例中依旧使用2-7脚来驱动LED,与for循环的例子一样,不过点亮的顺序将由数组中的值决定,而非物理顺序。

将引脚号放到数组里的操作完全是手动的,你可以随意更改它们的顺序。

所需硬件

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

电路图

将6个LED连上220欧姆电阻后,连至Arduino上的2-7脚。

点击图片放大浏览

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

示意图:

点击图片放大浏览

源代码

/*
  数组
 
 演示如何使用  一个数组来保存引脚号
 进而遍历该数组
 按数组保存的顺序点亮对应引脚上的LED,并反序
 
 与for循环例子里引脚号必须连号不一样,
 这里的引脚号可以随意排序
 
 电路图:
 * LED连到2-7脚后接GND
 
 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/Array
 */


int timer = 100;           // 数值越大,延时越慢
int ledPins[] = {
  2, 7, 4, 6, 5, 3 };       //LED连接的引脚号数组
int pinCount = 6;           // 引脚数量(数组长度)

void setup() {
  int thisPin;
  // 数组下标从0到(pinCount - 1).
  // 使用for循环来把引脚初始化为OUTPUT
  for (int thisPin = 0; thisPin < pinCount; thisPin++)  {
    pinMode(ledPins[thisPin], OUTPUT);      
  }
}

void loop() {
  // 从数组下标的最小值循环至最大值
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    // 引脚置为HIGH,点亮LED
    digitalWrite(ledPins[thisPin], HIGH);  
    delay(timer);                  
    // 引脚置为LOW,熄灭LED
    digitalWrite(ledPins[thisPin], LOW);    

  }

  // 从数组下标的最大值循环至最小值
  for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
    // 点亮LED
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
    // 熄灭LED
    digitalWrite(ledPins[thisPin], LOW);
  }
}

See Also:

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

  • For Loop - 在一个for循环里控制多个LED
  • While Loop - 当按钮按下时,使用While循环校准传感器。
  • Switch Case - 在多个离散值中选择执行,类似执行多个if语句。此例演示了如何把传感器的值分成四类,根据不同的类别执行对应的操作。