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