J'ai regardé un peu votre code.
Il y a un petit effort à faire pour trouver des noms de variables explicites. Ici, on a deux variables Aller et aller qui sont différentes, mais je ne comprends pas en première lecture à quoi elles servent. Alors, oui, un nom de variable explicite est plus long à taper mais c'est le prix à payer pour avoir un programme clair pour tout le monde (et pour vous si vous le reprenez dans un an ou plus).
Sinon, pour régler le problème des delay non pris en compte, on peut utiliser des Serial.print pour repérer par où passe le programme : il suffit de faire afficher des messages différents. Et avec cela, on peut mieux comprendre comment le programme se déroule.
Ne vous inquiétez pas : nous sommes aussi passés par là. Depuis, nous avons acquis des réflexes et plus on le fait tôt, mieux cela vaut.
Donc, ce que nous disons n'est pas une critique, mais plutôt un conseil : si vous l'appliquez, vous progresserez plus rapidement.