With regards to the following code below. Why isn't i reset to zero every time it goes round the loop? Or in C does it automatically bypass this after the first time it has passed? I would have thought that assigning this variable would/should be done outside of the loop.
Thank you in advance.
void loop ()
{
for (int i = 0; i < 20; i ++)
{
digitalWrite (ledPin, HIGH);
delay (delayPeriod);
digitalWrite (ledPin, LOW);
delay (delayPeriod);
}
}
If only there was a way to see the value of i during the cycles of the for loop in some sort of monitor that worked via the Arduino's serial port. Sadly, we will just need to rely on guessing.
Try this code, you'll see that i is set to 0 at the start of each loop - you'll count 20 blinks getting slower and slower and then after the 20th it will suddenly speed back up (when loop() restarts)
void loop ()
{
for (int i = 0; i < 20; i ++)
{
digitalWrite (ledPin, HIGH);
delay ((i+1)*delayPeriod);
digitalWrite (ledPin, LOW);
delay ((i+1)*delayPeriod);
}
}
Walltree:
With regards to the following code below. Why isn't i reset to zero every time it goes round the loop?
Because of the syntax of the for-loop. General syntax is:
for ( init; condition; increment )
{
statement(s);
}
The 'init' part is executed before the loop starts looping round and round.
And the 'init' part is just executed once before the looping starts and not 'in between looping'.