Wenn du das _so_ lösen willst, wirst du eher ne while()-Schleife brauchen.
Der prüft in deinem Beispiel einmal, ob die Bedingung wahr ist, schaltet dann die Motoren kurz entsprechend und ist aus der Schleife wieder raus.
Vermutlich sorgt dann dein delay(500) im anderen Programmteil dafür, dass die halt ne halbe Sekunde lang so bleiben, wie sie eingeschalten wurden.


Allerdings frage ich mich, wieso du die Motoren zeitgesteuert handlen willst- warum nicht Ereignisgesteuert?
Du hast doch Drehgeber- damit wird es wesentlich einfacher, z.B. Fahrwege zu berechnen, oder auch Kurvenradien.
Zeitgesteuert wird das nie was...