#define INT_PIN 27
volatile int contadorPulsos = 0;
unsigned long lastInterruptTime = 0;
const unsigned long debounceDelay = 200;
volatile boolean pulso = false;

void IRAM_ATTR contarPulsos() {
  unsigned long interruptTime = millis(); // Obtener el tiempo de la interrupción

  // Verificar el tiempo de debounce
  if (interruptTime - lastInterruptTime > debounceDelay) {
    contadorPulsos++; // Incrementar el contador de pulsos cada vez que cambia de estado
    lastInterruptTime = interruptTime; // Actualizar el tiempo de la última interrupción
    pulso = true;
  }
}

void setup() {
  Serial.begin(115200);
  Serial.print("setup() running on core ");
  Serial.println(xPortGetCoreID());
  pinMode(INT_PIN, INPUT_PULLUP);  // Configura el pin del pluviómetro
  attachInterrupt(digitalPinToInterrupt(INT_PIN), contarPulsos, CHANGE); // Configura la interrupción para detectar cambios en ambos estados
}

void loop() {
  Serial.print("loop() running on core ");
  Serial.println(xPortGetCoreID());
  while (1) {
    if (pulso) {
      Serial.println("Pulsos contados: " + String(contadorPulsos)); // Mostrar en consola
      pulso = false;
    }
    yield();
    delay(10);
  }
}