## **For循环迭代(霹雳游侠)**
> 你可能经常需要对一系列引脚进行**迭代**,来实现对这些引脚逐个进行操作。例如:本例中使用for循环来让连接到Arduino/Genuino板2-7号引脚的6个LED逐个、来回地点亮、熄灭(开始由2-7,后来由7-2)。LED的开关通过使**digitalWrite()**和**delay()**来实现。
本例的另一个名字叫做 “**霹雳游侠**“(Knight Rider)。霹雳游侠是80年代的一个电视剧,在剧中,David Hasselhoff 拥有一套人工智能系统 KITT 来驾驶他的Pontiac跑车。片方在他的Pontiac跑车上装配了很多不同形状和尺寸的LED来打造一种科幻效果。更值得一提的是:跑车有一个炫酷的显示屏,显示屏上有一组线性排列的LED灯来回闪烁。感兴趣朋友可以看看这一条视频:[KITT与KARR的战斗](https://www.youtube.com/watch?v=PO5E5mQIy_Q)。本例的创作灵感就源于KITT的显示屏。
![图片来自维基百科](http://img.blog.csdn.net/20160524090446233)![图片来自维基百科](http://img.blog.csdn.net/20160524090504734)
### **所需硬件**
* Arduino板或Genuino板
* 6个220Ω电阻
* 6个LED
* 跳线
* 面包板
* 连接线
### **电路**
![图片来自官网](http://img.blog.csdn.net/20160524131339049)
将六个LED分别串接一个220Ω电阻,连接到Arduino板上的2-7引脚。
### **原理图**
![图片来自官网](http://img.blog.csdn.net/20160524131350549)
### **代码**
下列代码最开头就是用了一个**for()**循环来设置2-7引脚为输出模式。
在**loop**中,有两个for循环。我们使用for循环来对LED进行迭代,从2-7一个接一个的点亮、熄灭。当最后一个LED亮起时,就反向开始迭代,从7-2。
~~~
/*
For循环迭代(霹雳游侠)
本例展示for循环的使用。
将LED逐个点亮熄灭、然后反向
电路搭建:
* LED连接2-7引脚与GND
代码公开。
*/
int timer = 100; // 延迟时间
void setup() {
// 用for循环迭代初始化LED的引脚为输出模式:
for (int thisPin = 2; thisPin < 8; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// 从最低引脚迭代到最高引脚:
for (int thisPin = 2; thisPin < 8; thisPin++) {
// 将LED打开:
digitalWrite(thisPin, HIGH);
delay(timer);
// 将LED关闭:
digitalWrite(thisPin, LOW);
}
// 从7-2:
for (int thisPin = 7; thisPin >= 2; thisPin--) {
// 将LED打开:
digitalWrite(thisPin, HIGH);
delay(timer);
// 将LED关闭:
digitalWrite(thisPin, LOW);
}
}
~~~
### **相关资料**
[for()](https://www.arduino.cc/en/Reference/For)
[digitalWrite()](https://www.arduino.cc/en/Reference/DigitalWrite)
[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