1.1 Semáforo simple
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í.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.