Taster nach dem Auslösen für eine bestimmte Zeit sperren?


12.01.2023, 19:35

(mir geht es um die Verwendung eines Arduino)

1 Antwort

Du kannst mit der Funktion millis() die Millisekunden seit dem Start des Arduino auslesen. Beim drücken der Taste kannst du dann nachschauen, ob schon genügend Millisekunden seit dem letzten Mal abgelaufen sind.

Ich hab grade keinen Arduino hier, um es zu testen, aber ungefähr so sollte es gehen:

int taster = 1;
int led = 2;
long disableTime = 60000; // Hier speichern wir, wie lange die Taste gesperrt bleiben soll. 60000ms = 60s = 1 Minute
long startMillis = -disableTime; // Hier speichern wir die Zeit seit der letzten Auslösung. 
                                 // -disableTime, damit man direkt nach dem Start des Arduino das erste mal auslösen darf

void setup() {
  pinMode(taster, INPUT);
  pinMode(led, OUTPUT);
}

void loop() {
  // Taste nur zulassen, wenn die Zeit abgelaufen ist
  if (digitalRead(taste) == HIGH && millis() - startMillis > disableTime) { 
    startMillis = millis() // aktuelle Zeit speichern
    // TODO: Hier kommt der Code hin, der bei Auslösung des Tasters ausgeführt werden soll
  }
}