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

Tramitar acta de nacimiento en línea de manera instantánea

En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…

3 horas hace

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esta web usa cookies.