Effectivement, ILS ou Hall n'est pas pour l'instant la priorité.
Je viens de reprendre votre code pour une carte Mega2560 et j'ai essayé de le compiler. L'erreur est que la variable 'arriveeC3' n'avait pas été déclarée !
Je l'ai donc déclarée comme vous l'avez fait pour 'arriveeG1' et cela compile ! C'est une première étape qui ne présage en rien du fonctionnement de votre système, mais c'est déjà ça.
De plus, je ne connais pas la façon d'utiliser la bibliothèque EnableInterrupt : j'ai vérifié que ma version est la 1.1.0 : et vous ?
Dans le enableInterrupt, vous pourriez remplacer 50 par 'ILS_arriveeG1' puisque vous l'avez déclaré précédemment.
Dans le loop, je ne comprends pas l'intérêt de faire un digitalRead() dont vous ne vous servez pas puisque vous utilisez des interruptions.
Autre remarque : sur ce code, quelques commentaires seraient les bienvenues ! Car ici, différentes variables portent des noms quasiment identiques : comment voulez-vous qu'un autre programmeur s'y retrouve ?
Enfin, je vous invite à relire ces deux articles donnant des montages similaires (un B.A.L ou Block Automatique Lumineux).
Le premier où on utilise des interruptions :
https://www.locoduino.org/spip.php?article204 Le deuxième où on se passe des interruptions car la surveillance des capteurs est suffisamment rapide pour ne pas louper d'événements, vu la vitesse à laquelle se déplacent les trains :
https://www.locoduino.org/spip.php?article297Voilà, j'espère que ces quelques remarques vous seront utiles pour votre montage.