const int boton1Pin = 2; // Pin del primer botón
const int boton2Pin = 3; // Pin del segundo botón
const int ledPin = 10; // Pin del LED incorporado en la mayoría de las placas Arduino
volatile bool ledEncendido = false; // Variable para controlar el estado del LED
volatile bool boton1Presionado = false; // Variable para rastrear el estado del primer botón
void setup() {
pinMode(boton1Pin, INPUT_PULLUP); // Configura el primer botón como entrada con resistencia de pull-up
pinMode(boton2Pin, INPUT_PULLUP); // Configura el segundo botón como entrada con resistencia de pull-up
pinMode(ledPin, OUTPUT); // Configura el LED como salida
// Configura interrupción externa para el primer botón en el flanco de bajada (cuando se presiona el botón)
attachInterrupt(digitalPinToInterrupt(boton1Pin), boton1Interrupcion, FALLING);
// Configura interrupción externa para el segundo botón en el flanco de bajada (cuando se presiona el botón)
attachInterrupt(digitalPinToInterrupt(boton2Pin), boton2Interrupcion, FALLING);
}
void loop() {
// El programa principal no necesita hacer nada aquí, ya que las interrupciones controlan el LED.
if (ledEncendido) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
}
void boton1Interrupcion() {
// Función de interrupción para el primer botón
boton1Presionado = !boton1Presionado; // Alterna el estado del primer botón
if (boton1Presionado) {
ledEncendido = true; // Enciende el LED
}
}
void boton2Interrupcion() {
// Función de interrupción para el segundo botón
boton1Presionado = false; // Apaga el LED cuando se presiona el segundo botón
ledEncendido = false;
digitalWrite(ledPin, LOW);
}