In the last example – http://www.mikroblog.net/arduino/arduino-basics/more-arduino-and-led-examples.php we showed you some examples of flashing multiple LEDs, now this code worked OK but there is a more efficient way of doing the same action. We use loops to initialize the LEDs and then again for switching the LEDs on and off. There are 3 different types of loop and we will show the same example for all 3 of them.
Parts List
1 x Arduino UNO
7 x Leds
7 x 220ohm resistors
Schematic
Example 1 : Use a for loop to initialize the pins as outputs and also cycle through the LEDs one at a time from 2 to 8
[codesyntax lang=”cpp”]
#define myDelay 500 void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=8 ; i++) { pinMode(i, OUTPUT); } } void loop() { for (int i = 2; i<=8; i++) { // blink LEDs on pins 2 to 8 digitalWrite(i, HIGH); delay(myDelay); digitalWrite(i, LOW); } }
[/codesyntax]
Example 2 : reverse it, going from 8 to 2
[codesyntax lang=”cpp”]
#define myDelay 500 void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=8 ; i++) { pinMode(i, OUTPUT); } } void loop() { for (int i = 8; i>=2; i--) { // blink from LEDs 8 to 2 digitalWrite(i, HIGH); delay(myDelay); digitalWrite(i, LOW); } }
[/codesyntax]
Example 3 : You can also use a Do While loop, here is the example above again. the concept again is simple we set the variable i to be 8, we then decrement this (subtract) by 1 every time. When i is equal to 2 the loop will exit and start again at 8.
[codesyntax lang=”cpp”]
#define myDelay 500 void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=8 ; i++) { pinMode(i, OUTPUT); } } void loop() { int i = 8; do{ digitalWrite(i, HIGH); delay(myDelay); digitalWrite(i, LOW); i--; }while(i>=2); }
[/codesyntax]
Example 4 : A while loop this time, same concept as above.
[codesyntax lang=”cpp”]
#define myDelay 500 void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=8 ; i++) { pinMode(i, OUTPUT); } } void loop() { int i = 8; while(i>=2) { digitalWrite(i, HIGH); delay(myDelay); digitalWrite(i, LOW); i--; } }
[/codesyntax]