const int BUTTON_PIN = 4;
volatile unsigned long lastInterruptTime = 0;
volatile unsigned long lastInterruptTime2 = 0;
bool buttonPressed = false;
int count = 0;
void IRAM_ATTR handleButtonInterrupt() {
if (millis() - lastInterruptTime > 50) {
buttonPressed = true;
lastInterruptTime = millis();
}
}
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), handleButtonInterrupt, CHANGE);
}
void loop() {
if (buttonPressed) {
buttonPressed = false;
count++;
if (millis() - lastInterruptTime2 > 200) {
count++;
lastInterruptTime2 = millis();
}
}
}