CONTENIDO ►
Hacer un semáforo en Arduino con un botón es un gran ejercicio de aprendizaje de Arduino para principiantes. El proyecto le permitirá comprender mejor el entorno de programación Arduino IDE y el principio de funcionamiento de los pines digitales de propósito general. Vamos a echar un vistazo al esquema de construcción de un semáforo simple en Arduino Uno utilizando breadboard y presentar un proyecto sencillo que se puede utilizar en el inicio de su aprendizaje.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- LED y resistencia de 220 Ohm;
- botón pulsador;
- placa de pruebas;
- cables de conexion.
Proyecto de semáforos para Arduino Uno

Para empezar, construiremos un sencillo circuito de semáforo en una protoboard sin pulsador de reloj para comprender el código y el algoritmo de los semáforos en los cruces. También será útil para que los niños entiendan cómo funcionan los semáforos en la carretera en la vida real. Conecta los LEDs utilizando la protoboard y los conectores a la placa Arduino según el diagrama publicado más arriba y carga el siguiente programa en el microcontrolador.
Programa Arduino semáforo doble
#define RED1 2 #define ORANGE1 3 #define GREEN1 4 #define RED2 9 #define ORANGE2 10 #define GREEN2 11 int pause = 3000; void setup() { pinMode(RED1, OUTPUT); pinMode(ORANGE1, OUTPUT); pinMode(GREEN1, OUTPUT); pinMode(RED2, OUTPUT); pinMode(ORANGE2, OUTPUT); pinMode(GREEN2, OUTPUT); } void loop() { digitalWrite(RED1, HIGH); digitalWrite(ORANGE1, LOW); digitalWrite(GREEN1, LOW); digitalWrite(RED2, LOW); digitalWrite(ORANGE2, LOW); digitalWrite(GREEN2, HIGH); delay(pause); digitalWrite(RED1, HIGH); digitalWrite(ORANGE1, HIGH); digitalWrite(GREEN1, LOW); digitalWrite(RED2, LOW); digitalWrite(ORANGE2, HIGH); digitalWrite(GREEN2, LOW); delay(pause); digitalWrite(RED1, LOW); digitalWrite(ORANGE1, LOW); digitalWrite(GREEN1, HIGH); digitalWrite(RED2, HIGH); digitalWrite(ORANGE2, LOW); digitalWrite(GREEN2, LOW); delay(pause); digitalWrite(RED1, LOW); digitalWrite(ORANGE1, HIGH); digitalWrite(GREEN1, LOW); digitalWrite(RED2, HIGH); digitalWrite(ORANGE2, HIGH); digitalWrite(GREEN2, LOW); delay(pause); }
Explicación del código del semáforo doble:
- los pines con LEDs se nombran utilizando la directiva #define;
- los LEDs se encienden cada tres segundos; el intervalo se puede modificar cambiando el valor de la variable int pause = 3000; en el programa.

Programa Arduino semáforo con pulsador
El siguiente ejemplo reproduce el funcionamiento de los semáforos en los pasos de peatones, en los que se cambia el modo del semáforo pulsando un botón. Para ello, el programa debe utilizar un bucle while. También es necesario añadir al circuito un pulsador con una resistencia pull-up y activar el modo semáforo cuando el nivel de señal es alto en la entrada digital o analógica del microcontrolador Arduino al que está conectado el botón pulsador.
#define RED1 2 #define ORANGE1 3 #define GREEN1 4 #define RED2 9 #define ORANGE2 10 #define GREEN2 11 #define BOUTON 7 int pause = 3000; void setup() { pinMode(RED1, OUTPUT); pinMode(ORANGE1, OUTPUT); pinMode(GREEN1, OUTPUT); pinMode(RED2, OUTPUT); pinMode(ORANGE2, OUTPUT); pinMode(GREEN2, OUTPUT); pinMode(BOUTON, INPUT); } void loop() { digitalWrite(RED1, HIGH); digitalWrite(ORANGE1, LOW); digitalWrite(GREEN1, LOW); digitalWrite(RED2, LOW); digitalWrite(ORANGE2, LOW); digitalWrite(GREEN2, HIGH); while (digitalRead(BOUTON) == HIGH) { digitalWrite(RED1, HIGH); digitalWrite(ORANGE1, HIGH); digitalWrite(GREEN1, LOW); digitalWrite(RED2, LOW); digitalWrite(ORANGE2, HIGH); digitalWrite(GREEN2, LOW); delay(pause); digitalWrite(RED1, LOW); digitalWrite(ORANGE1, LOW); digitalWrite(GREEN1, HIGH); digitalWrite(RED2, HIGH); digitalWrite(ORANGE2, LOW); digitalWrite(GREEN2, LOW); delay(pause); digitalWrite(RED1, LOW); digitalWrite(ORANGE1, HIGH); digitalWrite(GREEN1, LOW); digitalWrite(RED2, HIGH); digitalWrite(ORANGE2, HIGH); digitalWrite(GREEN2, LOW); delay(pause); } }
Explicación del código del semáforo con pulsador Arduino:
- el bucle while sólo se ejecuta cuando se pulsa el pulsador.
Conclusión. A todos los puertos al Arduino con LEDs y al pin con el botón pulsador se les asignan nombres usando el comando #define. Ahora puedes implementar tú mismo el semáforo verde intermitente en el programa o mejorar aún más el proyecto con semáforo intermitente sustituyendo el botón del reloj por el sensor hc-sr04 ultrasónico Arduino.

Deja una respuesta