¿Cuándo usamos el bucle for?

La declaración for se usa para repetir un bloque de sentencias un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a testear la condición. La declaración for tiene tres partes separadas por (;)

Para ello, necesita de una variable con un valor inicial, una condición que debe cumplir esta variable para continuar el bucle, y un incrementador que cambie el valor de la variable.
 
for (variable; condición; incrementador)
 {
   bloque de instrucciones
}

Veamos el ejemplo de su sintaxis:
for (int i=0; i<20 i="" p="">
{
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
}

El ejemplo anterior enciende y apaga un led conectado al pin 13 en un bucle de 20 ejecuciones. Al inicio del bucle se declara una variable entera "i" cuyo valor inicial =0. Justo después se indica que el bucle se ejecutará hasta que la variable "i" tenga un valor inferior a 20 y finalmente se indica cuanto se incrementa la variable cada vez que se repita el bucle. (++ en programación equivale a +1, es decir, la variable pasa a valer un entero mas cada vez que se ejecuta el bucle).

Kit de Luces de Auto Fantastico

Monta el circuito según la imagen. Conecta las patillas largas (ánodos) de los leds a los pines 13,12,11,10,9,8,7,6 de la placa Arduino (salidas digitales). Las patillas cortas (cátodos) se conectan con las resistencias  y estas van todas conectadas a tierra (GND).
Circuito luces Kit

El código del programa será el siguiente:


/*
Luces del coche fantástico.

*/

void setup()
 {
// Inicializar los pins digitales como salidas.
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop()
 {
   digitalWrite(13, HIGH);
   delay(10);
   digitalWrite(13, LOW);
   delay(10);
   digitalWrite(12, HIGH);
   delay(10);
   digitalWrite(12, LOW);
   delay(10);
   digitalWrite(11, HIGH);
   delay(10);
   digitalWrite(11, LOW);
   delay(10);
   digitalWrite(10, HIGH);
   delay(10);
   digitalWrite(10, LOW);
   delay(10);
   digitalWrite(9, HIGH);
   delay(10);
   digitalWrite(9, LOW);
   delay(10);
   digitalWrite(8, HIGH);
   delay(10);
   digitalWrite(8, LOW);
   delay(10);
   digitalWrite(7, HIGH);
   delay(10);
   digitalWrite(7, LOW);
   delay(10);
   digitalWrite(6, HIGH);
   delay(10);
   digitalWrite(6, LOW);
   delay(10);
}

Una vez montado el circuito y comprobado que funciona correctamente, se puede probar a modificar el tiempo de espera.

Modificamos el código haciendo uso del bucle for, el código del programa será el siguiente:

/*
Luces del coche fantástico.
*/
int pausa=100;
void setup ()
   for(int pinLed=13;<=6;pinLed--)
   {
     pinMode(pinLed, OUTPUT);
   }
}
void loop()
{
   for(int pinLed=13;<=6;pinLed--)
   {
    digitalWrite(pinLed, HIGH);
    delay (pausa);
    digitalWrite(pinLed,LOW);
   }

   for(int pinLed=6;pinLed <=13;pinLed++)
    digitalWrite(pinLed, HIGH);
    delay (pausa);
    digitalWrite(pinLed,LOW);
   }
}