Darf ich um Tipps zur Programmierung bitten?

Hallo,

wichtig ist, dass du möglichst auf längere Delays verzichtest. Zeitliche Steuerungen sollten über millis() gemacht werden. Stichworte sind Blinkwithoutdelay, endlicher Automat, Nachtwächtererklärung usw.
Schleifen (for, while) führen leicht zu blockierendem Code. Besser ist mit Zustandsvariablen in der Loop zu arbeiten.

In einfachen Fällen funktioniert zwar blockierender Code, aber sobald der Arduino während des Ablaufs reagieren können soll, ist man in der Sackgasse und muss das Programm oftmals komplett neu schreiben. Während der Arduino z.B. mit Delay blockiert ist, kann er z.B. keinen Endschalter mehr abfragen.