#include <Bounce2.h>

//#define BOUNCE_LOCK_OUT  // more responsive
//#define BOUNCE_WITH_PROMPT_DETECTION

// INSTANTIATE A Button OBJECT
Bounce2::Button button = Bounce2::Button();


const int btn1 = 2; //Taster 1
const int btn2 = 3; //Taster 2 mit Entprellung
int index = 0;      // Zählvariable

#define LED1_PIN 13   // interne LED
#define LED2_PIN 11   // interne LED
bool ledState = LOW; // Status


void doSomething() {    
    ledState = !ledState;           // invertiere Zustand
    digitalWrite(LED1_PIN, ledState); // LED zeigt Zustand an
    digitalWrite(LED2_PIN, ledState); // LED zeigt Zustand an
    index = index+1;
    Serial.println(index);    
}

void setup() {
  Serial.begin(115200);         // initialisiere serielle Kommunikation
  // Taster 1 ohne Entprellung
  pinMode(btn1, INPUT_PULLUP);  // Setzen des Eingangssignals des Tasters, Achtung kehrt Polarität um
  // Taster 2 mit Entprellung
  button.attach(btn2, INPUT_PULLUP); // nutze internen PULL-UP
  button.interval(5);  // DEBOUNCE INTERVAL IN MILLISECONDS
  button.setPressedState(LOW);  // Low-Zustand bedeutet Taster gedrückt
  // LED SETUP
  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  digitalWrite(LED1_PIN, ledState);
  digitalWrite(LED2_PIN, ledState);
}

void loop() {
  button.update();        // Aufruf in jeder Schleife
   
  if(digitalRead(btn1) == LOW){ 
    while (digitalRead(btn1) == LOW) {}
      // Taste 1 wurde gedrückt und losgelassen
    doSomething();
  }
  // Abfrage Taster 2 mit Entprellung 
  if ( button.pressed() ) {   
    doSomething(); 
  }

}
