Wie zeitliche Abläufe ohne delay() einfach gestalten?

@Michael: Vielen Dank, dein Code ist genau das was ich gesucht habe, funktioniert genauso wie ich es wollte.

Jedoch habe ich da noch eine Frage:
Die Funktion soll nur dann ablaufen, wenn der Einschalter auf 1 steht und der Endlageschalter auf 0. Sobald sich einer dieser Werte ändert, soll der Ablauf gestoppt werden.

Mein Ansatz mit der if-Bedingung:

 if (endlageValue == 0 && einaus == 1)
{
...
}

Wenn ich den Endschalter betätigt (=1) und Einschalter(einaus=1), passiert nichts. Wenn ich den Endschalter loslasse, startet die Funktion. Also genau so wie ich es will. Wenn jedoch die Funktion abläuft und ich den Endschalter oder Einschalter betätige, dann läuft die Funktion immer noch weiter bzw. wird am momentanen Schritt gestoppt und der Schritt läuft im Dauermodus.

Was muss ich ändern, damit die Funktion beim Ändern der Bedingungen sich resettet bzw. stoppt?