Mon réseau T-Trak comportant maintenant 13 aiguillages, le pilotage de ces accessoires via la Multimaus n’est pas vraiment simple. De plus mon module de dépôt doit participer à une exposition et sera donc exploité par de nombreux modélistes différents. Pour faciliter les manipulations j’ai donc cherché à faire un TCO.

J’ai trouvé sur le net plusieurs sources d’informations pour réaliser un TCO qui se branche comme une « souris esclave » sur la centrale ROCO en étant connecté au bus Xpressnet. Pour réaliser ceci un arduino mega 2560 est utilisé.
Voici donc pour commencer mes sources de travail:

C’est sur ce dernier site que j’ai trouvé le document  .pdf le plus compréhensible pour réaliser le TCO et le programme .ino pour l’arduino avec seulement quelques variables à modifier.

En recherchant un Max485 pour réaliser le montage de l’interface série j’ai trouvé sur le net des petits modules RS-485 tout prêt pour arduino.

J’en ai donc acheté un et ai décidé de l’utiliser pour ce TCO afin de simplifier encore plus le montage.
On peut trouver de la documentation sur ce module assez facilement par exemple ici.

Je vous propose de vous faire part de mon expérience. En effet j’ai réalisé un petit schéma de câblage de l’arduino mega 2560 avec ce module RS485 TTL directement utilisable avec le programme de l’UAICF.

J’ai utilisé une rallonge RJ12 de chez Leroy Merlin sur laquelle j’ai coupé une des prises. Après avoir branché ce câble sur la centrale allumée, j’ai repéré les fils de masse et de +12v en provenance de la prise slave de la centrale ROCO grâce à un multimètre.

Voici le détail des branchements pour la communication entre la centrale ROCO et l’Arduino:

  • Masse du câblage RJ12 sur borne GND du module
  • +12V du câblage RJ12 sur borne VIN de l’arduino mega
  • Fils de données A et B du câblage branchés sur le bornier vert à vis en A et B (intervertir l’ordre si la communication avec la centrale ne se fait pas. On peut aussi ajouter une résistance de 120 Ohm entre les bornes pour déparasiter le signal.)
  • Borne RO du module connectée à la pin 19 (RX1) de l’arduino
  • Borne DI du module connectée à la pin 18 (TX1) de l’arduino
  • Bornes DE et RE reliées ensemble vers la pin 3 de l’arduino conformément au programme del’UAICF (une résistance de 470 Ohm et une diode branchés entre le +5v et le fil permettent de contrôler la bonne connexion de la sortie avec l’arduino)

Connexion des interrupteurs de commande:

Pour le contrôle des différents aiguillages j’ai choisi d’utiliser des interrupteurs à leviers ON-ON (mais on peut aussi utiliser 2 boutons poussoirs par aiguille). Ces interrupteurs sont montés avec une résistance de 10KOhm en mode PULL-UP sur les entrées de l’arduino:

  • Un coté de la résistance est connecté au +5v
  • l’autre coté sur une des bornes de l’interrupteur.
  • cette même borne est connecté à une pin d’entrée de l’arduino
  • la deuxième borne de l’inter est relié à la masse de l’arduino

Voici le schema ci-dessus au format fritzing:

Le programme pour l’arduino

Dans le programme on définit les adresses DCC des aiguilles et les entrées correspondantes des inter sur l’arduino. Il faut aussi installer la librairie Xpressnet.

