Déclenchement de l’interruption via la bibliothèque dcc_decoder
Bonjour,
lecteur assidu de locoduino depuis que j'ai découvert le site en aout (peu de temps après avoir découvert le monde de l’Arduino et le DCC en modélisme ferroviaire), J'ai jusqu’à présent trouvé toutes les réponses a mes questions en explorant les divers articles.
Merci au passage à tous les contributeurs qui ont fait mon éducation sur arduino.
Je suis cette fois ci bloqué honteusement sur un point ou tout le monde semble n'avoir aucun problème :
J'essaie depuis des jours de mettre en place un décodeur d'accessoires DCC via la librairie dcc_decoder.
Mais je me heurte a une difficulté: je ne réussi pas à déclencher la routine d’interruption sur réception d'un paquet DCC via le 6N137.
Plusieurs articles abordent le sujet d'une interruption déclenchée par un signal DCC dans locoduino, par exemple
https://www.locoduino.org/spip.php?article103http://www.locoduino.org/spip.php?article39J'ai réduit mon programme à une trentaine lignes sur un arduino UNO pour qu'ils soit rapide à lire aux aidants potentiels: je veux juste que la routine d’interruption se déclenche et me le dise, (pas possible de faire plus simple).
la boucle loop affiche simplement la valeur de millis toutes les secondes. pour me dire que le programme est "vivant" et que au moins la loop fonctionne (ce qui est le cas: les secondes défilent sur le moniteur série de l'IDE 2.2.1 de l'arduino).
Pour déclencher l'interruption , j envoie la séquence DCC "a 200 2 1" via JMRI et une centrale DCC-EX tournant sur un arduino MEGA
Fanatique récent de l'arduino, je n'ai aucun équipement DCC d'une marque du commerce pour piloter un décodeur d'accessoire.
Pour moi la séquence "a 200 2 1" devrait suffire à déclencher l'interruption , si le programme fonctionnait.
Pour ceux qui aurait des doutes légitimes sur l'efficacité de mon envoi de séquence, Je précise que les séquences "f 17 144" et "f 17 128" allument et éteignent sans problème les feux de la loco à l'adresse 17 ( sans non plus déclencher l'interruption de l'arduinon UNO )
Ma source d’inspiration pour les séquences DCC à envoyer est ici :
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStationJe ne ferai pas l'injure aux experts ici présents de détailler le schéma utilisé ( avec le 6N137, 3 résistances et une diode proposé sur locoduino dans les articles que j'ai cité ), schéma qui amène le fil interruption en sortie du 6N137 sur la broche D2 de l'arduino uno. :
https://www.locoduino.org/IMG/jpg/mynabay.jpgj'ai vérifié 100 fois la connectivité à l’ohmmètre depuis les rails jusqu'à la borne D2 de l'arduino, testé la validité des diodes et résistances, et changé préventivement 3 fois Le 6N137 (sans savoir si les précedents sont endommagés ou non).
Mon code C basiquement reproduit en "boite noire" (setup, loop et routine d’interruption) le code d'autres articles utilisant la librairie DCC_Decoder.
Je dis "en boite noire" car faute d'avoir un fonctionnement reproductible permettant de comprendre les mécanismes de la bibliothèque DCC_decoder, je suis pour l'instant limité à une reproduction aveugle du code.
La lecture du code de la librairie dcc_decoder.h et dcc_decoder.cpp ne font que m'amener d'autres questions.
j'aurais au final trois questions précises (en fait beaucoup plus mais je vais à l'essentiel):
Ai je raison de penser que ma séquence DCC "a 200 2 1" envoyée via JMRI devrait déclencher l’interruption, ou faut il une autre séquence ?
Est ce que la sagacité des membres du forum daignerai jeter un oeil sur mes 30 misérables lignes de code et me signaler toute hérésie énorme qui m'aurait échappé, et qui empêcherai le déclenchement de l'interruption ?
Y aurait il un moyen de valider l'electronique jusqu'a la pin D2 de l'arduino ? (car si il s'agit de mettre en place un sniffer, cela revient à mon pb de départ: comment déclencer l'interruption )
Voila, En espérant que mon premier post n'est ni trop long ni trop ennuyeux. Dans les règles, il est demandé d'être précis sur son problème si l'on veut de l'aide, j'ai essayé de l'être ...
Le code utilisé comme le cablage sont éprouvés dans de nombreux articles sur locoduino. peut etre le problème est kuste la séquence "a 200 2 1 ", je ne sais pas quoi utiliser d'autre.
J'espère aussi qu'une bonne âme plus éveillée que moi soit révélera la bêtise que j'ai commise et qui devrait me crever les yeux, soit posera la question que je ne me suis pas posé et qui résoudra mon blocage.
Merci aux patients qui ont lu jusqu'ici.
RV