miércoles, 4 de octubre de 2017

Ejemplos Arduino: Semáforo (Street Light)

Buenas a todos!!!
Hoy les traigo 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 creo ya describí en otra entrada de este mismo blog. Arduino: Efecto Coche fantástico
Podría haber realizado la practica con un solo semáforo, pero creo que queda mucho más bonito con dos ya que representa como tendría que funcionar un semáforo en una 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 semáforos de una gran ciudad.

Para este ejemplo solo necesitaremos:
  • Arduino UNO
  • 6 Resistencias 330ohm
  • 2 LED de color rojo
  • 2 LED de color naranja
  • 2 LED de color verde
Conexiones:
Usaremos los pines digitales 7, 8, 9, 10, 11, 12 donde irán conectados los LED con una 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 el resultado final del programa:


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

No hay comentarios :

Publicar un comentario