[RÉSOLU]Aide pour un programme signal PWM

Les capteurs.
Je propose d'utiliser les entrées d'interruptions.

les interruptions permettent d'exécuter un bout de code (fonction dite "routine d'interruption") le plus simple possible mais qui est appelé directement par le processeur change le signal en question change (CHANGE), monte de GND à VCC (RAISING) ou tombe de VCC à GND (FALLING). Cette fonction est exécutée immédiatement lorsque le signal change sans que tu ais besoin de faire un digitalRead() et où que tu sois par ailleurs dans ton code.

L'intérêt dans notre cas ici, c'est que le passage du train sur le capteur REED peut être très court.
En utilisant if ( digitalRead()...) tu risques de tester le signal trop tard (il à changé puis rechangé) et de ne pas voir le passage sur le capteur.
Résultat connu :

En utilisant l'interruption, où que soit le code, quand le train passe sur le capteur, le code est automatiquement détourné sur la routine d'interruption où je mémorise dans une variable globale que le capteur est passé. Puis on reprend l'exécution du programme où l'on était. On peut alors tranquillement tester la variable capteur_X.

Tu ne peux pas utiliser n'importe qu'elle broches pour cela.
La broche d'interruption n°0 est la pin 2.
La broche d'interruption n°1 est la broche 3.
C'est pour cela qu'il y a double définition.

Note que dans mon test je considère que le relai reed est relié vers la masse et qu'il y a une résistance de pull-up vers le VCC.
Ce que tu as bien dans ton dessin sauf que moi j'ai choisit d'avoir 2 broches, une par capteur.

Tu devrais pouvoir t'en sortir avec une seule broche mais fait attention car quand le train va repasser déclencher 2 fois le signal :

  • une fois pendant la phase d'accélération
  • une fois en arrivant a destination
    Je ne commence a tester le signal qu'à la fin de la phase d'accélération mais comme la phase d'accélération dure le même temps que la phase de décélération, il est probable qu'en fin d'accélération le train passe juste devant le 1er capteur. Donc il y a un risque qu'il s'arrête tout de suite.
    Si tu ne peux pas avoir 2 broches différentes, il faudra ajouter une étape tampon de quelques secondes, ou une mesure de temps dans l'état actuel pour être sur d'ignorer le signal tant que tu n'est pas assez loin.