Bon,
On a passé en revue les alimentations et les capteurs infra-rouges. Un petit oscillo est même en commande. Et toujours aucun résultat
On ne sait pas quels remèdes tu as éventuellement appliqués, quels tests tu as faits pour y voir plus clair.
Donc maintenant il faut rechercher autrement qu'en déclarant qu'il y a un problème.
Je te suggère d'ajouter dans ton programme des lignes supplémentaires contenant Serial.println("1"); avec "1" puis "2", "3", .. etc qui correspondent à des cas particuliers que tu pourras tracer de cette façon sur le terminal de l'IDE Arduino. Les messages "1", "2", etc.. peuvent être plus explicites comme "IR1", "IR2", ..
Par exemple Serial.println("1"); à chaque détection IR dans la gare qui pose problème. Serial.println("2"); pour la détection IR dans la gare qui ne pose pas de problème. Serial.println("3"); juste avant ou après une commande d'aiguille ou de relai de traction.
Comme le programme se plante d'après ce que tu nous écris, tu verras le programme se dérouler sur l'écran du terminal au fur et à mesure des affichages, jusqu'au moment où ça s'arrête. Cela te donnera un piste pour explorer ce qui se passe juste avant.
Tu verras aussi probablement les effets des parasites (électriques cette fois !), par exemple plusieurs fois de suite le même messages "1" signifierait des rebonds à éliminer.
Si les Serial.println() que tu auras ajouté ne t'éclairent pas suffisamment, il faudra en ajouter d'autres.
C'est laborieux, mais ça marche très souvent.
Un plantage du programme me fait penser aussi à un manque de mémoire : quelle est la taille de mémoire disponible, affichée dans la fenêtre de l'IDE après une vérification ? En cas de doute la mémoire disponible pendant que le programme tourne peut être affichée à l'aide d'une routine comme :
int freeRam () { int v; // calcul de la memoire libre
extern int __heap_start, *__brkval;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Maintenant tu connais le principe et nous espérons te lire prochainement avec une belle explication des causes et des remèdes (que j'espère au singulier) qui pourraient servir la communauté Locoduino, bien entendu.
Bonne chance