Wartezeit addieren

Hallo,
ich komme mit meinem Projekt gerade nicht weiter. Ich programmiere eine Zugangskontrolle. es müssen vier Taster in der richtigen Reihenfolge gerückt werden. Jede Falscheingabe erhöht die Wartezeit zur erneuten Eingabe um 10 Sekunden.

Meine Frage ist wie realisiere ich die Wartezeit. Wie setzte ich es um das die Wartezeit addiert wird

Eine Timer-Funktion in den Sketch giessen ?

Ja, ich bekomme keine Funktion aufgestellt die quasi die Zeit hoch zählt durch die falsche Tasteneingabe

Wie realisierst du aktuell die Eingabe?
Woran erkennst du, ob auf eine Taste gewartet wird oder ob die vorige Eingabe richtig/falsch war?
Kann man eine versehentliche Fehleingabe abbrechen?

Und welche Probleme hast du mit der angesprochenen Wartezeit ?

Zustandsmaschine mit mindestens zwei Zuständen. Eingabe und Warten/Verzögerung. Bei Falsch-Eingabe, die Zeit erhöhen und in den Zustand Warten wechseln.

const byte inputPin1 = 2;
const byte inputPin2 = 3;

const unsigned long pausezeit = 3000;
unsigned long wartezeit = 0;

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start..."));

  pinMode(inputPin1, INPUT_PULLUP);
  pinMode(inputPin2, INPUT_PULLUP);
}

void loop()
{
  if (millis() - lastmillis >= wartezeit)
  {
    if (!digitalRead(inputPin2))
    {
      lastmillis = millis();
      wartezeit += pausezeit;
      SeriallPrintln(F("Wartezeit bis öffnung: "));
      Serial.println(wartezeit);
    }
    if (!digitalRead(inputPin1))
    {
      wartezeit = 0;
      Serial.println(F("Wartezeit gelöscht"));
    }
  }
}
1 Like

setup
. const verlaengerungszeit = 42;
.Wartezeit = 0;

loop()

WENN(millis()-previousMillis > wartezeit) DANN holeEingabe

holeEingabe()
. WENN (richtig) wartezeit = 0;tuwas()
.WENN (falsch) DANN wartezeit = wartezeit + verlaengerungszeit
.previousMillis=millis();

Vielen Dank für die vielen Antworten. Ich versuche das ganz jetzt mal umzusetzen

Bei mir würde das irgendwie so aussehen....
wartezeit += 10_sec;

Bei anderen eventuell
wartezeit += 10000;
oder
wartezeit += 10;

Den Trick mit combies _sec kannst du dir auch gerne ansehen, wenn die eigentliche Frage "wie addiere ich einen Wert zu einer Variablen" (die mich immer noch verwundert) vom Tisch ist.

sorry das hatte ich nicht erwähnt. Die Wartezeit wird bei richtiger Eingabe auf nur noch 5 Sekunden Restwartezeit gesetzt.

Zeile 4: 5000 einsetzen
Zeile 5: wartezeit=0 ersetzen durch wartezeit=pausezeit;
Zeile 28 enbenso

1 Like

danke

und wie verknüpfe ich die Wartezeit mit den Taster. Also wie sage ich die Taster dürfen erst gedrückt werden, wenn die Wartezeit abgelaufen ist ?

Ich versteh Deine Frage nicht.
Kannst Du mal sagen, was Dein Problem ist?