#define TASTERPIN 2
#define RESET_PIN 3
#define LED_PIN 6
volatile int zaehlwert = 0 ;
void setup() {
Serial.begin(9600);
pinMode(TASTERPIN, INPUT_PULLUP);
pinMode(RESET_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(RESET_PIN), resetISR, FALLING);
}
void blinkLED(int blinks) {
for (int i = 0; i < blinks; i++) {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, 0);
delay(500);
}
}
void resetISR (){
zaehlwert = 0 ;
}
void loop() {
static bool vorherigerTasterStatus = HIGH; // Vorheriger Zustand von Taster 1 // Vorheriger Zustand von Taster 2 // Aktueller Zählerwert
static unsigned long debounceZeit = 50; // Entprellzeit in Millisekunden
static unsigned long letzteTasterZeit = 0; // Zeitpunkt der letzten Tasteränderung
unsigned long aktuelleZeit = millis(); // Aktuelle Zeit
// **1. Entprellen und Fehler durch langes Drücken für Taster 1 abfangen**
bool tasterStatus = digitalRead(TASTERPIN);
if (tasterStatus != vorherigerTasterStatus && (aktuelleZeit - letzteTasterZeit > debounceZeit)) {
letzteTasterZeit = aktuelleZeit; // Zeit aktualisieren
if (tasterStatus == LOW) { // Taster wurde gedrückt
zaehlwert++; // Zähler erhöhen
Serial.print("Zählwert: ");
Serial.println(zaehlwert);
// LED blinkt direkt beim Zählen
blinkLED(zaehlwert); // LED blinkt entsprechend der neuen Zählerzahl
}
}
vorherigerTasterStatus = tasterStatus; // Tasterstatus speichern
}