Bonjour,
Evidemment c'est un peu plus compliqué. Il faut ajouter une machine à état (automate) pour rendre compte de l'état d'une remise et des actions possibles.
Donc, en plus de la position ouverte ou fermée, une remise peut être dans 4 états :
- ARRETE : les deux portes sont à l'arrêt
- RETARD_DROIT : la porte gauche est en mouvement et la droite est en attente
- RETARD_GAUCHE : la porte droite est en mouvement et la gauche en attente
- MOUVEMENT : les deux portes sont en mouvement ou l'une d'entre elle l'a terminé alors que l'autre est toujours en mouvement
On donne les transitions possibles entre les états :
En rouge ce sont des gardes : la transition n'est possible que si elle est vraie, sinon on reste dans l'état
En vert les actions : ce qui est effectué lorsque la transition est franchie
Ci dessous le sketch : on tire au hasard la porte qui va être en retard, on tire au hasard de combien est le retard, c'est réglable en millisecondes avec RETARD_MIN et RETARD_MAX. C'est compatible avec le setup et le loop de votre programme actuel.