#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definición de pines para el Semáforo 1
#define S1_VERDE 13
#define S1_AMARILLO 12
#define S1_ROJO 11
// Definición de pines para el Semáforo 2
#define S2_VERDE 10
#define S2_AMARILLO 9
#define S2_ROJO 8
// Tiempos en milisegundos
#define TIEMPO_VERDE 5000 // 5 segundos
#define TIEMPO_AMARILLO 2000 // 2 segundos
//SENSORES MOVI
#define SENSOR1 2
#define SENSOR2 3
//LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
//SERVO
void setup() {
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("inicio");
// Configurar pines como salidas
pinMode(S1_VERDE, OUTPUT);
pinMode(S1_AMARILLO, OUTPUT);
pinMode(S1_ROJO, OUTPUT);
pinMode(S2_VERDE, OUTPUT);
pinMode(S2_AMARILLO, OUTPUT);
pinMode(S2_ROJO, OUTPUT);
pinMode(SENSOR1, INPUT);
pinMode(SENSOR2, INPUT);
// Estado inicial:
// Semáforo 1: Verde | Semáforo 2: Rojo
digitalWrite(S1_VERDE, HIGH);
digitalWrite(S2_ROJO, HIGH);
}
void loop() {
lcd.clear();
lcd.print(digitalRead(SENSOR1));
// Semáforo 1 en verde (5 segundos), Semáforo 2 en rojo
delay(TIEMPO_VERDE);
// Semáforo 1 pasa a amarillo (2 segundos), Semáforo 2 sigue en rojo
digitalWrite(S1_VERDE, LOW);
digitalWrite(S1_AMARILLO, HIGH);
delay(TIEMPO_AMARILLO);
// Semáforo 1 se apaga y pasa a rojo, Semáforo 2 se pone en verde
digitalWrite(S1_AMARILLO, LOW);
digitalWrite(S1_ROJO, HIGH);
digitalWrite(S2_ROJO, LOW);
digitalWrite(S2_VERDE, HIGH);
delay(TIEMPO_VERDE);
// Semáforo 2 pasa a amarillo (2 segundos), Semáforo 1 sigue en rojo
digitalWrite(S2_VERDE, LOW);
digitalWrite(S2_AMARILLO, HIGH);
delay(TIEMPO_AMARILLO);
// Semáforo 2 se apaga y pasa a rojo, Semáforo 1 vuelve a verde
digitalWrite(S2_AMARILLO, LOW);
digitalWrite(S2_ROJO, HIGH);
digitalWrite(S1_ROJO, LOW);
digitalWrite(S1_VERDE, HIGH);
}