Tutorial para hacer un semáforo con Arduino - Masterhacks Blog

Tutorial para hacer un semáforo con Arduino

 

En este tutorial se enseñará a crear un semáforo utilizando la placa Arduino Uno.

Los materiales a utilizar son:

  • Arduino Uno
  • Protoboard
  • 3 Leds
  • 3 Resistencias de 330 Ohms
  • Cables para conexiones

masterhacks_semaforo_arduino

El funcionamiento más común de un semáforo es que la luz verde quede encendida por un tiempo determinado, luego comience a parpadear y se encienda la luz amarilla por un tiempo más corto, para que luego se encienda la luz roja, para luego volver a empezar.

El código en Arduino se puede crear con ciclos For, para hacerlo más compacto, sin embargo, en este tutorial se utilizan IF, como petición de varios seguidores.

El código es el siguiente:

//Semáforo V1.0 Masterhacks
//www.masterhacks.net - contacto@masterhacks.net

constint verde = 4;
constint amarillo = 7;
constint rojo = 8;
int estado = LOW;
intestama = LOW;
intestaro = LOW;
voidsetup() {
  // putyoursetupcodehere, torun once:
pinMode(verde, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(rojo, OUTPUT);
}

voidloop() {
  // putyourmaincodehere, torunrepeatedly:
if (estado == LOW) {
estado = HIGH;
} else {
estado = LOW;
}
digitalWrite(verde, estado);
delay (5000);
if (estado == LOW) {
estado = HIGH;
} else {
  estado = LOW;
}
digitalWrite(verde, estado);
delay (500);
if (estado == LOW) {
estado = HIGH;
} else {
estado = LOW;
}
digitalWrite(verde, estado);
delay (500);
if (estado == LOW) {
estado = HIGH;
} else {
estado = LOW;
}
digitalWrite(verde, estado);
delay (500);
if (estado == LOW) {
estado = HIGH;
} else {
estado = LOW;
}
digitalWrite(verde, estado);
delay (500);
if (estado == LOW) {
estado = HIGH;
} else {
estado = LOW;
}
digitalWrite(verde, estado);
delay (500);
if (estama == LOW) {
estama = HIGH;
} else {
estama = LOW;
}
digitalWrite(amarillo, estama);
delay (2500);
if (estama == HIGH) {
estama = LOW;
}
digitalWrite(amarillo, estama);
if (estaro == LOW) {
estaro = HIGH;
}
digitalWrite(rojo, estaro);
delay (5000);
if (estaro == HIGH) {
estaro = LOW;
}
digitalWrite(rojo, estaro);
delay (100);

}

Primero se declaran los pines del Arduino que se van a utilizar. Como los leds funcionan con 0 y 1, se utilizan los pines digitales, en este caso el 4 para el verde, 7 para el amarillo y 8 para el rojo.

Después, se inicializan los leds, es decir, en qué estado estarán al comenzar a correr el programa, para esto, se utilizaron las variables estado para verde, estama para amarillo y estaro para rojo, las tres en forma de apagado, “LOW”.

Luego, se establece que los pines a utilizar serán de salida, es decir, que se va a escribir y no a leer. Luego se siguen con el ciclo infinito.

EL primer if se lee de la siguiente manera: “Si estado (led verde), está apagado, entonces se enciende. De lo contrario, se apaga.

Entonces se manda eso al pin, por medio de digitalWrite.

Se le da un tiempo de pausa de 5000 milisegundos (5 segundos), y entonces se sigue con el código.

Al término de los 5 segundos, el led se apaga, entonces con otro if se vuelve a encender, pero esta vez pausando el encendido 500 milisegundos, es decir, medio segundo, repitiendo esta condición varias veces, se simula el parpadeo de la luz.

Al terminar, se sigue con el if de la luz amarilla, que estará encendida dos segundos y medio y se seguirá con la luz roja, que estará encendida 5 segundos.

Luego, con un if se vuelve a establecer a la luz roja como apagada y a los 100 milisegundos se repite todo el ciclo.

Video demostrativo:

Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 646180224401848086 Nombre: Masterhacks LATAM Banco: STP

Unete a nuestros grupos:
WhatsApp: https://chat.whatsapp.com/C8fqiz3aDDc58VRRd1vdrb
Telegram: https://t.me/masterhacks_net
Canal de WhatsApp https://whatsapp.com/channel/0029VaBBLCn5vKAH9NOWCl3K

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *