Introduction
In this lesson, we will conduct a simple yet interesting experiment – using LEDs to create flowing LED lights. As the name suggests, these eight LEDs in a row successively light up and dim one after another, just like flowing water.
Components
![](https://learn.sunfounder.com/wp-content/uploads/2020/11/image-656.png)
![](https://learn.sunfounder.com/wp-content/uploads/2020/11/image-657.png)
Schematic Diagram
The principle of this experiment is simply to turn on eight LEDs in turn. The eight LEDs are connected to pin 2-pin 9 respectively. Set them as High level and the corresponding LED at the pins will light up. Control the time of each LED brightening and you will see flowing LED lights.
![](https://learn.sunfounder.com/wp-content/uploads/2020/11/image-659.png)
Experimental Procedures
Step 1: Build the circuit.
Step 2: Open the code file.
Step 3: Select the Board and Port.
Step 4: Upload the sketch to the board.
![](https://learn.sunfounder.com/wp-content/uploads/2020/11/image-660.png)
Now, you should see eight LEDs brighten one by one from the LED connected to pin 2 to that to pin 9, and then dim in turn from the LED at pin 9 to the one at pin 2. After that, the LEDs will light up from the LED at pin 9 to that at pin 2 and dim from the LED at pin 2 to that at pin 9. This whole process will repeat until the circuit is power off.
![](https://learn.sunfounder.com/wp-content/uploads/2020/11/image-661.png)
Code Analysis
Code Analysis 4-1 for() statement
for (int i = 2; i <= 9; i++)//8 LEDs are connect to pin2-pin9, When i=2, which accords with the condition i<=9, then run the code in the curly braces, set the pin2 to OUTPUT. After that run i++(here in i = i + 1, the two “i”s are not the same, but inow = ibefore + 1). Use the for() statement to set pin 2-pin 9 as output respectively.
{
pinMode(i, OUTPUT); //initialize a as an output
}
for (initialization; condition; increment) { //statement(s); }: The for statement is used to repeat a block of statements enclosed in curly braces.The initialization happens first and exactly once. Each time through the loop, the condition is tested; if it’s true, the statement block, and the increment is executed, then the condition is tested again. When the condition becomes false, the loop ends.
Code Analysis 4-2 Set flowing led lights
Use the for() statement to set pin2-pin9 to a high level inturn.
for (int a = 2; a <= 9; a++)
{
digitalWrite(a, HIGH); //turn this led on
delay(100);//wait for 100 ms
}
Then let the 8 LEDs go out from pin9 to pin2 in turn.
for (int a = 9; a <= 2; a–)
{
digitalWrite(a, LOW); //turn this led on
delay(100);//wait for 100 ms
}
Finally, use the same way to turn on the 8 LEDs from pin9 to pin2 in turn and let them go out in turn.
for (int a = 9; a <= 2; a–)
{
digitalWrite(a, HIGH); //turn this led on
delay(100);//wait for 100 ms
}
for (int a = 2; a <= 9; a++)
{
digitalWrite(a, LOW); //turn this led on
delay(100);//wait for 100 ms
}