#include <Servo.h>
const int ledVerde = 10;
const int ledNaranja = 11;
const int ledRojo = 12;
const int boton = 9;
const int pinServo = 23;
int estado = 0;
unsigned long tiempoInicio = 0;
Servo compuerta;
void setup() {
Serial.begin(9600);
compuerta.attach(pinServo);
compuerta.write(0); // cerrado
pinMode(ledVerde, OUTPUT);
pinMode(ledNaranja, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(boton, INPUT_PULLUP);
}
void loop() {
if (digitalRead(boton) == LOW && estado == 0) {
Serial.println(">>> Inicio del sistema");
compuerta.write(90); // abrir
digitalWrite(ledVerde, HIGH);
tiempoInicio = millis();
estado = 1;
delay(300); // anti-rebote
}
if (estado == 1 && millis() - tiempoInicio >= 10000) {
Serial.println(">>> Cambio a naranja");
digitalWrite(ledVerde, LOW);
digitalWrite(ledNaranja, HIGH);
estado = 2;
}
if (estado == 2 && millis() - tiempoInicio >= 20000) {
Serial.println(">>> Cambio a rojo y cierre");
digitalWrite(ledNaranja, LOW);
digitalWrite(ledRojo, HIGH);
compuerta.write(0); // cerrar
estado = 3;
}
if (digitalRead(boton) == LOW && estado == 3) {
Serial.println(">>> Reset");
digitalWrite(ledVerde, LOW);
digitalWrite(ledNaranja, LOW);
digitalWrite(ledRojo, LOW);
compuerta.write(0);
estado = 0;
delay(300);
}
delay(100);
}