// Definición de pines
const int PIN_BOTON = 15;
const int PIN_LED = 16;
// Definición de estados de la máquina
enum Estado {
LED_APAGADO,
LED_ENCENDIDO
};
// Variables globales
Estado estadoActual = LED_APAGADO;
bool estadoBotonAnterior = HIGH; //
void setup() {
// Inicializar comunicación serial
Serial.begin(115200);
// Configurar pines
pinMode(PIN_BOTON, INPUT_PULLUP); // Botón
pinMode(PIN_LED, OUTPUT); // LED como salida
// Estado inicial: LED apagado
digitalWrite(PIN_LED, LOW);
estadoActual = LED_APAGADO;
Serial.println("Sistema iniciado en estado: LED_APAGADO");
}
void loop() {
// Leer estado actual del botón
bool estadoBotonActual = digitalRead(PIN_BOTON);
// Detectar evento (flanco descendente - presión del botón)
bool botonPresionado = (estadoBotonActual == LOW && estadoBotonAnterior == HIGH);
// Máquina de estados
switch (estadoActual) {
case LED_APAGADO:
// Acciones en estado LED_APAGADO
digitalWrite(PIN_LED, LOW);
delay(1000);
estadoActual = LED_ENCENDIDO;
// Transición si ocurre el evento
// if (botonPresionado) {
// estadoActual = LED_ENCENDIDO;
// Serial.println("Transición a estado: LED_ENCENDIDO");
// }
break;
case LED_ENCENDIDO:
// Acciones en estado LED_ENCENDIDO
digitalWrite(PIN_LED, HIGH);
delay(500);
estadoActual = LED_APAGADO;
// // Transición si ocurre el evento
// if (botonPresionado) {
// estadoActual = LED_APAGADO;
// Serial.println("Transición a estado: LED_APAGADO");
// }
break;
}
// Actualizar estado anterior del botón
estadoBotonAnterior = estadoBotonActual;
// Pequeña pausa para estabilidad
delay(10);
}