#define ledPin 2
bool ledEncendido = false;
//Definimos el pin del botón
const int pulsador = 21;
int contador = 0;
bool isInterrup = false;
// Función de interrupción
void IRAM_ATTR botonInterrupcion() {
// void botonInterrupcion() {
// Cambiamos el estado del LED
isInterrup = true;
// contador++;
}
void setup() {
Serial.begin(115200);
pinMode(pulsador, INPUT_PULLUP); //luego cambiar a pull down
pinMode(ledPin, OUTPUT);
// Configuración de la interrupción en el pin del botón
attachInterrupt(digitalPinToInterrupt(pulsador), botonInterrupcion, FALLING);
}
void loop() {
// // Encendemos o apagamos el LED según el estado
digitalWrite(ledPin, ledEncendido);
// Mostramos el estado del LED en el Monitor Serie
if (ledEncendido){
Serial.println("Led encendido...");
Serial.println(contador);
}
else{
Serial.println("Led apagado");
Serial.println(contador);
}
delay(500);
if(isInterrup){
delay(20);
if(!digitalRead(pulsador)){
//verificado el valor recien consideramos que ha ocurrido una interrupcion y cambiamos el valor
ledEncendido = !ledEncendido;
//ok esta en estado bajo, hay cambio
// if (ledEncendido){
Serial.print("Interrupcion.... ");
Serial.println(++contador);
isInterrup = false;
}
}
// delay(50);
}