J'ai un peu peur que ton code devienne assez vite une usine à gaz, avec des verrues un peu partout suite à des modifs pour prendre en compte des cas particuliers...
Tu devrais remettre tout à plat et écrire une bonne vieille machine d'états. Pour ça, il faut concevoir bien proprement les différents états. Après, s'il faut en ajouter, c'est relativement facile, mais c'est bien plus propre.
Commence par faire la liste des états : à la base il y a au moins
- Préparation de la course (et affichage)
- Compte à rebours
- Course (c'est à dire attente des passages des voitures à l'arrivée)
- Affichage du résultat
- L'état 1 attend qu'un bouton soit enfoncé je suppose.
- L'état 2 ne fait qu'un compte à rebours.
- L'état 3 est sûrement le plus complexe car il faut compter les passages devant les capteurs IR, noter les temps, lancer un chrono à chaque passage et vérifier ce timeout de 2 secondes. Il s'occupe aussi des afficheurs 7 digits. On sort de cet état si les 4 voitures sont passées ou si 2 secondes se sont écoulées depuis le passage de la première voiture.
- L'état 4 affiche les résultats et renvoie à l'état 1.
Je pense que tu as tout ce qu'il faut pour écrire ça, il faut juste que tu lises le tuto de @J-M-L sur les machines d'états. Moi j'ai appris grâce à ça...