const int buttonPin = 2;
const int ledPin = 13;
int count = 0;
unsigned long lastPressTime = 0;
unsigned long lastValidPressTime = 0;
volatile boolean isPressed = false;
void buttonPressed() {
isPressed = true;
}
void setup() {
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), buttonPressed, RISING);
Serial.begin(9600);
}
void loop() {
if (isPressed) {
isPressed = false;
const int now = millis();
if ((now - lastPressTime) > 50) { // 50ms for bounce.
lastPressTime = now;
if ((now - lastValidPressTime) > 500) { // 500ms for press interval.
lastValidPressTime = now;
count += 1;
Serial.println(count);
}
}
}
}