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
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: