miércoles, 4 de octubre de 2017

Ejemplos Arduino: Semáforo (Street Light)

Buenas a todos Arduineros y Arduineras!!!

Hoy traemos un ejemplo de los más básicos que se pueden realizar con Arduino: El semáforo.

Si bien es un practica sencilla, nos ayudará a entender como realizar secuencias con LED y el bucle FOR que ya hemos tratamos en la entrada de este mismo blog Arduino: Efecto Coche fantástico

Podríamos realizar la practica con un solo semáforo, pero añadir un segundo semáforo le da un poco más de complejidad ya que tenemos que sincronizar para que no tengamos ningún accidente en la intersección.

Otro punto interesante seria añadirle un pequeño altavoz para simular el dispositivo para invidentes que hay situados en casi todos los pasos de peatones de una gran ciudad.


Materiales necesarios:

  • Arduino UNO
  • 6 Resistencias 330ohm
  • 2 LED de color rojo
  • 2 LED de color naranja
  • 2 LED de color verde

Conexiones:

Vamos a usar los pines digitales 7, 8, 9, 10, 11, 12 configurados como OUTPUT y sera donde irán conectados los LED con su resistencia limitadora de 330ohm


El código del programa es bastante sencillo, puedes copiar y pegar o descargar el sketch al final de esta misma entrada:



// Definimos los pines de los LED
// Semaforo 1:
const int rojo = 7;
const int amarillo = 8;
const int verde = 9;

// Semaforo 2:
const int rojo2 = 10;
const int amarillo2 = 11;
const int verde2 = 12;


void setup() {
  // Configuramos los pines como salida
  pinMode (rojo, OUTPUT);
  pinMode (amarillo, OUTPUT);
  pinMode (verde, OUTPUT);
  pinMode (rojo2, OUTPUT);
  pinMode (amarillo2, OUTPUT);
  pinMode (verde2, OUTPUT);
  
  // Comprobamos que todos los LEDs encienden
  for (int z = 7; z < 13; z++) {
    digitalWrite ( z, HIGH);
    delay (100);
    digitalWrite (z, LOW);
    delay(100);
  }
}

void loop() 
{
  // SECUENCIA 1 //
  digitalWrite (rojo2, HIGH);
  digitalWrite (verde, HIGH);
  delay (5000);
  digitalWrite (verde, LOW);
  
  // SECUENCIA 2 //
  for (int x = 0; x < 5; x++) 
  {
    digitalWrite (amarillo, HIGH);
    delay(500);
    digitalWrite (amarillo, LOW);
    delay (500);
  }
  
  // SECUENCIA 3 //
  digitalWrite (rojo2, LOW);
  digitalWrite (verde2, HIGH);
  digitalWrite (rojo, HIGH);
  delay (5000);
  digitalWrite (verde2, LOW);
  
  // SECUENCIA 4 //
  for (int y = 0; y < 5; y++) 
  {
    digitalWrite (amarillo2, HIGH);
    delay(500);
    digitalWrite (amarillo2, LOW);
    delay (500);
  }
  digitalWrite (rojo, LOW);

}


En la siguiente animación podemos ver una simulación del resultado final del programa:


Este proyecto puede ser ampliado con varios módulos más como un zumbador que simule el sonido para los invidentes o una barrera mecanizada con un servo.

Espero que les guste y les sea de utilidad, hasta la próxima!!!!

También te puede interesar:

No hay comentarios :

Publicar un comentario