#include <Arduino.h>
// -------------------- Definición de pines --------------------
// Semaforo vehiculos
int ledRojo = 2;
int ledAmarillo = 3;
int ledVerde = 4;
// Semaforo Peatones
int ledRojoPeaton= 5;
int ledVerdePeaton= 6;
// Sensor y buzzer
int sensor = 7;
int buzzer = 8;
// -------------------- Variables de control --------------------
// Estado del semáforo
int estadoSensor = 0;
// -------------------- Configuración inicial --------------------
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRojoPeaton, OUTPUT);
pinMode(ledVerdePeaton, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(sensor, INPUT);
}
// -------------------- Prototipos de funciones --------------------
void fasePeaton();
void cicloSemaforo();
// -------------------- Bucle principal --------------------
void loop() {
estadoSensor = digitalRead(sensor);
if (estadoSensor == HIGH) {
fasePeaton();
} else {
cicloSemaforo();
}
}
// -------------------- Fase especial para peatones --------------------
void fasePeaton() {
digitalWrite(ledRojo, HIGH);
digitalWrite(ledVerdePeaton, HIGH);
digitalWrite(buzzer, HIGH);
delay(10000);
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerdePeaton, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(ledRojoPeaton, LOW);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, LOW);
}
// -------------------- Ciclo normal del semáforo --------------------
void cicloSemaforo() {
// Verde
digitalWrite(ledVerde, HIGH);
//digitalWrite(ledRojoPeaton, HIGH);
delay(3000);
digitalWrite(ledVerde, LOW);
//digitalWrite(ledRojoPeaton, LOW);
// Amarillo
digitalWrite(ledAmarillo, HIGH);
delay(1000);
digitalWrite(ledAmarillo, LOW);
// Rojo
digitalWrite(ledRojo, HIGH);
//digitalWrite(ledVerdePeaton, HIGH);
digitalWrite(buzzer, HIGH);
delay(3000);
digitalWrite(ledRojo, LOW);
//digitalWrite(ledVerdePeaton, LOW);
digitalWrite(buzzer, LOW);
}