Vamos a simular un semáforo en Arduino usando 3 leds de color rojo, amarillo y verde. También vamos a usar resistencias para evitar desgastar a los mismos, y obviamente código Arduino para encenderlos y apagarlos.
Lo que repasaremos con esta práctica es:
pinMode
– Para establecer si un pin será de salida o entrada
digitalWrite
– Apagar o encender un LED con Arduino
Primero que nada, veamos el circuito. No lo hice con Fritzing, sino con Tinkercad; pues esta última herramienta me ayuda a simular además de diseñar.
Utilizamos 3 resistencias de 220 ohms (puedes poner una de hasta 47 pero se disminuiría el tiempo de vida de los leds) y también una resistencia mayor.
Cada led está conectado a una resistencia y cada resistencia a su vez está conectada a una salida del Arduino (7, 8 y 9). El cátodo de los 3 leds va a tierra.
Para encender un led usamos digitalWrite(numeroDePin, HIGH)
y para apagarlo usamos digitalWrite(numeroDePin, LOW)
.
He puesto este comportamiento dentro de la función cambiarA
, que apaga el anterior y enciende el nuevo.
/*
Prueba 1: Semáforo simple
INSTRUCCIONES: Realizar un sketch en Arduino que permita
encender tres LED’s con la lógica de funcionamiento de un
semáforo simple. El proceso inicia con el encendido del VERDE.
@author parzibyte
Visita: parzibyte.me/blog
*/
int ledRojo = 7,
ledAmarillo = 8,
ledVerde = 9,
SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO = 5 * 1000, // En mi caso puse que el verde y rojo duren 10 segundos (10,000 milisegundos)
SEGUNDOS_DE_ESPERA_AMARILLO = 2 * 1000, // En mi caso puse que el amarillo dure 2 segundos (2,000 milisegundos)
LED_ACTUAL = 0; // Por defecto no hay led encendido
void setup() {
/*
Establecemos como salida los tres leds
*/ pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}
void loop() {
cambiaA(ledVerde);
delay(SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO);
cambiaA(ledAmarillo);
delay(SEGUNDOS_DE_ESPERA_AMARILLO);
cambiaA(ledRojo);
delay(SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO);
}
void cambiaA(int nuevoLed) {
/*
Función ayudante que apaga el led y enciende el nuevo,
además de asignar a LED_ACTUAL el valor del (valga la redundancia)
led actual
*/ if(LED_ACTUAL != 0) digitalWrite(LED_ACTUAL, LOW);
LED_ACTUAL = nuevoLed;
digitalWrite(LED_ACTUAL, HIGH);
}
Para simular el semáforo el algoritmo es sencillo y va dentro del loop. Primero encendemos el led verde, esperamos 5 segundos, cambiamos a amarillo, esperamos 2 segundos, cambiamos a rojo, esperamos 5 segundos y el ciclo se repite.
Si quieres puedes simular el circuito haciendo click aquí.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.