volatile uint32_t countButton = 0; // Зберігає кількість переривань для кнопки
volatile uint32_t totalPressesButton = 0; // Зберігає загальну кількість натискань для кнопки
volatile unsigned long lastDebounceTimeButton1 = 0; // Час останнього зміни стану для кнопки 1
volatile unsigned long lastDebounceTimeButton2 = 0; // Час останнього зміни стану для кнопки 2
const unsigned long debounceDelay = 100; // Затримка для антидребізгу (мілісекунди)
void incrementCountButton1() {
if ((millis() - lastDebounceTimeButton1) > debounceDelay) {
countButton++;
totalPressesButton++;
lastDebounceTimeButton1 = millis();
}
}
void incrementCountButton2() {
if ((millis() - lastDebounceTimeButton2) > debounceDelay) {
if(countButton == 0){
}else {
countButton--;
totalPressesButton--;
}
lastDebounceTimeButton2 = millis();
}
}
void setup() {
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP); // Доданий пін для другої кнопки
attachInterrupt(digitalPinToInterrupt(2), incrementCountButton1, RISING);
attachInterrupt(digitalPinToInterrupt(3), incrementCountButton2, RISING); // Переривання для другої кнопки
}
void loop() {
// Виводимо кількість переривань для кнопки
Serial.print("Button Interrupt count: ");
noInterrupts();
Serial.println(countButton);
interrupts();
delay(100);
}