par Patgo
03 Aoû 2014, 17:40
Ah les commandes DCC !...
Effectivement je me suis gratté la tête plus d'une fois et pour être sûr de la solution j'ai monté "un mouchard" (un arduino d'ailleurs!...) qui espionnait les commandes reçues et me les convertissait pour affichage sur le "moniteur Arduino". En fait c'est à la fois compliqué et simple; Si on ne veut pas se tromper, il y a 2 modes à connaitre:
1 - Pour l'adresse, la vitesse et la direction, on envoie:
"O", Adrhexa, 3F, Vitessehexa, Ctrlhexa avec Adrhexa l'adresse de la loco en hexa, "3F" pour indiquer que la vitesse est codée sur 128 pas, Vitessehexa = vitesse de la loco en hexa et Ctrlhexa = mot de contrôle intégrant dans des fonctions XOr (Ou exclusif) l'adresse, 3F et la commande. Pour la vitesse, de 0 à 127 (donc de h0 à h7F) la loco marche en marche AR de plus en plus vite, et de 128 à 255 (h80 à hFF) en marche avant. 1 et 129 (h81) sont des stops rapides.
On envoie donc qqchose du genre ""0 03 3F FF C3" pour adresse 3, MAV max. Nota: l'en-tête est la lettre O majuscule pas un zéro!...
Le message binaire a envoyer sur les rails est donc: preambule, adresse, bit0, 3F, bit0, commande, bit0, controle, bit1, pausetemps avec preambule = 14 - 15 fois bit1 puis bit0 et en fin une pausetemps = 25 fois bit0 apres un bit1
2 - Pour les fonctions, on envoie:
2 - 1 Fonctions de F0 à F12 (groupe 1 et 2)
O, Adrhexa, fonctionhexa, Ctrlhexa
Donc un message: preambule, adresse, bit0, commande, bit0, controle, bit1, pausetemps
2 - 2 Fonctions F213 à f20 (groupe 3)
O, Adrhexa, DE, fonctionhexa, Ctrlhexa
Donc un message = preambule, adresse, bit0, DE, bit0, commande, bit0, controle, bit1, pausetemps
Voilà c'est un résumé rapide et spécifique (car 128 pas et vitesse,et fonctions) de la norme DCC.