Nunja, ich habe mir die zur Verfügung stehenden Mittel (aka Kenntnisse) eingesetzt.
Ich weiß... habe es mir zumindest so gedacht...
Also ist jetzt eine gute Gelegenheit hinzuzulernen.
Denn mit deinen bisherigen Mitteln geht es ja nicht.
Die 1sek Delays benötige ich, um aus den Endschaltern rauszukommen.
Auch das weiß ich.
Und es lässt sich dennoch anders lösen.
Es ist nicht so, dass die delay da grundsätzlich falsch sind. Aber sie verhindern, dass du eine tragfähige Strategie hin bekommst.
z.B. wenn während des Delay, die Lichtschranke belegt wird, kollidiert das mit der anderen Anforderung: Sofort stoppen, wenn Lichtschranke belegt.
Das ist ein logischer Fehler.
Du kannst natürlich behaupten, dass niemals ein 3 Jähriges Kind, auf einem Lkw Dach fest gekettet, genau in dem 1 Sekundenbereich, vom Rolltor, zum sterben gezwungen wird, weil niemand Kinder auf Dächer bindet.
Ich glaube dir das, aber ein TÜV Prüfer nicht.
Und die Versicherung auch nicht.
Es gibt keinen Grund 1 Sekunde zu fahren, und erst dann die Lichtschranke zu prüfen.
Besser wäre es erst los zu fahren, wenn die Lichtschranke nicht belegt ist.
Nein, ein delay halte ich in der Situation für böse.
Man kann einen mechanischen/elektrischen Fehler erkennen, wenn der Endschalter nicht innerhalb einer Sekunde frei wird.
Auch für den Fall, dass beide Endschalter belegt sind, kann man einen Fehlerzustand generieren.
Das Problem ist halt, wenn der Fremdkörper in der Lichtschranke bleibt. Dann ist man ja immer wieder bei "Motor Stopp" in der else Anweisung.
Das ist genau der Grund, warum ich sagte, du sollst die Bedingungen vom Zustand abhängig machen.
Dann hättest du das Problem nicht.
Das mit dem Automaten habe ich mir schon angeschaut und werde es wohl mit dem nächsten Projekt so umsetzen.
Meine ernste Empfehlung:
Nicht im nächsten!
In diesem.
Es wird sowieso ein Automat daraus(wenn es denn funktioniert).
Egal, ob du das beabsichtigst.
Egal, ob du die Theorie dahinter vollständig verstanden hast.
Also, dann doch besser mit dem richtigen Ansatz schnell und erfolgreich fertig werden.