Problema con programa para barrera acceso vehiculos

ArduMyth:
¿Por qué usas los whiles() como si de if() se tratasen? ¿De donde viene esa manía últimamente con Arduino?
Aparte de la correspondiente interrupción del resto de código estos están dentro del LOOP que es un bucle infinito. No entiendo esta manía de programar así. No sé de donde salió.

Nunca había visto tanto bucle anidado para algo que se puede hacer con un if()
Yo directamente cambiaría TODO.

No está bien planteado. Lo has complicado de una forma...

Bien, creo que realmente no acabo de comprender el concepto de programación, no haciendo un buen uso de estos parametros, espero que esto me enseñe lo que no estoy haciendo bien.