SEMÁFORO

Conectamos un zumbador y haremos que suene de forma intermitente

  1. ¿Qué es un led?
  2. Circuito: Cómo conectar los leds a Arduino
  3. Programación con Mblock
  4. Programación con Arduino IDE

1.  ¿Qué es un diodo led?

En prácticas anteriores os explicamos qué es un diodo led. Puedes leerlo en: Prácticas con Arduino: Luz intermitente

2. Circuito: Cómo conectar los leds a Arduino

Para realizar este circuito necesitas los siguientes materiales:

Para trabajar en una protoboard, es importante conocer las conexiones que existen en ella. Puedes utilizar el siguiente enlace para leer información detallada sobre las conexiones de la protoboard.

Conectamos los leds a los siguientes pines de la placa Arduino:

  • 12 – Led rojo
  • 9  – Led amarillo
  • 6  – Led verde

¡Ya sólo nos queda programar!

Para programar la placa Arduino puedes utilizar diferentes lenguajes. Nosotros nos vamos a centrar en dos opciones

  • MBlock – programación basada en bloques
  • Arduino IDE – programación basada en líneas de código

3. Programación con mBlock

El objetivo de este programa es muy sencillo: conseguir que los leds emulen la secuencia de un semáforo.

El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Mblock: primeros pasos«

Una vez configurada la tarjeta comenzamos con la programación. El primer bloque que necesitamos es un evento (pulsa en el círculo naranja para ver los eventos disponibles) , en este caso utilizaremos el evento «cuando clic en bandera verde«.

Utilizamos un bucle infinito con el bloque «para siempre» que localizarás en la sección naranja control. Así nuestro programa se ejecutará continuamente

Bucle infinito
Bucle infinito

La secuencia de iluminación será:

  • Encender el led verde durante 3 segundos
  • Apagar el led verde y encender el led amarillo durante 1 segundo
  • Apagar el led amarillo y encender el led rojo durante s segundos
  • Apagar el led rojo

Dentro del bucle, empezamos encendiendo el led verde.

A continuación apagamos el led verde y encendemos el amarillo.

El siguiente paso es apagar el led amarillo y encender el led rojo.

El último paso será apagar el led rojo y volver a empezar.

Pulsa la bandera verde y comprueba que los leds emulan la secuencia de un semáforo. ¡Objetivo conseguido!

4. Programación con Arduino IDE

Vamos a programar con líneas de código. El objetivo consiste en iluminar los leds siguiendo la secuencia de un semáforo.

El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Arduino IDE: primeros pasos«.

Una vez configurada la tarjeta comenzamos con la programación. Recuerda que al trabajar con código debemos respetar la sintaxis: Cuidado con las letras mayúsculas y minúsculas y con los signos de puntuación. ¡Son importantes!.

Los programas en Arduino IDE constan de dos secciones: setup y loop.

En setup vamos a configurar los pines de la placa que vamos a utilizar.

pinMode(12, OUTPUT); En el pin 12 conectamos un dispositivo de salida: el LED rojo
pinMode(9, OUTPUT); En el pin 9 conectamos un dispositivo de salida: el LED amarillo
pinMode(6, OUTPUT); En el pin 6 conectamos un dispositivo de salida: el LED verde
Configuración de pines

En loop vamos a introducir el código que se va a ejecutar continuamente. Utilizando la instrucción digitalWrite encenderemos y apagaremos los leds para conseguir la secuencia de un semáforo. Podemos utilizar variables que identifiquen los pines de los leds para facilitar el seguimiento del código escrito.

int rojo=12;
int amarillo=9;
int verde=6;

void setup(){
    pinMode(rojo, OUTPUT);               // led rojo - pin de salida
    pinMode(verde, OUTPUT);              // led verde - pin de salida 
    pinMode(amarillo, OUTPUT);           // led amarillo - pin de salida 
} 
  
void loop() { // bucle infinito 

    digitalWrite(verde, HIGH);          // se enciende el led verde
    delay(3000);                        // pausa 3 segundos
    digitalWrite(verde, LOW);           // se apaga el led verde 
    digitalWrite(amarillo, HIGH);       // se enciende el led amarillo
    delay(1000);                        // pausa 1 segundo
    digitalWrite(amarillo, LOW);        // se apaga el led amarillo 
    digitalWrite(rojo, HIGH);           // se enciende el led rojo
    delay(3000);                        // pausa 3 segundos
    digitalWrite(rojo, LOW);            // se apaga el led rojo 
  
}

Pulsa en el icono subir, y comprueba el resultado.