Type something to search...
Semáforo Doble

Semáforo Doble

Descripción del código

Este programa controla el funcionamiento de dos semáforos simulados utilizando un Arduino. Cada semáforo cuenta con tres luces LED: verde, amarillo y rojo. El programa alterna las luces de ambos semáforos de forma sincronizada para simular el flujo de tráfico en una intersección.


Partes principales del código

1. Declaración de constantes

Se definen las constantes para identificar los pines a los que están conectados los LEDs de ambos semáforos.

const int LED_VERDE_1 = 2;
const int LED_AMARILLO_1 = 3;
const int LED_ROJO_1 = 4;

const int LED_VERDE_2 = 5;
const int LED_AMARILLO_2 = 6;
const int LED_ROJO_2 = 7;

2. Función setup

La función setup configura todos los pines de los LEDs como salidas utilizando la función pinMode.

void setup() {
  pinMode(LED_VERDE_1, OUTPUT);
  pinMode(LED_AMARILLO_1, OUTPUT);
  pinMode(LED_ROJO_1, OUTPUT);
  pinMode(LED_VERDE_2, OUTPUT);
  pinMode(LED_AMARILLO_2, OUTPUT);
  pinMode(LED_ROJO_2, OUTPUT);
}

3. Función loop

La función loop controla el ciclo de encendido y apagado de los LEDs para simular el comportamiento de los semáforos.

Ciclo del semáforo:

  1. Semáforo 1 en verde y semáforo 2 en rojo

    • El LED verde del semáforo 1 y el LED rojo del semáforo 2 se encienden por 3 segundos.
    digitalWrite(LED_VERDE_1, HIGH);
    digitalWrite(LED_ROJO_2, HIGH);
    delay(3000);
  2. Parpadeo del LED verde del semáforo 1

    • El LED verde del semáforo 1 parpadea 5 veces.
    for (int i = 0; i < 5; i++) {
      digitalWrite(LED_VERDE_1, LOW);
      delay(300);
      digitalWrite(LED_VERDE_1, HIGH);
      delay(300);
    }
  3. Cambio a luz amarilla en el semáforo 1

    • El LED verde del semáforo 1 se apaga, y el LED amarillo se enciende por 2 segundos.
    digitalWrite(LED_VERDE_1, LOW);
    digitalWrite(LED_AMARILLO_1, HIGH);
    delay(2000);
  4. Cambio a rojo en el semáforo 1 y verde en el semáforo 2

    • El LED amarillo del semáforo 1 se apaga, y el LED rojo se enciende. Al mismo tiempo, el LED rojo del semáforo 2 se apaga y su LED verde se enciende.
    digitalWrite(LED_AMARILLO_1, LOW);
    digitalWrite(LED_ROJO_1, HIGH);
    digitalWrite(LED_ROJO_2, LOW);
    digitalWrite(LED_VERDE_2, HIGH);
    delay(3000);
  5. Parpadeo del LED verde del semáforo 2

    • El LED verde del semáforo 2 parpadea 5 veces.
    for (int i = 0; i < 5; i++) {
      digitalWrite(LED_VERDE_2, LOW);
      delay(300);
      digitalWrite(LED_VERDE_2, HIGH);
      delay(300);
    }
  6. Cambio a luz amarilla en el semáforo 2

    • El LED verde del semáforo 2 se apaga, y el LED amarillo se enciende por 2 segundos.
    digitalWrite(LED_VERDE_2, LOW);
    digitalWrite(LED_AMARILLO_2, HIGH);
    delay(2000);
  7. Cambio a rojo en el semáforo 2

    • El LED amarillo del semáforo 2 se apaga, y el LED rojo se enciende.
    digitalWrite(LED_AMARILLO_2, LOW);
    digitalWrite(LED_ROJO_2, HIGH);

Desafíos

1. Modifica los tiempos

Cambia los tiempos de encendido de las luces para que:

  • El LED verde permanezca encendido durante 5 segundos.
  • El LED amarillo dure 3 segundos.

2. Agrega un tercer semáforo

Crea un tercer semáforo con sus respectivos LEDs y configura el programa para que funcione de forma sincronizada con los otros dos.

