## **数组**
> 本例中我们使用for循环配合一个数组变量向你展示Arduino中数组的使用。数组是一个有多个”部分”的变量。如果我们把普通变量看做一个盛装值的“杯子”,那么数组就好像是一个“制冰器”。数组就好像是一连串“杯子”,每个杯子都可以存储一个值(不过这些值要为相同类型)。
之前使用**for**循环的例子会对Arduino或Genuino板上2号到7号引脚的LED进行操作,不过有一些限制:LED的引脚必须是连续的,否则就无法完成按照要求一个接一个的亮起。
而在本例中,我们会向你展示如何让无序的LED灯一个接一个的亮起。为了做到这一点,你需要将引脚的编号放置在一个数组里,然后再for循环中迭代这个数组。(原来是让一个变量自加来达到引脚编号的切换,而本例是按照有引脚编号的数组进行迭代操作。)
本例使用了6个LED,分别通过220Ω电阻连接到板子上的2-7引脚。不过,LED亮起的顺序是由数组中定义的先后顺序决定的,因而不一定是2-7(把引脚编号放入数组其实是很简单的,下面你就会看到,不过要注意,数组元素序号是从0开始的,而且数组的容量是固定的而非可变的)。你可以任意调整引脚顺序,不连续的引脚也可以。只要你在数组中将你连接的LED定义进去就可以了。
### **所需硬件**
* Arduino板或Genuino板
* 6个LED
* 6个220Ω电阻
* 跳线
* 面包板
* 连接线
### **电路**
将六个LED用220Ω电阻分别连接到2-7引脚。
![图片来自官网](http://img.blog.csdn.net/20160523135119018)
### **原理图**
![图片来自官网](http://img.blog.csdn.net/20160523135101298)
### **代码**
~~~
/*
数组
展示让无序的LED一个接一个按顺序亮起的方法。灯会按照顺序先从数组头
的亮到数组尾,然后反过来由尾到头。
和从前例子不同的是,本例的LED不是必须连续的。你可以任意改变LED连
接的引脚和顺序。只要在数组中定义即可。
电路连接:
* LED从2号引脚连接到GND
代码公开
*/
int timer = 100; // 数字越大间隔时间越长
int ledPins[] = {2, 7, 4, 6, 5, 3}; // LED引脚编号数组
int pinCount = 6; // 引脚个数(应和LED引脚编号数组相同)
void setup() {
// 数组元素取出时应该是从0开始到pinCount - 1结束。(数组元素是从0开始编号的)
//用for循环初始化引脚:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
// 从第零个到最后一个:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// 给引脚输出高电平:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// 将引脚输出低电平:
digitalWrite(ledPins[thisPin], LOW);
}
// 从最后一个到第零个:
for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
// 给引脚输出高电平:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// 将引脚输出低电平:
digitalWrite(ledPins[thisPin], LOW);
}
}
~~~
### **相关资料**
[pinMode()](https://www.arduino.cc/en/Reference/PinMode)
[digitalWrite()](https://www.arduino.cc/en/Reference/DigitalWrite)
[for()](https://www.arduino.cc/en/Reference/For)
[delay()](https://www.arduino.cc/en/Reference/Delay)
- 说明
- 系统示例文件目录结构及说明
- 01.Basics
- AnalogReadSerial
- BareMinimum
- Blink
- DigitalReadSerial
- Fade
- ReadAnalogVoltage
- 02.Digital
- BlinkWithoutDelay
- Button
- Debounce
- DigitalInputPullup
- StateChangeDetection
- toneKeyboard
- toneMelody
- toneMultiple
- tonePitchFollower
- 03.Analog
- AnalogInOutSerial
- AnalogInput
- AnalogWriteMega
- Calibration
- Fading
- Smoothing
- 04.Communication
- ASCIITable
- Dimmer
- Graph
- Midi
- MultiSerial
- PhysicalPixel
- ReadASCIIString
- SerialCallResponse
- SerialCallResponseASCII
- SerialEvent
- SerialPassthrough
- VirtualColorMixer
- 05.Control
- Arrays
- ForLoopIteration
- IfStatementConditional
- switchCase
- switchCase2
- WhileStatementConditional
- 06.Sensors
- ADXL3xx
- Knock
- Memsic2125
- Ping
- 07.Display
- barGraph
- RowColumnScanning
- 08.Strings
- CharacterAnalysis
- StringAdditionOperator
- StringAppendOperator
- StringCaseChanges
- StringCharacters
- StringComparisonOperators
- StringConstructors
- StringIndexOf
- StringLength
- StringLengthTrim
- StringReplace
- StringStartsWithEndsWith
- StringSubstring
- StringToInt
- 09.USB
- Keyboard
- KeyboardLogout
- KeyboardMessage
- KeyboardReprogram
- KeyboardSerial
- KeyboardAndMouseControl
- Mouse
- ButtonMouseControl
- JoystickMouseControl
- 10.StarterKit_BasicKit (与特定硬件相关,暂无)
- p02_SpaceshipInterface
- p03_LoveOMeter
- p04_ColorMixingLamp
- p05_ServoMoodIndicator
- p06_LightTheremin
- p07_Keyboard
- p08_DigitalHourglass
- p09_MotorizedPinwheel
- p10_Zoetrope
- p11_CrystalBall
- p12_KnockLock
- p13_TouchSensorLamp
- p14_TweakTheArduinoLogo
- p15_HackingButtons
- 11.ArduinoISP(暂无)
- ArduinoISP