ich habe mir einen endlichen automat (zeitgesteuert) geschrieben, wobei ich eure Hilfe benötige.
Folgendes:
Mein Automat arbeit 4 Schritte ab in denen er nacheinander Alle LEDs ausschaltet mit Zeit1=3000ms.
Nun möchte ich aber eine Pause funktion einbauen, sprich, eine Variable die durch einen Schalter auf 1 oder true (is ja egal) gesetzt wird, wenn dieser schalter also gedrückt wird, soll pausiert werden, sobald ich einen anderen schalter betätige (ändern der variable auf 0 oder false), soll er wieder die Zeit da ablaufen an der stelle ich eine Pause gemacht hab.
Ein einzelner Automat mit einem Stop benötigt für jeden aktiven Zustand einen gestoppten Zustand, damit die Rückkehr nach Aufhebung des Stop funktionieren kann.
Wenn man den Automaten in ein Unterprogramm verschiebt, dann kann man einen Stop ganz einfach dadurch implementieren, daß das Unterprogramm im gestoppten Zustand nicht aufgerufen wird. Beim Aufheben des Stop muß man nur noch dafür sorgen, daß ggf. unterbrochene Zeitintervalle richtig weiterlaufen.
Pausieren meinst Du die angefangene Zeiten einfrieren und bei Start die Restzeit weitermachen?
Bei STOP Zeiten zwischenspeichern. Warten-Flag setzen
Auf Start kontrollieren und nichts machen
Bei START Zeiten zurückspeichern Warten Flag löschen und weiterarbeiten.
Also hab das mit deinem Code probiert, funktioniert alles fast alles einwandfrei.
Problem ist nur genau das was ich immer hatte.
Er macht zwar an der Stelle weiter aber die gestoppte Zeit wird eben nicht gespeichert.
folgendes Szenario: ich stoppe irgendwo mit schalter1 wenn LED 1 aus und LED 2,3 an sind (schritt 2).
Dann drücke ich zb nach 10 sek. den Schalter 2 und nun springt er mir gleich in den schritt 3, da die (Zeit1:3000ms) 3sek. eben schon abgelaufen sind. Bräuchte also wenn ich Schalter 1 betätige die gestoppte Zeit und rechne diese dann minus die verstrichene Zeit die er normal hätte ohne pause gedrückt zu haben.
Denke ich da richtig? wie würde das als code aussehen?
[EDIT]: Habe gerade gelesen dass du den neuen Post geschrieben hast. Super Danke dir funktioniert
Gedacht habe ich richtig nur codetechnisch wusste ich nicht wie ich das schreiben soll