#define boton 18
int tiempoI;
int duracion;
volatile bool boton_pulsado = false;
void IRAM_ATTR medida(){
if(digitalRead(boton) == LOW){
tiempoI = millis();
boton_pulsado = true;
}
else if(digitalRead(boton) == HIGH && boton_pulsado){
duracion = millis() - tiempoI;
Serial.print("Duración del pulso: ");
Serial.print(duracion);
Serial.println(" ms");
boton_pulsado = false;
}
}
void setup() {
Serial.begin(115200);
pinMode(boton, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(boton), medida, CHANGE);
}
void loop() {
delay((10));
}