problème de "delay"

Bonjour

Vous devriez redéfinir précisément ce que vous voulez effectuer et quand. si la porte est en mouvement d'ouverture, peu importe l'heure vous devez attendre le signal du capteur haut pour arrêter le moteur. Si la porte est en mouvement de fermeture, idem mais en bas.

Je ne comprends pas trop la nécessité du délai puisque vous gérez l'heure... commencez 20 secondes plus tard...

Sinon

Utilisez HIGH et LOW pas 0 et 1 dans le code

nommez les pins par exemple const byte ledRougePin = 6; et faites alors un voyantrouge = digitalRead(ledRougePin); cest plus lisible (je changerais aussi le nom de voyantrouge en etatVoyantRouge) idem pour les autres

Indentez (ctrl-T) le code correctement pour la lisibilité

Utilisez && au lieu de & pour le ET logique (& c'est pour un ET au niveau des bits, ça fonctionne par accident dans votre cas)

Ne mettez pas deux test identiques dans des OU logique, ça ne sert à rien (cf rtc.h24.Hour10 == 0  & rtc.h24.Hour == 9)

Utilisez < et > au lieu de tester toutes les valeurs entre deux extrêmes