// 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);
}