#define TASTERPIN 2 // Pin für Taster 1 (Zählfunktion)
#define RESET_PIN 3 // Pin für Taster 2 (Zurücksetzen des Zählers)
#define LED_PIN 6 // Pin für die LED
void setup() {
Serial.begin(9600);
pinMode(TASTERPIN, INPUT_PULLUP); // Taster 1 mit Pull-Up-Widerstand
pinMode(RESET_PIN, INPUT_PULLUP); // Taster 2 mit Pull-Up-Widerstand
pinMode(LED_PIN, OUTPUT); // LED als Ausgang
}
void blinkLED(int blinks) {
for (int i = 0; i < blinks; i++) {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
}
void loop() {
static bool vorherigerTasterStatus = HIGH; // Vorheriger Zustand von Taster 1
static bool vorherigerResetStatus = HIGH; // Vorheriger Zustand von Taster 2
static int zaehlwert = 0; // Aktueller Zählerwert
static unsigned long debounceZeit = 50; // Entprellzeit in Millisekunden
static unsigned long letzteTasterZeit = 0; // Zeitpunkt der letzten Tasteränderung
static unsigned long letzteResetZeit = 0; // Zeitpunkt der letzten Reset-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
// **2. Entprellen und Fehler durch langes Drücken für Taster 2 abfangen**
bool resetStatus = digitalRead(RESET_PIN);
if (resetStatus != vorherigerResetStatus && (aktuelleZeit - letzteResetZeit > debounceZeit)) {
letzteResetZeit = aktuelleZeit; // Zeit aktualisieren
if (resetStatus == LOW) { // Reset-Taster wurde gedrückt
zaehlwert = 0; // Zähler zurücksetzen
Serial.println("Zählwert zurückgesetzt!");
digitalWrite(LED_PIN, LOW); // LED ausschalten
}
}
vorherigerResetStatus = resetStatus; // Resetstatus speichern
}