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