Nunja, ich habe mir die zur Verfügung stehenden Mittel (aka Kenntnisse) eingesetzt.
Die 1sek Delays benötige ich, um aus den Endschaltern rauszukommen. Die kleineren hatte ich mal eingesetzt um kleine Schaltpausen zu haben.
Das mit dem Automaten habe ich mir schon angeschaut und werde es wohl mit dem nächsten Projekt so umsetzen.
Prinzipiell habe ich es ja so aufgebaut:
if (Lichtschranke == LOW) {
reagiere auf meine Schaltvorgänge und fahre zwischen meinen Endschaltern hin und her.
}
else (jemand / etwas ist in der LIchtschranke --> Lichtschranke == HIGH){
nur wenn Kabine zwischen Endschaltern (also beide LOW), dann
Motor Stopp, Drehrichtung nach oben, Motor fährt in Endschalter oben und bleibt da solange die LIchtschranke unterbrochen ist.
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.