#define SENSOR_PIN 2 // Sensor pin (interrupt 0)
unsigned long intervalSensor = 1000;
unsigned long intervalCounter = 0;
volatile int counter = 0;
void counterIRQ()
{
static unsigned long lastTimeinterrupt = 0;
unsigned long timeInterrupt = millis();
// Debounce, ignore noise < 100ms
if (timeInterrupt - lastTimeinterrupt >= 100) {
// Increment counter
counter++;
}
lastTimeinterrupt = timeInterrupt;
}
void setup() {
Serial.begin(9600);
pinMode(SENSOR_PIN, INPUT_PULLUP);
attachInterrupt(0, counterIRQ, RISING);
}
void loop() {
// Wait 1 second and print counter
if ((millis() - intervalCounter) >= intervalSensor) {
// Reset timer
intervalCounter = millis();
Serial.println("\x1b[2J\x1b[;H");
Serial.print(" Counter => ");
Serial.println(counter);
}
}