Parpadeo del semáforo de peatones con un bucle for() (Previsualizar)

Arduino IDE bucle for
Primero debes completar Semáforo básico con peatones y botón antes de ver esta lección

Tenemos un semáforo en nuestra breadboard que se comporta de una forma muy similar a como lo hacen los semáforos con los que nos cruzamos cada día. Pero aún podemos perfeccionar su programación.

Cuando el semáforo de peatones está a punto de ponerse en rojo, el LED verde parpadea. Este estado lo hemos hecho encendiendo (HIGH) y apagando (LOW) el LED repetidas veces, suponiendo en nuestro código 9 líneas. ¿Y si te digo que esas 9 líneas pueden quedarse en la mitad?

Para ello vamos a usar el bucle for().

For()

¿En qué consiste? El bucle for() lo que hace es repetir un número determinado de veces un bloque de sentencias que se encuentren entre llaves.

¿Cuál es su sintaxis?

for (inicialización; condición; incremento/decremento) {

  sentencias;

}

Entre paréntesis, el bucle for tiene tres partes:

  • Inicialización. Se da una vez al principio del for, en él se inicializan las variables que van a emplearse en la condición.
  • Condición. En cada vuelta del for() se comprueba si se cumple o no la condición. Si se cumple, se ejecutan tanto las sentencias como el incremento/decremento. Si no se cumple el for termina y el programa continua ejecutando las siguientes líneas.
  • Incremento/decremento. Se escribe x++ para que en cada vuelta del for() la variable inicializada y testeada se incremente en una unidad. Por el contrario, si queremos que la variable vaya decreciendo en cada vuelta, se escribe x–.

Veamos un ejemplo de bucle for():

Contador (desde 0 hasta 9).

void setup() {
  Serial.begin(9600);
}

void loop() {
  for(int i=0;  i<10;  i++) {
    Serial.println(i);
    delay(1000);
  }
}

Cuenta atrás (desde 9 hasta 0).

void setup() {
  Serial.begin(9600);
}

void loop() {
  for(int i=9;  i<10;  i--) {
    Serial.println(i);
    delay(1000);
  }
}

¿Cómo implementamos el bucle for() en nuestro semáforo?

Hasta ahora, cuando el semáforo de peatones está a punto de ponerse en rojo el parpadeo lo hacemos así:

void loop() {
  digitalWrite(LED_VERDE_PEATON, HIGH);
  delay(5000);
  digitalWrite(LED_VERDE_PEATON, LOW);
  delay(200);
  digitalWrite(LED_VERDE_PEATON, HIGH);
  delay(200);
  digitalWrite(LED_VERDE_PEATON, LOW);
  delay(200);
  digitalWrite(LED_VERDE_PEATON, HIGH);
  delay(200);
  digitalWrite(LED_VERDE_PEATON, LOW);
}

Vemos que las sentencias marcadas en azul se repiten tres veces en cada vuelta del loop(). Estas son las que vamos a poner detro de nuestro bucle for().

Como queremos que se repita 3 veces, creamos una variable local i que va a ir desde 0 hasta 3 de forma incremental. De forma que:

for (int i=0; i<3; i++) {
  digitalWrite(LED_VERDE_PEATON, LOW);
  delay(200);
  digitalWrite(LED_VERDE_PEATON, HIGH);
  delay(200);
}

Sustituimos en nuestro sketch ambos códigos y nos queda así:

Cacharrea, crea y comparte tus proyectos.

  • Breadboard 830 puntos para prototiparBreadboard 830 puntos para prototipar
    Añadir al carrito
    Vista rápida
    6,00  (4,96  excl. IVA)
    En tienda
  • Agotado
    Genuino UNO Rev. 3
    Genuino UNO Rev. 3
    Leer más
    Vista rápida
    25,00  (20,66  excl. IVA)
    Temporalmente no disponible
  • Kit de botones con resistencias pull-up/down
    Kit de botones con resistencias pull-up/down
    Añadir al carrito
    Vista rápida
    2,00  (1,65  excl. IVA)
    En tienda
Volver a: Semáforo con Arduino

©2017 Fábrica Digital desde Jerez de la Frontera, España.

717 717 452 (Teléfono y Whatsapp) / hola@fabricadigital.org

De Lunes a Jueves de 09:00 a 18:00. Viernes de 09:00 a 14:00.

Calle del Comercio, 18, 11407 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account