const int buttonPin = 2; // Pin, an dem der Button angeschlossen ist
// Boolsche Variablen, die gesetzt werden
bool mode1 = false;
bool mode2 = false;
bool mode3 = false;
// Timer Variablen
unsigned long pressStartTime = 0;
bool pressHandled = false;
// Debounce Variablen
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50; // Entprellzeit in Millisekunden
int buttonState;
int lastButtonState = HIGH; // Initialer Zustand des Knopfes, assuming pull-up
void setup() {
// Setze den Button-Pin als Eingang mit Pullup-Widerstand
pinMode(buttonPin, INPUT_PULLUP);
// Starte die serielle Kommunikation für Debugging-Zwecke
Serial.begin(9600);
}
void loop() {
modeButton();
}
void modeButton(){
// Lese den aktuellen Zustand des Buttons
int reading = digitalRead(buttonPin);
// Überprüfe, ob sich der Button-Zustand geändert hat (Entprellen)
if (reading != lastButtonState) {
lastDebounceTime = millis(); // Setze die Entprellzeit zurück
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Wenn der aktuelle Zustand des Buttons anders ist als der gespeicherte Zustand
if (reading != buttonState) {
buttonState = reading;
// Wenn der Knopf gedrückt ist
if (buttonState == LOW) {
pressStartTime = millis();
pressHandled = false;
Serial.println("Button pressed");
}
else {
// Wenn der Knopf losgelassen wird
if (pressStartTime != 0) {
Serial.println("Button released");
if (millis() - pressStartTime <= 2000){
mode1 = true;
Serial.println("Mode 1 aktiviert");
}
if (millis() - pressStartTime > 2000 && millis() - pressStartTime <= 5000){
mode2 = true;
Serial.println("Mode 2 aktiviert");
}
if(millis() - pressStartTime > 5000){
Serial.println("Mode 3 aktiviert");
}
}
pressStartTime = 0;
pressHandled = false;
}
}
}
// Speichere den aktuellen Button-Zustand
lastButtonState = reading;
// Berechne die verstrichene Zeit, wenn der Knopf gedrückt ist
/*if (buttonState == LOW && pressStartTime != 0) {
unsigned long elapsedTime = millis() - pressStartTime;
if (elapsedTime >= 2000 && !pressHandled) {
mode2 = true;
Serial.println("Mode 2 aktiviert");
pressHandled = true; // Verhindert, dass dieser Block erneut ausgeführt wird
}
if (elapsedTime >= 5000) {
mode3 = true;
Serial.println("Mode 3 aktiviert");
}
}*/
}