// Definición de pines
const int botonAzul = 18; // Botón azul
const int botonNegro = 19; // Botón negro
const int botonBlanco = 21; // Botón blanco
const int ledAlerta = 23; // LED 1: Indicador de alerta
const int ledAlarma = 22; // LED 2: Alarma activa
const int ledAnulada = 25; // LED 3: Alarma anulada
void setup() {
// Configuración de pulsadores como entradas con resistencias internas pull-up
pinMode(botonAzul, INPUT);
pinMode(botonNegro, INPUT);
pinMode(botonBlanco, INPUT);
// Configuración de LEDs como salidas
pinMode(ledAlerta, OUTPUT);
pinMode(ledAlarma, OUTPUT);
pinMode(ledAnulada, OUTPUT);
// Inicialización de LEDs apagados
digitalWrite(ledAlerta, LOW);
digitalWrite(ledAlarma, LOW);
digitalWrite(ledAnulada, LOW);
}
void loop() {
// Lectura de los estados de los botones
bool estadoAzul = digitalRead(botonAzul); // Pulsado = HIGH -> Negado a true
bool estadoNegro = digitalRead(botonNegro);
bool estadoBlanco = digitalRead(botonBlanco);
// LED 1: Indicador de alerta
// Se enciende si los botones azul y negro están presionados simultáneamente
digitalWrite(ledAlerta, estadoAzul && estadoNegro);
// LED 2: Alarma activa
// Parpadea cada 250ms si cualquiera de los botones blanco o negro está presionado
if (estadoBlanco || estadoNegro) {
digitalWrite(ledAlarma, millis() % 500 < 250); // Parpadeo controlado con millis()
} else {
digitalWrite(ledAlarma, LOW); // Apagado si ninguno de los botones está presionado
}
// LED 3: Alarma anulada
// Se enciende si los botones blanco y negro están presionados simultáneamente,
// pero solo si el botón azul no está presionado
digitalWrite(ledAnulada, estadoBlanco && estadoNegro && !estadoAzul);
}