#include <Arduino.h>
// Pines para los LEDs del semáforo
const int rojo_led = 8;
const int amarillo_led = 9;
const int verde_led = 10;
// Pines para los segmentos del display de 7 segmentos (a-g)
// AJUSTA ESTOS PINES SEGÚN TU CONEXIÓN FÍSICA
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 12};
// Mapa de números (para display de CÁTODO COMÚN: 0 enciende, 1 apaga)
const byte num_map[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
// Contador para el LED verde
int Verde_count = 0;
void setup() {
pinMode(rojo_led, OUTPUT);
pinMode(amarillo_led, OUTPUT);
pinMode(verde_led, OUTPUT);
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], HIGH); // Apaga todos los segmentos
}
}
void loop() {
simulate_traffic_light();
delay(1000);
}
// Función para mostrar un número en el display
void display_number(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], num_map[num][i]);
}
}
// Simulación del semáforo
void simulate_traffic_light() {
digitalWrite(rojo_led, HIGH);
delay(3000);
digitalWrite(rojo_led, LOW);
digitalWrite(amarillo_led, HIGH);
delay(1000);
digitalWrite(amarillo_led, LOW);
digitalWrite(verde_led, HIGH);
Verde_count++;
display_number(Verde_count % 10);
delay(3000);
digitalWrite(verde_led, LOW);
digitalWrite(amarillo_led, HIGH);
delay(1000);
digitalWrite(amarillo_led, LOW);
}