[pastacode lang= »c » manual= »%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F**************************************************%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20Programme%20pour%20r%C3%A9aliser%20le%20TCO%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20du%20pupitre%20DEMO%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20avec%20carte%20Arduino%20MEGA%202560%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20TCO%20pour%20module%20Demo%20Aiguillage%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20UAICF%20Nevers-Vauzelles%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20http%3A%2F%2Fmodelisme58.free.fr%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20Novembre%202015%20-%20Vers%201.3%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F**************************************************%2F%2F%0A%0A%2F%2F————————————————————————-%0A%2F%2F%20Biblioth%C3%A8ques%20n%C3%A9cessaires%0A%0A%2F%2F—————————————————————————-%0A%23include%20%3CXpressNet.h%3E%20%0AXpressNetClass%20XpressNet%3B%0A%0A%23if%20defined(__AVR_ATmega1280__)%20%7C%7C%20defined(__AVR_ATmega2560__)%0A%20%20%23define%20SerialDEBUG%201%20%20%2F%2FFor%20Serial%20Port%20Debugging%20(Arduino%20Mega%20only)%0A%23endif%20%0A%0A%23if%20SerialDEBUG%0A%20%20%23include%20%3CSoftwareSerial.h%3E%0A%20%20SoftwareSerial%20Debug(0%2C%201)%3B%20%2F%2F%20RX%2C%20TX%20-%20Mettre%20sur%200%20et%201%20pour%20MEGA%202560%0A%23endif%0A%0A%2F%2F————————————————————————-%0A%2F%2F%20%2F%7C%5C%20Variables%20%C3%A0%20modifier%20———————————————–%20%2F%7C%5C%0A%2F%2F%20D%C3%A9finition%20des%20adresses%20des%20aiguillages%20et%20entr%C3%A9es%20utilis%C3%A9s%20sur%20la%20carte%20Arduino%20MEGA%0A%0Aint%20Aig%5B%5D%20%20%20%20%20%20%20%20%20%20%3D%20%7B%200%2C1%7D%3B%20%20%2F%2F%20Adresse%20DCC%20des%20aiguillages%2C%20la%20premiere%20adresse%200%20correspond%20arret%20d’urgence%0Aint%20Bt%5B%5D%20%20%20%20%20%20%20%20%20%20%20%3D%20%7B23%2C24%7D%3B%20%20%2F%2F%20Bornes%20de%20la%20carte%20ARDUINO%0A%0Aint%20NbreBoutons%20%3D%200%3B%09%20%20%20%20%20%20%20%2F%2F%20Nbre%20total%20de%20boutons%0Aint%20NbrePoussoirs%20%3D%200%3B%20%20%20%20%20%20%20%20%20%2F%2F%20Nbre%20d’aiguillages%20command%C3%A9s%20par%20Bouton%20Poussoir%0Aint%20NbreLevier%20%3D%201%3B%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Nbre%20d’aiguillages%20command%C3%A9s%20par%20Bouton%20Levier%0A%0A%23define%20XNetAddress%2015%20%20%20%20%20%20%20%20%2F%2F%20Adresse%20de%20la%20souris%20XpressNet%20%3A%202%20souris%20Xpressnet%20ne%20pourront%20pas%20avoir%20la%20m%C3%AAme%20adresse%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Valeur%20entre%201%20et%2031%0A%0A%2F%2F%20%2F%7C%5C%20Fin%20des%20variables%20%C3%A0%20modifier%20—————————————%20%2F%7C%5C%0A%2F%2F————————————————————————-%0A%0A%2F%2F————————————————————————-%0A%2F%2F%20D%C3%A9finition%20des%20variables%20et%20constantes%0A%0Aint%20BtEtat%5B100%5D%20%3B%20%20%0Aint%20BtEtatAncien%5B100%5D%20%3B%20%0A%0Abyte%20Led%20%3D%2013%3B%0Aint%20DCCEtat%3B%0Along%20previousMillis%20%3D%200%3B%0A%0A%23define%20XNetSRPin%203%20%20%20%20%20%20%20%2F%2F%20Max485%20Bus%20du%20driver%20reli%C3%A9%20%C3%A0%20la%20borne%20de%20l’Arduino%0A%0A%2F%2F————————————————————————-%0A%2F%2F%20Initialisation%20du%20programme%0Avoid%20setup()%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20delay(1000)%3B%0A%0A%20%20NbreBoutons%20%3D%20NbrePoussoirs%20%2B%20NbrePoussoirs%20%2B%20NbreLevier%20%2B%201%3B%0A%20%20%0Afor%20(int%20i%3D0%3B%20i%20%3C%20NbreBoutons%3B%20i%2B%2B)%0A%7B%0A%20%20BtEtat%5Bi%5D%20%3D%202%3B%0A%20%20BtEtatAncien%5Bi%5D%20%3D%201%3B%0A%20%20pinMode(Bt%5Bi%5D%2C%20INPUT_PULLUP)%3B%20%0A%7D%0A%20%20pinMode(Led%2C%20OUTPUT)%3B%0A%20%20%0A%20%20delay(100)%3B%0A%20%20%0A%20%20Serial.begin(9600)%3B%0A%20%20Serial.println(%22UAICF%20Nevers-Vauzelles%20-%20http%3A%2F%2Fmodelisme58.free.fr%22)%3B%0A%20%20Serial.println(%22Octobre%202015%20-%20Vers%201.2%22)%3B%0A%0A%20%20XpressNet.start(XNetAddress%2C%20XNetSRPin)%3B%0A%20%20XpressNet.setPower(csNormal)%3B%0A%0A%20%20Serial.print(%22%20%20–%3E%20Etat%20Centrale%20DCC%20%3D%20%22)%3B%0A%20%20Serial.println(XpressNet.getPower())%3B%0A%20%20Serial.println(%22%22)%3B%0A%20%20%0A%20%20for%20(int%20i%3D0%3B%20i%20%3C%20NbreBoutons%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20BtEtat%5Bi%5D%20%3D%20digitalRead(Bt%5Bi%5D)%3B%0A%20%20%20%20Serial.print(%22%20Borne%20Arduino%20%3A%20%22)%3B%20Serial.print(Bt%5Bi%5D)%3B%20Serial.print(%22%20%7C%20Etat%20%3D%20%22)%3B%20Serial.println(BtEtat%5Bi%5D)%3B%0A%20%20%20%20delay%20(10)%3B%0A%20%20%20%20%7D%0A%0A%20%20XpressNet.receive()%3B%0A%20%20%0A%20%20Serial.println(%22—%20Initialisation%20des%20positions%20des%20Aiguillages%20avec%20bouton%20a%20levier%20uniquement%20—%22)%3B%0A%20%20%2F%2F%20Uniquement%20pour%20les%20aiguillages%20command%C3%A9s%20par%20un%20bouton%20%C3%A0%20levier%20%20%0A%20%20for%20(int%20i%20%3D%20NbrePoussoirs*2%20%2B1%3B%20i%20%3C%20NbrePoussoirs*2%20%2B%20NbreLevier%20%2B1%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20if%20(BtEtat%5Bi%5D%20!%3D%20BtEtatAncien%5Bi%5D)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Serial.print(%22%20%20%20Aiguillage%20ayant%20l’adresse%20DCC%20%22)%3B%20Serial.print(Aig%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20Serial.print(%22%20(Borne%20%22)%3B%20Serial.print(Bt%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi%5D%20%3D%20BtEtat%5Bi%5D%20%3B%0A%20%20%20%20%20%20%20%20XpressNet.setTrntPos%20(0x0%2C%20Aig%5Bi%5D-1%2C%20BtEtat%5Bi%5D%20)%3B%0A%20%20%20%20%20%20%20%20delay%20(200)%3B%0A%20%20%20%20%20%20%20%20XpressNet.setTrntPos%20(0x0%2C%20Aig%5Bi%5D-1%2C%20BtEtat%5Bi%5D%20)%3B%0A%20%20%20%20%20%20%20%20delay%20(750)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20Serial.println(%22—%20Fin%20Initialisation%20des%20positions%20des%20Aiguillages%20—%22)%3B%0A%20%20Serial.println(%22—%20Fin%20initialisation%20du%20programme%20—%22)%3B%20%20%20Serial.println(%22%20%22)%3B%0A%20%20digitalWrite(Led%2C%20HIGH)%3B%0A%0A%7D%0A%0A%2F%2F————————————————————————-%0A%2F%2F%20Programme%20fonctionnant%20en%20boucle%0A%0Avoid%20loop()%20%7B%0A%0A%20%20%2F%2F%20R%C3%A9cup%C3%A9re%20l’%C3%A9tat%20des%20entr%C3%A9es%20%20%0A%20%20for%20(int%20i%3D0%3B%20i%20%3C%20NbreBoutons%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20BtEtat%5Bi%5D%20%3D%20digitalRead(Bt%5Bi%5D)%3B%0A%20%20%20%20delay%20(1)%3B%0A%20%20%20%20%7D%0A%0A%20%20XpressNet.receive()%3B%0A%0A%20%20unsigned%20long%20currentMillis%20%3D%20millis()%3B%0A%0A%20%20%2F%2F%20—%20Commande%20pour%20Arret%20d’Urgence%20——————————————–%0A%0A%20%20if%20(BtEtat%5B0%5D%20%3D%3D%200%20%26%26%20DCCEtat%20%3D%3D%200)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20XpressNet.setHalt()%3B%0A%20%20%20%20%20%20delay%20(500)%3B%0A%20%20%20%20%20%20if%20(DCCEtat%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20digitalWrite(Led%2C%20LOW)%3B%0A%20%20%20%20%20%20%20%20%20%20Serial.println(%22%20%22)%3B%0A%20%20%20%20%20%20%20%20%20%20Serial.println(%22%20!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%20%22)%3B%0A%20%20%20%20%20%20%20%20%20%20Serial.println(%22%20!!!%20—%20Arret%20d’Urgence%20—%20!!!%20%22)%3B%0A%20%20%20%20%20%20%20%20%20%20delay%20(1000)%3B%0A%20%20%20%20%20%20%20%20%20%20previousMillis%20%3D%20currentMillis%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20if%20(BtEtat%5B0%5D%20%3D%3D%200%20%26%26%20DCCEtat%20%3E%200%20%26%26%20(currentMillis%20-%20previousMillis%20%3E%205000)%20)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20XpressNet.setPower(csNormal)%3B%0A%20%20%20%20%20%20delay%20(500)%3B%0A%20%20%20%20%20%20if%20(DCCEtat%20%3E%200)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20digitalWrite(Led%2C%20HIGH)%3B%0A%20%20%20%20%20%20%20%20Serial.println(%22%20%22)%3B%0A%20%20%20%20%20%20%20%20Serial.println(%22%20—%20DCC%20Ok%20—%20%22)%3B%0A%20%20%20%20%20%20%20%20previousMillis%20%3D%20currentMillis%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%2F%2F%20Envoie%20de%20la%20commande%20DCC%20pour%20accessoires%20si%20changement%20de%20l’%C3%A9tat%20des%20entr%C3%A9es%20%20%0A%0Aif%20(DCCEtat%20%3D%3D0)%20%20%2F%2F%20Si%20pas%20d’arr%C3%AAt%20d’urgence%20d’enclench%C3%A9%0A%7B%0A%20%20%2F%2F%20—%20Commande%20pour%20Boutons%20%C3%A0%20levier%20——————————————–%0A%20%20for%20(int%20i%20%3D%20NbrePoussoirs*2%20%2B1%3B%20i%20%3C%20NbrePoussoirs*2%20%2B%20NbreLevier%20%2B1%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20if%20(BtEtat%5Bi%5D%20!%3D%20BtEtatAncien%5Bi%5D)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Serial.print(%22Aiguillage%20ayant%20l’adresse%20DCC%20%22)%3B%20Serial.print(Aig%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20Serial.print(%22%20(Arduino%20%22)%3B%20Serial.print(Bt%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi%5D%20%3D%20BtEtat%5Bi%5D%20%3B%0A%20%20%20%20%20%20%20%20XpressNet.setTrntPos%20(0x0%2C%20Aig%5Bi%5D-1%2C%20BtEtat%5Bi%5D%20)%3B%0A%20%20%20%20%20%20%20%20delay%20(10)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%0A%20%20%2F%2F%20—%20Commande%20pour%20Boutons%20Poussoirs%20——————————————–%0A%20%20%2F%2F%20Commande%20Position%201%0A%20%20for%20(int%20i%3D1%3B%20i%20%3C%20NbrePoussoirs*2%20%2B1%3B%20i%3Di%2B2)%0A%20%20%20%20%7B%0A%20%20%20%20if%20(BtEtat%5Bi%5D%20!%3D%20BtEtatAncien%5Bi%5D%20%26%26%20BtEtat%5Bi%5D%20%3D%3D%200%20%26%26%20BtEtat%5Bi%2B1%5D%20%3D%3D%201)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Serial.print(%22Aiguillage%20ayant%20l’adresse%20DCC%20%22)%3B%20Serial.print(Aig%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20Serial.print(%22%20(Arduino%20%22)%3B%20Serial.print(Bt%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi%5D%20%3D%200%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi%2B1%5D%20%3D%201%3B%0A%20%20%20%20%20%20%20%20XpressNet.setTrntPos%20(0x0%2C%20Aig%5Bi%5D-1%2C%200%20)%3B%0A%20%20%20%20%20%20%20%20delay%20(1)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%2F%2F%20Commande%20Position%202%0A%20%20for%20(int%20i%3D2%3B%20i%20%3C%20NbrePoussoirs*2%20%2B2%3B%20i%3Di%2B2)%0A%20%20%20%20%7B%0A%20%20%20%20if%20(BtEtat%5Bi%5D%20!%3D%20BtEtatAncien%5Bi%5D%20%26%26%20BtEtat%5Bi%5D%20%3D%3D%200%20%26%26%20BtEtat%5Bi-1%5D%20%3D%3D%201)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Serial.print(%22Aiguillage%20ayant%20l’adresse%20DCC%20%22)%3B%20Serial.print(Aig%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20Serial.print(%22%20(Arduino%20%22)%3B%20Serial.print(Bt%5Bi%5D)%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi%5D%20%3D%200%3B%0A%20%20%20%20%20%20%20%20BtEtatAncien%5Bi-1%5D%20%3D%201%3B%0A%20%20%20%20%20%20%20%20XpressNet.setTrntPos%20(0x0%2C%20Aig%5Bi%5D-1%2C%201%20)%3B%20%0A%20%20%20%20%20%20%20%20delay%20(10)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%20%20%2F%2F%20Fin%20de%20l’envoi%20de%20la%20commande%20DCC%20pour%20accessoires%20si%20changement%20de%20l’%C3%A9tat%20des%20entr%C3%A9es%20%20%0A%0A%7D%0A%2F%2F————————————————————————-%0A%2F%2F%20Message%20pour%20d%C3%A9bogage%0A%0Avoid%20notifyTrnt(uint8_t%20Adr_High%2C%20uint8_t%20Adr_Low%2C%20uint8_t%20Pos)%0A%7B%0A%20%20Serial.print(%22)%20—%3E%20Position%20%3D%20%22)%3B%20%0A%20%20Serial.println(Pos%2C%20DEC)%3B%20%0A%7D%0A%0A%2F%2F————————————————————————-%0Avoid%20notifyXNetPower%20(uint8_t%20State)%0A%7B%0A%20%20Serial.print(%22%20%20–%3E%20Etat%20Centrale%20DCC%20%3D%20%22)%3B%0A%20%20Serial.println(State%2C%20HEX)%3B%0A%20%20DCCEtat%20%3D%20State%3B%0A%20%20%0A%7D%0A » message= »TCO Xpressnet » highlight= » » provider= »manual »/]

 

Il y a quelques paramètres à modifier qui sont clairement expliqués dans le code et dans le fichier pdf édité par l’UAICF. Voici ceux correspondant à mes besoins pour exemple:

[pastacode lang= »cpp » manual= »%2F%2F————————————————————————-%0A%2F%2F%20%2F%7C%5C%20Variables%20%C3%A0%20modifier%20———————————————–%20%2F%7C%5C%0A%2F%2F%20D%C3%A9finition%20des%20adresses%20des%20aiguillages%20et%20entr%C3%A9es%20utilis%C3%A9s%20sur%20la%20carte%20Arduino%20MEGA%0A%0Aint%20Aig%5B%5D%20%20%20%20%20%20%20%20%20%20%3D%20%7B%200%2C10%2C12%2C20%2C21%2C22%2C23%2C24%2C25%2C30%2C31%2C32%2C33%2C34%7D%3B%20%20%2F%2F%20Adresse%20DCC%20des%20aiguillages%0Aint%20Bt%5B%5D%20%20%20%20%20%20%20%20%20%20%20%3D%20%7B23%2C24%2C25%2C26%2C27%2C28%2C29%2C30%2C31%2C32%2C33%2C34%2C35%2C36%7D%3B%20%20%2F%2F%20Bornes%20de%20la%20carte%20ARDUINO%0A%0Aint%20NbreBoutons%20%3D%200%3B%09%20%20%20%20%20%20%20%2F%2F%20Nbre%20total%20de%20boutons%0Aint%20NbrePoussoirs%20%3D%200%3B%20%20%20%20%20%20%20%20%20%2F%2F%20Nbre%20d’aiguillages%20command%C3%A9s%20par%20Bouton%20Poussoir%0Aint%20NbreLevier%20%3D%2013%3B%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Nbre%20d’aiguillages%20command%C3%A9s%20par%20Bouton%20Levier%0A%0A%23define%20XNetAddress%2015%20%20%20%20%20%20%20%20%2F%2F%20Adresse%20de%20la%20souris%20XpressNet%20%3A%202%20souris%20Xpressnet%20ne%20pourront%20pas%20avoir%20la%20m%C3%AAme%20adresse%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Valeur%20entre%201%20et%2031%0A%0A%2F%2F%20%2F%7C%5C%20Fin%20des%20variables%20%C3%A0%20modifier%20—————————————%20%2F%7C%5C%0A%2F%2F————————————————————————- » message= »variables à modifier » highlight= » » provider= »manual »/]

Réalisation du T.C.O

J’ai trouvé chez Cultura une boite à thé en bois avec 6 compartiments parfaitement adaptée à mon projet. Elle a la taille d’une feuille A5. J’ai donc dessiné mon TCO au format vectoriel avec l’emplacement des interrupteurs.
Une fois la feuille imprimée je l’ai collée avec un vernis colle pour papier.
Ensuite j’ai percé l’emplacement des leviers.

J’ai enfin pût m’atteler au câblage de mes 15 interrupteurs ce qui m’a pris une bonne après-midi !!

Lors des essais du TCO, si la position d’un interrupteur est inversée par rapport à la position de l’aiguillage souhaitée, il suffit de changer le fil de masse sur l’autre borne de l’interrupteur étant donné que j’ai câblé les +5v sur la borne centrale des interrupteurs.

Il me reste un dernier détails qui ne fonctionne pas, en effet impossible d’actionner un aiguillage kato relié à un décodeur digitrax DS51K1. J’arrive à changer l’adresse du décodeur via le TCO, mais l’aiguillage n’est pas actionné !!
Si quelqu’un a une idée à me soumettre cela serait bien.

Pour finir voici une petite vidéo de présentation: