Castellano
Material Necesario
Componente | Cantidad | Descripción |
---|---|---|
Arduino UNO | 1 ud | Placa Arduino Uno REV 3 |
Protoboard | 1 ud | Placa de Prototipado |
Led Rojo | 1 ud | |
Led Amarillo | 1 ud | |
Led Verde | 1 ud | |
Resistencia 220 Ω | 3 uds | |
Resistencia 10 k Ω | 1 ud | |
Pulsador | 1 ud | |
Cables Prototipado | 13 uds |
En este proyecto, vamos a realizar un Sencillo Semáforo con una placa Arduino, un un led rojo, un led amarillo y un led verde que irán encendiéndose de forma secuencial conforme presionemos un Pulsador.
Puedes encontrar información complementaria sobre los componentes que vamos a utilizar en este proyecto de nivel básico en el Blog o haciendo click directamente en los siguientes enlaces.
- Leer el Código de Colores de una Resistencia de 4 Bandas
- Qué es y Cómo funciona un Led
- Pulsador con Resistencia Pull-Down y Pull-Up
Lo primero que debemos realizar es el montaje que se detalla en el siguiente esquema (recuerda que puedes pinchar sobre cualquier imagen para ampliarla).
Es un montaje sencillo y solo cabe destacar
- Resistencias de los Led serán de 220 Ω .
- Resistencia del Pulsador debe ser de 10k Ω .
- La Resistencia del Pulsador la hemos montado tipo Pull-Down (de esta forma obtenemos HIGH cuando presionamos el Pulsador).
- Las resistencias no tienen polaridad, luego da igual el sentido de su colocación pero en el caso de los Leds si es importante tener en cuenta la misma.
- El pulsador debe tener en la parte de abajo / arriba las dos patillas que sobresalen por el mismo lado.
El Código Fuente del Proyecto, que debemos teclear en el IDE de Arduino es el siguiente
// -------------------------------------------------------------
// Proyecto: PB2 - Semáforo Arduino con Pulsador
// Autor: LabRob (Jose Delgado)
// Fecha: Octubre 2019
// Explicacion:
// Enceder secuencialmente un led rojo, led
// amarillo y led verde conforme presionemos
// un pulsador.
// -------------------------------------------------------------
// ================================================
// Declaraciones, Constantes, Variables ...
// ================================================
const int led_rojo_PIN = 9; // Asignamos a la constante led_rojo_PIN el valor 9
const int led_amarillo_PIN = 10; // Asignamos a la constante led_amarillo_PIN el valor 10
const int led_verde_PIN = 11; // Asignamos a la constante led_verde_PIN el valor 11
const int pulsador_PIN = 2; // Asignamos a la constante pulsador_PIN el valor 4
int led_encendido = 0; // 0 Led Encendido --> Ninguno
// 1 Led Encendido --> Rojo
// 2 Led Encendido --> Amarillo
// 3 Led Encendido --> Verde
// ================================================
// Modulo Inicializacion y Configuracion
// ================================================
void setup()
{
pinMode(led_rojo_PIN , OUTPUT); // Definimos el PIN del Led Rojo como SALIDA
pinMode(led_amarillo_PIN , OUTPUT); // Definimos el PIN del Led Amarillo como SALIDA
pinMode(led_verde_PIN , OUTPUT); // Definimos el PIN del Led Verde como SALIDA
digitalWrite(led_rojo_PIN, LOW); // Inicialmente apagamos todos los leds
digitalWrite(led_amarillo_PIN, LOW);
digitalWrite(led_verde_PIN, LOW);
pinMode(pulsador_PIN, INPUT); // Definimos el PIN del Pulsador como ENTRADA
}
// ================================================
// Bucle Programa
// ================================================
void loop()
{
while (digitalRead(pulsador_PIN) == LOW); // No hacemos nada mientras no se presiona el Pulsador
// Hemos llegado aqui porque se ha presionado el Pulsador
// Asignamos el Led que le toca encenderse de forma secuencial y cíclica
// Si el Led encendido es el Verde (3) pasamos a encender el Rojo (1)
if (led_encendido == 3){
led_encendido = 1;
}
else{
led_encendido = led_encendido + 1;
}
// Encendemos el Led Rojo y apagamos el Amarillo y el Verde
if (led_encendido == 1) {
digitalWrite(led_rojo_PIN, HIGH);
digitalWrite(led_amarillo_PIN, LOW);
digitalWrite(led_verde_PIN, LOW);
}
// Encendemos el Led Amarillo y apagamos el Rojo y el Verde
if (led_encendido == 2) {
digitalWrite(led_rojo_PIN, LOW);
digitalWrite(led_amarillo_PIN, HIGH);
digitalWrite(led_verde_PIN, LOW);
}
// Encendemos el Led Verde y apagamos el Rojo y el Amarillo
if (led_encendido == 3) {
digitalWrite(led_rojo_PIN, LOW);
digitalWrite(led_amarillo_PIN, LOW);
digitalWrite(led_verde_PIN, HIGH);
}
while (digitalRead(pulsador_PIN) == HIGH); // Si el Pulsador sigue presionado no continuamos
// Cuando el Pulsador no está presionado seguimos con el Bucle Pincipal
}
Sobre el código anterior y aunque todo su contenido está comentado en el propio programa, vamos a resaltar
- En la Sección Declaraciones, Constantes y Variables definimos los Pines de la placa Arduino que vamos a utilizar para cada componente del Proyecto (los tres Leds y el Pulsador).
- Además declaramos una variable led_encendido que va a ir tomando valores 0,1,2,3 dependiendo del Led que vamos a encender (ninguno, rojo, amarillo y verde).
- En la Sección Inicialización y Configuración definimos los Pines de los Leds como pines de Salida (OUTPUT) y el Pin del Pulsador como Entrada (INPUT).
- También, apagamos inicialmente todos los Leds escribiendo en sus pines el valor LOW. Aunque esta asignación no sería estrictamente necesaria, pues en condiciones normales estarán apagados inicialmente, desde el punto de vista de pureza en la programación si debemos realizar esta asignación para evitar posibles situaciones anómalas.
- En la Sección Bucle Principal vamos a explicar el comportamiento de los While:
- El While de la línea 46 se es un bucle que espera la presión del Pulsador para poder seguir con el Bucle Principal.
- El While de la línea 79 tiene la misión de eliminar pulsaciones continuadas muy rápidas que no son esperadas del Pulsador. Lo que vendría a ser un eco no deseado de una pulsación. Cuando el Pulsador «realmente» no está presionado se continua con el Bucle Principal.
Después de introducir el código fuente en el IDE, recuerda que la placa Arduino debes tenerla conectada al ordenador, revisa la configuración correcta del puerto donde está conectada y pulsa el botón para subir el código a la misma
Ahora ya puedes probar el Proyecto y su funcionamiento presionando el Pulsador para ir encendiendo los Leds en forma de semáforo (rojo, amarillo y verde) …
Para finalizar algunas Imágenes del Proyecto
Espero hayas aprendido y disfrutado con este proyecto.
Si tienes dudas o quieres hacer cualquier aportación que consideres de interés, puedes realizar todos tus comentarios a continuación.
Ingeniero Superior en Informática de Gestión, UPV 1988-1993
Máster en Dirección Comercial y Marketing, Fundesem 2005
Máster en Peritaje Informático e Informática Forense, EuroInnova 2018
Máster en Marketing y Estrategia de Comunicación Digital, Fundesem 2019