Proyecto PAR2
Arduino Nivel Básico
Material Necesario
Componente | Cantidad | Descripción | Comprar |
---|---|---|---|
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 la Sección Formacion 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.
Hola,
Me ha gustado el post y buena explicación, por cierto 🙂
Pero no entiendo lo de la resistencia pull-down, lo puedes explicar más claro…
Gracias y espero más montajes.
Hola Rául,
Gracias por tu comentario.
Puedes ver la información que me preguntas en la Sección de Lecciones… Pincha el siguiente enlace para ver la info que me comentas
https://laboratoriorobotica.es/formacion/pulsador-con-resistencia-pull-down-y-pull-up/#4_Pulsador_con_Resistencia_Pull-Down_versus_Pull-Up
Un saludo y Gracias por tu comentario !
Me ha gustado. Voy a ponerme a hacerlo ahora mismo.
Espero el siguiente.
Una cosa, podrías poner también el pseudocódigo que nos han explicado en clase ?
Gracias Marcos por tu comentario.
Miraré añadir pseudocódigo en los Proyectos. Tengo en cuenta tu propuesta que la veo interesante.
Un saludo.
Me llamo David,
Muy bueno para aprender, pero algo más difícil?
Chao.
Hola David,
Ante todo gracias por tu comentario.
Pues hemos estado algo liados poniendo a punto la tienda online que próximamente vamos a inaugurar.
Pero en breve seguiremos introduciendo contenido y nuevos e interesantes proyectos!!!
Esperando que te gusten los nuevos artículos,
Recibe un afectuoso saludo.