3 Modifica los patrones de parpadeo

Haz que los LEDs verdes de ambos semáforos parpadeen en un patrón diferente. Por ejemplo, podrías hacer que parpadeen rápidamente tres veces, luego se mantengan apagados por un segundo.

Recursos

// C++ code
//

// Pines del primer semáforo
const int LED_VERDE_1 = 2;
const int LED_AMARILLO_1 = 3;
const int LED_ROJO_1 = 4;

// Pines del segundo semáforo
const int LED_VERDE_2 = 5;
const int LED_AMARILLO_2 = 6;
const int LED_ROJO_2 = 7;

void setup() {
  // Configuración de los pines como salida para ambos semáforos
  pinMode(LED_VERDE_1, OUTPUT);
  pinMode(LED_AMARILLO_1, OUTPUT);
  pinMode(LED_ROJO_1, OUTPUT);
  pinMode(LED_VERDE_2, OUTPUT);
  pinMode(LED_AMARILLO_2, OUTPUT);
  pinMode(LED_ROJO_2, OUTPUT);
}

void loop() {
  // Semáforo 1 en verde y semáforo 2 en rojo
  digitalWrite(LED_VERDE_1, HIGH);
  digitalWrite(LED_ROJO_2, HIGH);
  delay(3000);

  // Parpadeo del LED verde del semáforo 1
  for (int i = 0; i < 5; i++) {
    digitalWrite(LED_VERDE_1, LOW);
    delay(300);
    digitalWrite(LED_VERDE_1, HIGH);
    delay(300);
  }
  
  // Apagar el verde del semáforo 1, encender amarillo por 2 segundos
  digitalWrite(LED_VERDE_1, LOW);
  digitalWrite(LED_AMARILLO_1, HIGH);
  delay(2000);

  // Apagar amarillo, encender rojo en el semáforo 1 y verde en el semáforo 2
  digitalWrite(LED_AMARILLO_1, LOW);
  digitalWrite(LED_ROJO_1, HIGH);
  
  digitalWrite(LED_ROJO_2, LOW);
  digitalWrite(LED_VERDE_2, HIGH);
  delay(3000);

  // Parpadeo del LED verde del semáforo 2
  for (int i = 0; i < 5; i++) {
    digitalWrite(LED_VERDE_2, LOW);
    delay(300);
    digitalWrite(LED_VERDE_2, HIGH);
    delay(300);
  }
  
  // Apagar el verde del semáforo 2, encender amarillo por 2 segundos
  digitalWrite(LED_VERDE_2, LOW);
  digitalWrite(LED_AMARILLO_2, HIGH);
  delay(2000);

  // Apagar amarillo, encender rojo en el semáforo 2
  digitalWrite(LED_AMARILLO_2, LOW);
  digitalWrite(LED_ROJO_2, HIGH);

  digitalWrite(LED_ROJO_1, LOW);
}

Publicaciones relacionadas

Encender y apagar led usando processing

Encender y apagar led usando processing

Encender y Apagar Luz LED Usando Processing Índice¿Qué es Processing? Temas importantes del proyecto Especificación detallada de las conexiones Especificaciones del proyecto Preg

read more
Multímetro

Multímetro

Introducción En esta clase, aprenderás sobre componentes electrónicos básicos como resistencias, potenciómetros y el uso de un multímetro para medir voltajes. También exploraremos cómo estos concep

read more
Semáforo sencillo

Semáforo sencillo

// C++ code //// Pines de los LEDs del semáforo sencillo const int LED_VERDE = 2; const int LED_AMARILLO = 3; const int LED_ROJO = 4;void setup() { // Configuración de los pines OUTPUT

read more
Web climatológica con hora

Web climatológica con hora

