Hi Max.
Ja, da sieht du ja auch, wie du die delay´s umgehen kannst. Bei dieser Art Programmaufbau dauert ein Loop Durchgang nur ein paar tausenstel Sekunden. Wenn du jetzt rechnest, dass ein Tastendruck zwischen 10 und 30 millisekunden dauert, ist klar dass man den so gut wie nie erwischt, wenn man delay´s im Programm hat. Sagen wir mal da ist nur ein Delay mit einer Sekunde. Dann passiert 1000ms NICHTS, dann läuft das Programm zur Tastenabfrage, da ist 1ms Zeit die Taste abzufragen, dann läuft das Programm wieder weiter, läuft wieder über dein delay() 1000ms nichts, dann wieder 1ms die Chance, den Tastendruck zu erwischen. So gehts dauernd weiter, 1ms Abfrage, 1000ms nichts,.......Wie soll das gehen, wenn der Tastendruck nur 10-30ms dauert? Da kannst du wärend der 1000ms Pause 10x die Taste drücken, ohne dass das Programm irgendwas davon mitbekommt. Oder mit deinem Endschalter, du hast eine seeeehr starke Mechanik. Die kommt an den Enschalter, aber deine Delay lassen das unbemerkt. Also fährt der Motorweiter, reißt deinen Endschalter ab, dann ist das Delay endlich zuende, aber leider der Enschalter schon KO, also dreht der Motor munter weiter, alle Hindernisse beseitigt.

Das kann nur schief gehen, das ist wie Lottospielen. Ein Sechser wenn du die Taste erwischt. Deshalb wirst du in funktionierenden Programmen keine delay´s finden. Aber so wie das Programm mit Millis() aufgebaut ist,fährt das in 10 Milliskunden 2-3x durch. Das heißt, auch der kürzeste Tastendruck wird locker immer sofort erwischt.
Ich mache zum Testen, wie lange ein Loop-Durchlauf dauert immer folgendes. Ich nehme am Anfang des Loop einmal die Millis in einen Merker, dann am Ende des Loop die Millis in einen zweiten Merker. dann rechne ich dort den Wert aus dem ersten Merker vom Wert aus dem zweiten Merker ab, dann bleiben die ms, die das Programm braucht, um von ersten Merker zum zweiten Merker zu kommen (also durch den kompletten Loop) übrig, und ich gebe den Wert in Serial.println(ergebnis) aus. Da haben meine Programme meistens nur ein paar wenige ms.
Schönen Tag
Franz