#include <Arduino.h>
const int buttonPin = 2; // Pin, an dem der Button 1 angeschlossen ist
const int resetButtonPin = 3; // Pin, an dem der Reset-Button angeschlossen ist
const int ledPins[] = {4, 5, 6, 7}; // Pins, an denen die LEDs angeschlossen sind
int buttonState = HIGH; // Aktueller Zustand des Buttons 1
int lastButtonState = HIGH; // Vorheriger Zustand des Buttons 1
unsigned long lastDebounceTime = 0; // Zeitpunkt des letzten Zustandswechsels (Button 1)
unsigned long debounceDelay = 50; // Entprellzeit (in Millisekunden)
unsigned int buttonPressCount = 0; // Zähler für die Anzahl der Button-Presses
int resetButtonState = HIGH; // Aktueller Zustand des Reset-Buttons
int lastResetButtonState = HIGH; // Vorheriger Zustand des Reset-Buttons
int resetButtonPressCount = 0; // Zähler für die Anzahl der Reset-Button-Presses
void setup() {
pinMode(buttonPin, INPUT);
pinMode(resetButtonPin, INPUT);
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // LEDs ausschalten
}
Serial.begin(9600);
}
void loop() {
// Button 1
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
// Button 1 wurde gedrückt
buttonPressCount++;
updateLEDs(buttonPressCount);
}
}
}
lastButtonState = reading;
// Button 2 (Reset-Button)
int resetButtonReading = digitalRead(resetButtonPin);
if (resetButtonReading != lastResetButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (resetButtonReading != resetButtonState) {
resetButtonState = resetButtonReading;
if (resetButtonState == LOW) {
// Button 2 wurde gedrückt
resetButtonPressCount++;
if (resetButtonPressCount == 1) {
// Reset-Button wurde einmal gedrückt, setze Button-Press-Zähler zurück
buttonPressCount = 0;
updateLEDs(buttonPressCount);
}
}
}
}
lastResetButtonState = resetButtonReading;
}
void updateLEDs(unsigned int count) {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], count & (1 << i) ? HIGH : LOW);
}
}