Bonjour Gily,
gily a écrit:Mais je n'ai pas de vraie centrale DCC, juste un arduino mega seul.
A l'occasion je pourrais tester chez mon oncle avec sa centrale si besoin
gily a écrit:Je ne comprends pas comment est gérée la rétro ; apparemment les détecteurs sont branchés sur les entrées de l'arduino et on reçoit un évenement
Q id ou q id. Mais comment est lié l'id du détecteur dans l'arduino avec son adresse (513 ...) dans cdm ? On doit envoyer à l'arduino la table entre pin d'entrée et ID...
En fait la centrale Arduino ne gère absolument pas les id des détecteurs, elle fonctionne sur le principe du S88. Donc elle interroge à rythme régulier le réseau S88 et stock simplement toute la trame S88 dans une variable.
S'il y a changement entre deux retours d'états, alors elle renvoie la trame sous la forme demandée par le logiciel pilote. Pour elle le premier détecteur de la trame S88 aura donc l'id 1, le second l'id 2 et ainsi de suite.
Il existe trois types de retour:
- La forme binaire classique (dite brute en quelque sorte) ou chaque détecteur est représentée par un 0 ou 1 selon son état
- La forme hexadécimale où les détecteurs sont regroupés par groupes de quatre et l'état de ce groupe est représenté par un caractère hexadécimal (c'est ce qu'utilise la DLL dans CDM)
- Et enfin la forme Q, ou chaque adresse de détecteur est renvoyé avec soit la lettre majuscule Q qui signifié que le détecteur est actif (donc le canton occupé) soit avec la lettre minuscule q qui signifie qu'il est inactif (que le canton est libre donc). C'est notamment cette forme qu'utilise JMRI et ROCRAIL, qui est à mon sens la plus simple d'ailleurs.
Il faut néanmoins spécifier a l'Arduino combien de détecteurs sont en fonctionnement sur le réseau via la commande <Y Nb_S88_Modules DataFormat>, ou Nb_S88_Modules représente le nombre de modules sur lesquels 8 détecteurs sont branchés et DataFormat le format de retour que l'on souhaite obtenir.
Par exemple, pour 40 détecteurs nous avons 5 modules ou pour 160 détecteurs nous avons 20 modules.
Ensuite pour un format hexa la variable DataFormat vaudra 1, pour un format type binaire ça sera 0 et pour un format type JMRI ça sera 3.
Ce qui nous donne dans le cas de nos deux exemples ci-dessus pour CDM une commande <Y 5 1> (pour 40 détecteurs) ou <Y 20 1> (pour 160 détecteurs).
Mathieu