Auteur Sujet: DCC++ Exploitation des commandes de programmation  (Lu 51384 fois)

Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
DCC++ Exploitation des commandes de programmation
« le: juillet 29, 2018, 11:36:31 am »
Bonjour à tous et bonne baignade aux vacanciers

J'hésite à ouvrir ce sujet car la réponse est sans doute sur le site mais je cherche, je cherche et je passe à côté.

Je cherche comment coder les commandes à envoyer aux décodeurs
en complément des préfixe  "f", "z" ,"b", "w"  pour "t" j'ai trouvé ex: "t 1 5 0 1".

Un exemple de codage CV1 serait le bienvenu
Pour info je pilote un Arduino Mega depuis un PC via ethernet

Merci de votre aide
Amicalement Roland
www.locorob1.fr


Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #1 le: juillet 29, 2018, 11:58:10 am »
Bonjour Roland,

est-ce cela qui t'intéresse ?  https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation

Cordialement
Antoine

Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
Re : DCC++ Exploitation des commandes de programmation
« Réponse #2 le: juillet 29, 2018, 02:03:08 pm »
Oui merci Antoine

Je connaissait ce tableau pour en avoir vu un partie sur le site
mais je n'avait pas exploré la suite, je dit exploré car avec mon anglais de survie
je peine un peu dans cette jungle.  :-X :-\ :-[

Merci de ton aide
A+ Roland
www.locorob1.fr


Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
Re : DCC++ Exploitation des commandes de programmation
« Réponse #4 le: juillet 29, 2018, 03:52:21 pm »
Pouvez-vous me confirmer que la commande suivante est correcte?

<w 1 5> pour configurer à l'adresse 5 une machine
se trouvant sur la voie principale et seule comme il se doit.

Merci par avance
Roland

Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
Re : DCC++ Exploitation des commandes de programmation
« Réponse #5 le: juillet 29, 2018, 05:40:33 pm »
Ne cherchez plus. Réponse  <w 0 1 5>

Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #6 le: juillet 29, 2018, 05:53:57 pm »
Si tu travailles sur la voie principale je crois que tu as oublié le CAB. Il faut écrire <w CAB 1 5> où CAB est l'adresse actuelle du décodeur, suivi de l'adresse CV et de la nouvelle valeur à inscrire.

Peux-tu me confirmer l'essai ?
« Modifié: juillet 29, 2018, 05:59:57 pm par Tony04 »

Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
Re : DCC++ Exploitation des commandes de programmation
« Réponse #7 le: juillet 30, 2018, 12:16:59 am »
Exact si j'envoie la commande <w 3 1 5> sur une machine configurée en 3 elle passe en 5.

Merci de ton aide Antoine.
CV1 c'est OK je vais pouvoir passer à CV2 .....

Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #8 le: juillet 30, 2018, 10:09:47 am »
Bonjour Roland,

pourquoi n'utilises-tu pas une voie de programmation avec l'instruction <W 1 3 100 101> (1 = CV, 3 = nouvelle adresse, 100 et 101 = n'importe quoi), cela permettrait de programmer une machine dont tu ne connais pas l'adresse.

Si tu n'as pas de second booster il te suffit de commuter les PWM et DIR comme ici (mais tu dois connaitre): http://www.locoduino.org/spip.php?article187

Je viens de visiter ton site que je rappelle ici pour ceux qui ne connaissent pas, un beau projet (déjà bien avancé), bravo: http://www.locorob1.fr/100-LrAccueil/100-LrAccueil.php?fu=fuStart&wid=1920&hei=1080

Cordialement
Antoine

Rob1

  • Jr. Member
  • **
  • Messages: 62
    • Voir le profil
    • Mon projet réseau
Re : DCC++ Exploitation des commandes de programmation
« Réponse #9 le: juillet 30, 2018, 10:53:52 am »
Bonjour Antoine et every body

Merci de ton soutien et de tes appréciations sur mon projet.
En réalité pour des raisons de structuration du projet, donc de mise au point et de maintenance,
j'ai opté pour deux boosters utilisant chacun et uniquement leur voie principale, mais cela peut évoluer.
Un premier (DCC1) pour le réseau principal)
Un second (DCC2) pour le transbordeur qui disposera disposera d'une voie annexe pour la programmation des locos.

Tu as peut-être vu sur l'animation du transbordeur qu'il disposait de deux emplacements, qui en position zéro sont dans le prolongement
de deux voies du réseau principal. C'est donc DCC1 qui amène les locos sur le transbordeur voie 1 ou 2.
Lors d'une demande de garage c'est l'Arduino Mega dédié au transbordeur qui gère tout y compris le roulage des locos avec DCC2.

Pour la remarque de programmation d'une machine dont on ignore le numéro la commande <w 0 1 x> ou x est le nouveau numéro
fonctionne aussi sous réserve de n'avoir qu'une seule machine sur cette voie.
Ce sera le cas sur la voie annexe du transbordeur qui bien sur sera isolé électriquement des voies de garage durant l'instant de programmation.

Encore merci de ton aide
Amicalement Roland
www.locorob1.fr

Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : Re : DCC++ Exploitation des commandes de programmation
« Réponse #10 le: juillet 30, 2018, 11:28:28 am »
Pour la remarque de programmation d'une machine dont on ignore le numéro la commande <w 0 1 x> ou x est le nouveau numéro
fonctionne aussi sous réserve de n'avoir qu'une seule machine sur cette voie.

Une nouvelle instruction à rajouter à ma liste, je ne l'avais jamais vu nul part. Merci à toi

Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #11 le: août 24, 2018, 07:23:47 pm »
Bonjour à tous,

à mon tour de chercher de l'aide pour la librairie DCCpp.

Travaillant sur un projet relativement important dont je vous parlerai bientôt, j'aimerais récupérer les informations suivantes dans le loop de mon programme (par une variable ou autre):
- Est-ce qu'un court-circuit a coupé le DCC ?
- Est-ce qu'on est hors tension ?
- Est-ce qu'on est sous tension ?
Tout cela que sur la voie MAIN.

Merci par avance pour votre aide.

Cordiales salutations
Antoine
 

Souris verte

  • Newbie
  • *
  • Messages: 40
  • HO, DCC, Arduino...
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #12 le: août 24, 2018, 11:37:44 pm »
Bonsoir,

dans l'article http://www.locoduino.org/spip.php?article232
il y a un paragraphe sur la détection de courant au début du loop.
En cas de coupure, le DCC se coupe et éteint une LED. Tu dois pouvoir adapter le code à ta convenance.


///////////////// START / STOP DCC ///////////////////////////////////////

void start_DCC(DCC_ENABLE) {
  digitalWrite(DCC_ENABLE,HIGH);
  digitalWrite(LEDROUGE, HIGH);             // eteint led rouge
}

void stop_DCC(DCC_DISABLE) {
  digitalWrite(DCC_DISABLE,LOW);
  digitalWrite(LEDROUGE, LOW);              // allume led rouge
  delay(1000);
}

Bonne lecture
Yannick

Tony04

  • Hero Member
  • *****
  • Messages: 571
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #13 le: août 25, 2018, 12:35:54 am »
Bonjour Yannick,

le code dont tu parles n'est pas dans la librairie DCCpp mais dans le programme va et vient de Dominique, programme que je n'utilise pas dans mon application.
Mais je pense qu'il doit y avoir quelque part une variable qui peut me donner les 3 infos dont j'ai besoin.

Merci quand même, je vois que tu trouves tout de même un peu de temps pour visiter ce super forum.

Bonne journée à tous
Antoine

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3056
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ Exploitation des commandes de programmation
« Réponse #14 le: août 25, 2018, 10:40:45 am »
Bonjour Antoine,

On a l'air un peu loin durant ces quelques semaines d'Août mais on est là quand même, occupés à préparer l'expo d'Orléans !

Tu as besoin de ces infos :
- Est-ce qu'un court-circuit a coupé le DCC ?
- Est-ce qu'on est hors tension ?
- Est-ce qu'on est sous tension ?

A partir de ma réalisation décrite dans l'article 232 (le va et vient qui sera présenté à Orléans), tu peux facilement trouver toutes les réponses :

Il y a un circuit de mesure du courant Max471 placé en série avec le pont en H : il est donc alimenté en continu et peut délivrer une valeur instantanée de l'intensité générale du générateur DCC. La mesure se trouve dans la loop et est décrite dans le § "Gestion du courant DCC".
Je préfère cette implémentation que celle qui est intégrée à DCC++/pp qui est trop lente à mon goût.

Tu y verras comment mesurer le courant à chaque tour de loop (il n'y a pas plus rapide, sauf a faire un circuit à part connecté sous interruption) et en déduire, à l'aide de quelques variables, le présence ou l'absence de DCC, la détection d'un court-circuit, et même la détection de faux contacts (plus de courant du tout).

// affichage courant = la valeur maxi pendant 500 ms
  if ((millis() - gCurrentSampleTime) > 500) {
    gCurrentSampleTime = millis();
    lcd.setCursor(13,1);lcd.print(gCurrent*5);lcd.print(' '); // en mA réels
    gCurrent = 0;
  }
  int iCurrent = analogRead(A0);
  if (iCurrent > gCurrent) {
    gCurrent = iCurrent;
    if (gCurrent > CurrentMax) { // 400 * 5 = 2000 mA
    stop_DCC();
    }
  }
  if ((iCurrent == 0) && (mAutomate.auto_etat > 2)) { // perte de consommation
    if ((millis() - gCurrentNulTime) > NULCURRENT_TIME) {
      mAutomate.auto_etat=INIT;           // RAZ automate
      mAutomate.LRclignote=true;          // led rouge clignote
      mTrain.cran_vitesse = 0;            // vitesse = 0
      mTrain.lumiere=false;
      delay(2000);
      stop_DCC();                         // arrêt DCC
      lcd.setCursor(10,1);lcd.print("Faucon");
      // panne de courant : faire STOP puis START pour redémarrer
    }   
  } else {
    gCurrentNulTime = millis();           // relance tempo
  }

Si tu veux aussi connaitre la présence ou l'absence d'une tension, tu peux lire cette tension (positive évidemment, donc ce ne peut pas être le DCC) sur une entrée analogique de l'Arduino (moyennant la présence d'un pont diviseur pour me pas dépasser 5V).

Tout ceci est donc hors DCC++ et tu fais ce que tu veux !

Amicalement
Dominique
Cordialement,
Dominique