ÍndiceÍndice ¿Qué es una página web? Ejemplos de páginas web: [¿Cómo se construye una página web?](#cómo-se-construye-u

read more
Reloj digital LCD

Reloj digital LCD

Reloj digital LCD Introducción En este tutorial, vamos a crear un reloj digital utilizando un display LCD y un microcontrolador

read more
Semáforos Coordinados

Semáforos Coordinados

Semáforos coordinados Introducción En este proyecto, vamos a crear un sistema de semáforos coordinados utilizando Arduino.

read more
Markdown Style Guide

Markdown Style Guide

Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro. Headings The following HTML <h1>—<h6> elements represent six levels of section headings

read more
Pantallas LCD

Pantallas LCD

Introducción a las Pantallas LCD Las pantallas LCD (Liquid Crystal Display) son dispositivos electrónicos utilizados para mostrar información de manera clara y eficiente. Estas pantallas son muy co

read more
Personalizar caracteres en LCD

Personalizar caracteres en LCD

ÍndiceExplicación del Código Componentes Clave del Código Librería LiquidCrystal_I2C [In

read more
Galería Web

Galería Web

Introducción Este proyecto está diseñado para comprender las bases del desarrollo web, comenzando con HTML y CSS básicos y progresando a JavaScript interactivo. Se divide en **cuatro etapas evoluti

read more
Controlador L298N DC Motor para Arduino

Controlador L298N DC Motor para Arduino

Introduccion Si bien eventualmente necesitarás aprender a controlar motores de CC para construir tu propio robot, probablemente necesitarás algo un poco más fácil para comenzar, y ahí es donde entr

read more
Componentes HTML

Componentes HTML

import YouTubeEmbed from '../../layouts/components/YouTubeEmbed.astro'; Componentes HTML y Estilos CSS En este blog explicativo se muestran los componentes principales de HTML y estilos CSS para

read more
Portafolio web

Portafolio web

Proyecto: Página Personal o Portafolio Web Objetivo Crear una página web personal en la que se muestre:Una cabecera con tu nombre y un menú de navegación. Una sección "Sobre Mí" co

read more
Juego de adivinar el número

Juego de adivinar el número

Proyecto: Juego de Adivinar el Número Objetivo Crear un juego interactivo en el que el usuario debe adivinar un número aleatorio entre 1 y 100. El juego brindará retroalimentación indicando si

read more
Introducción a Javascript

Introducción a Javascript

Test Código<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Introducción a JavaScript</title> <style> /* E

read more
Examen Práctico: Mi Página Personal

Examen Práctico: Mi Página Personal

Examen Práctico: Objetivo Crear una página web personal con diseño moderno en la que se muestre:Una cabecera fija con tu nombre y un menú de navegación interactivo. **Una sección "Sob

read more
Proyectos

Proyectos

Planificación de 12 Semanas para Proyectos Los proyectos serán libres y sencillos, pero deberán abordar un problema escolar o de la comunidad, utilizando al menos dos de las tecnologías vistas en c

read more
Hosting y Alojamiento web

Hosting y Alojamiento web

Hosting, Dominios, Almacenamiento y Bases de Datos 🌐 🎯 ObjetivosEntender qué es un dominio y un hosting Conocer el papel del almacenamiento web Descubrir para qué sirven l

read more
Evaluación Parcial

Evaluación Parcial

Evaluación del Avance del ProyectoObjetivo General de la Evaluación:Verificar que los equipos hayan cumplido con al menos el 70% del desarrollo funcional del proyecto, incluyendo inte

read more
Bases para la Elaboración del Reporte Breve del Proyecto

Bases para la Elaboración del Reporte Breve del Proyecto

📝 Bases para la Elaboración del Reporte Breve del ProyectoFormato: Documento Word (máximo 4 páginas)Entrega: En formato digital (PDF), cargar en el apartado de Archivos.

read more
Mascota virtual

Mascota virtual

🐾 Proyecto: Mascota Virtual en Escritorio con Python Este proyecto te guiará paso a paso para crear una mascota virtual que se mueva por tu pantalla de Windows y muestre mensajes motivadores c

read more
Mascota virtual

Mascota virtual

🐾 Proyecto: Mascota Virtual en Escritorio con Python Este proyecto te guiará paso a paso para crear una mascota virtual que se mueva por tu pantalla de Windows y muestre mensajes motivadores c

read more
Instalación IDE Arduino

Instalación IDE Arduino

Instalación del Entorno de Desarrollo para Arduino Introducción En este

read more