arduino

Semáforo simple con Arduino y LEDs

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

Semáforo simple con Arduino

El circuito

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.

1.1 Semáforo simple

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.

Código de semáforo

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í.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.