LOCODUINO

Parlons Arduino => Bibliothèques => Discussion démarrée par: bagou91 le janvier 06, 2018, 06:48:50 pm

Titre: Bibliothèque DCCpp
Posté par: bagou91 le janvier 06, 2018, 06:48:50 pm
Bonjour,

Je m'essaye à la nouvelle bibliothèque DCCpp que Thierry nous a concocté :)
Et je rencontre des petits soucis de fonctionnement avec:

J'ai envoyé l'example MaxiDcc tel quel (juste modifié quelques broches de connexion) dans mon arduino nano, le téléversement s'est bien effectué.
Par contre aucune réaction avec ma loco dccid=3.
La led Tx de l'arduino s'affole, et la console série défile avec quasiment que des lignes vides. De temps en temps je vois passer des caractères mais pas le temps de les lire.

niveau matériel j'utilise un Nano, LMD18200, MAX471, encodeur rotatif avec switch, et des boutons poussoirs.
niveau branchement arduino:
D11 = PWM LMD18200
D10 = DIR LMD18200
A6 = out MAX471
D12, D8 = encodeur
A0 = switch encodeur
A1 = F0
A2 = F1
A3 = cancel
A4 = emergency
A5 = switch pour aiguille

au niveau des BP et switch, je branche un coté à l'arduino, l'autre à la masse. Pas besoin de résistance en pullup/pulldown ?

partie du code modifié:
buttonSelect.begin(EVENT_SELECT, A0);
buttonEncoder.begin(EVENT_ENCODER, 12, 8, 2);
buttonCancel.begin(EVENT_CANCEL, A3);
buttonEmergency.begin(EVENT_EMERGENCY, A4);
buttonF0.begin(EVENT_FUNCTION0, A1);
buttonF1.begin(EVENT_FUNCTION1, A2);
buttonTurnout1.begin(EVENT_TURNOUT1, A5);

...

DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 11, A6);

que  puis-je vérifier d'autres ?

Merci pour l'aide
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le janvier 06, 2018, 08:25:31 pm
Bonsoir. Il faut commencer par se mettre en mode Debug en retirant le '//' devant #define DCCPP_DEBUG_MODE ligne 296 de DCCpp.h, recompiler et téléverser. Une fois là, il devrait s'afficher des choses en clair au lancement. Sinon il y a peut être juste la vitesse de la console à régler, sans doute sur 115200...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le janvier 06, 2018, 08:32:06 pm
j'ai activé le mode debug, et me suis mis à 115200.
voici ce que j'ai:
begin achieved
beginMain achivied
<O>
<O>
<O>
<O>
<O>
<O>


<Y1 0>
<Y2 0>
<F2 3 144 -1>
<*2: 3 90 93 / 4>
DCCpp SetFunctions for loco3 / Activated : 0


<F2 3 145 -1>
<*2: 3 91 92 / 4>
DCCpp SetFunctions for loco3 / Activated : 0 1


<*0: A4 EB 4F / 4>
<H1 1>

puis le défilement de centaines de lignes vides...
et à certains moments:
<q1>
<q2>
<Y1 0>
<Y2 0>
ou bien
<Q2>
<Y2 1>

sinon pour les BP et switch, pas besoin de résistances pullup/down ?
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le janvier 06, 2018, 09:01:47 pm
Je constate le même genre de problème sur mon émulateur. Je regarde demain...
Titre: Re : Bibliothèque DCCpp
Posté par: Rob1 le janvier 07, 2018, 03:09:15 pm
Bonjour, je m’immisce dans le sujet car comme Bagou91 j’essaie d’intégrer DCCpp à mon projet.
Je suis sur un Arduino Mega avec un LMD18200 sous Ethernet vers VisualStudio.
J’ai préalablement testé Autotest et SerialDCC qui ont fonctionné ainsi que EthernetDCC.
Toutefois je m’interroge sur la forme d’onde que je constate au scope les clichés ci-dessous sont pris de manière aléatoire. Avez-vous également cette forme d’onde ou suis-je devant un problème sur mon installation ?
Je pose ma question ici car quelquefois la convergence de symptômes peut aider au diagnostic.

Amicalement Roland
(http://www.domorob.fr/Locoduino/DCCpp_scope1.jpg)
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le janvier 07, 2018, 06:01:57 pm
Une nouvelle version 1.0.0 a été publiée. Elle corrige deux problèmes : l'apparition de nombreuses lignes vides sur la console, causée par Sensor::check(), et la mise à la norme de l'envoi de paquet DCC pour l'activation de fonctions qui doit toujours se faire en double.
Avec ces modifications, maxiDcc semble fonctionner. Pour la partie Sensor dont j'ai repris le codage exact (à l'exception de check(), et on a vu le résultat...), je ne comprends pas la façon d'identifier un état haut ou un état bas sur la broche. Peut être faut il impérativement une résistance de Pullup, et sans utiliser celle interne de l'Arduino. En tout cas c'est ce que dit Gregg (Sensor.cpp, ligne 62):
Citer
// don't use Arduino's internal pull-up resistors for external infrared sensors --- each sensor must have its own 1K external pull-up resistor

D'autre part, dans Commanders des événements de démarrage interviennent sur tous les switchs, pour initialiser leur état de départ, ce qui provoque l'activation des turnout...

Enfin pour la forme du signal, je n'ai pas d'oscilloscope, je ne peux pas vérifier. Ce que je sais, c'est que toutes mes locos fonctionnent.
Titre: Re : Bibliothèque DCCpp
Posté par: Rob1 le janvier 07, 2018, 06:42:36 pm
La citation parle de capteur infrarouge !!!

Chez moi aussi les locos fonctionnent, c'est surtout pour savoir si le problème vient de mon câblage car dans d'autres configurations j'avais un signal plus symétrique.
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le janvier 07, 2018, 07:05:05 pm
merci Thierry pour cette mise à jour.

plus de lignes vides dans la sortie console, mais toujours pas de réaction de ma loco.

boot du nano:
begin achieved
beginMain achivied
<p1>
<O>
<O>
<O>
<O>
<O>
<O>
<Y1 0>
<Y2 0>
<F2 3 144 -1>
<*2: 3 90 93 / 4>
<*2: 3 90 93 / 4>
DCCpp SetFunctions for loco3 / Activated : 0
<F2 3 145 -1>
<*2: 3 91 92 / 4>
<*2: 3 91 92 / 4>
DCCpp SetFunctions for loco3 / Activated : 0 1
<*0: A4 EB 4F / 4>
<H1 1>

si j'actionne l'encodeur rotatif d' 1 cran (dans n'importe quel sens):
<Y2 1>
<Y2 0>
pas de réaction de la loco

appuie sur BP F0:
<F2 3 145 -1>
<*2: 3 91 92 / 4>
<*2: 3 91 92 / 4>
DCCpp SetFunctions for loco3 / Activated : 0 1
<F2 3 129 -1>
<*2: 3 81 82 / 4>
<*2: 3 81 82 / 4>
DCCpp SetFunctions for loco3 / Activated : 1
pas d'allumage des feux

appuie sur le switch de l'encodeur (code que j'ai ajouté pour stopper la loco et inverser son sens de marche):
DCCpp SetSpeed 0/128 (in Dcc 0 )
<*1: 3 3F 0 3C / 0>
<T1 3 0 0>
je pense que cette trame est bonne, mais évidemment la loco ne réagira pas puisque je demande son arrêt.

La réponse quand j'actionne l'encodeur rotatif me semble bizarre. Je pense qu'il y a quelque chose qui ne va pas mais je ne saurai débugguer...
J'ai ajouté un Serial.println(locoSpeed) dans le test du switch(event) pour EVENT_LESS et EVENT_MORE: pas de remontée de la valeur dans la sortie console, donc je pense que l'événement pour l'encodeur rotatif n'est pas bien traité.

Edit:
Après recherche, analyse, et comparaison avec la bibliothèque DcDccNanoController, j'ai trouvé ce qui ne vas pas:
Pour un événement de type EVENT_ENCODER, tu ne prends pas en compte la valeur intData associée.
(je me suis référé à DcDccNanoController, Handle.cpp, ligne 170).
Donc j'ai ajouté ceci après la récupération de l'événement dans l'exemple MaxiDcc:
if (event == EVENT_ENCODER)
  {
      int inData = Commanders::GetLastEventData();
      if (inData == +1)
        event = EVENT_MORE;
      if (inData == -1)
        event = EVENT_LESS;
  }
Et ça fonctionne ! :D

Pour le BP F0, il faut appuyer très très rapidement pour que l'événement ne soit compté qu' 1 fois.
Comment peut-on améliorer ça ? (classe debounce, ...)

Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le janvier 07, 2018, 08:23:53 pm
Joli, j'ai laissé passer ça... Je modifierai les exemples pour tenir compte de l'événement EVENT_ENCODER.

Pour le BP F0, je suis surpris, parce que dans mon exemple, il s'agit d'un ButtonsCommanderSwitchOnePin, c'est à dire d'un switch dont on utilise seulement une broche, et pas un bouton poussoir. D'ailleurs l'un comme l'autre ont un mécanisme de debounce intégrés. Mais peut être le délai est-il trop court à 50ms. Dans Commanders, pour ButtonsCommanderSwitchOnePin il faut modifier le source ButtonsCommanderSwitchOnePin.cpp ligne 13 et sans doute augmenter la valeur de debounceDelay... C'est aussi la valeur à changer dans ButtonsCommanderPush.cpp pour les poussoirs, si le besoin se fait sentir...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le janvier 07, 2018, 08:49:39 pm
Autant pour moi, j'ai été trop vite dans mon montage, c'est sûr qu'utiliser un BP avec la classe ButtonsCommanderSwitchOnePin n'est pas idéale et donne un résultat incohérent.
Je corrigerai demain.

Ensuite plus qu'à tester la réception d'ordre Dcc avec la bibliothèque Accessories...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le janvier 20, 2018, 05:23:21 pm
Bonjour,

Je reprend mes petits tests DCC et m'attaque à essayer d'activer une aiguille via DCC et Commanders :)

je bute sur l'adressage (ou les id) et valeurs à mettre et faire correspondre entre ce qui est déclaré dans le sketch MaxiDcc et mon sketch DccCommander.
Dans MaxiDcc j'ai laissé comme l'exemple:
turn1.begin(1, 100, 1);
A quoi correspond les valeurs et que dois-je mettre pour correspondre avec mon sketch DccCommander?

Coté réception dans DccCommander j'ai déclaré comme ceci:
#define DCCID_DROIT   DCCINT(100, 0)
#define DCCID_DEVIE   DCCINT(100, 1)
et
DccCommander.begin(0x01, 0x01, digitalPinToInterrupt(3));

Merci pour l'aide
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le janvier 28, 2018, 06:04:05 pm
Pardon pour le délai, la période est un peu compliquée pour moi...

pour les structures turnout, les valeurs sont celles utilisées par le DCC++ originel documentées dans mon code dans turnout.h :

   /** Initialize the turnout created by regular C++ instantiation.
   @param id The numeric ID (0-32767) of the sensor.
   @param add   The primary address of the decoder controlling this turnout (0-511).
   @param subAdd   The sub-address of the decoder controlling this turnout (0-3).
   @remark Should not be used in command line mode.
   */
   void begin(int id, int add, int subAdd);

le premier argument id sert à 'nommer' l'aiguillage.
le deuxième et le troisième servent à décrire le décodeur DCC qui est relié à cet aiguillage. C'est sans objet si l'aiguillage n'est pas contrôlé par DCC.

Pour la déclaration des adresses DCC, ça me parait correct.

Dans DccCommander.begin, les deux premiers arguments servent à donner un identifiant de constructeur de décodeur, et un identifiant de modèle pour ce constructeur. Laisser ces valeurs à 0 ou 1 ne pose pas de problème.
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le janvier 28, 2018, 07:11:44 pm
bonsoir,
aucun problème pour le délai de réponse :) ça m'a laissé du temps pour m'occuper de mon nouveau joujou: une imprimante 3D :D

donc j'ai essayé ceci:
dans MaxiDcc:
turn1.begin(100, 1, 1);
et j'ai laissé DccCommander comme décrit précédemment:
-> pas de réaction.

j'ai quand même bien la led 13 sur DccCommander qui clignote ce qui indique une réception de données provenant de l'optocoupleur et donc du signal DCC.

J'ai activé le COMMANDERS_DEBUG_VERBOSE_MODE
voici ce que je reçois lorsque j'active l'interrupteur pour turn1:
Dcc packet found : real data : 1 / 3 / 1  converted : 2 / 1 / 1
Dcc packet found : real data : 1 / 3 / 1  converted : 2 / 1 / 1
Dcc packet found : real data : 1 / 3 / 1  converted : 2 / 1 / 1
et
Dcc packet found : real data : 1 / 2 / 1  converted : 2 / 0 / 1
Dcc packet found : real data : 1 / 2 / 1  converted : 2 / 0 / 1
Dcc packet found : real data : 1 / 2 / 1  converted : 2 / 0 / 1

je crois comprendre qu'il manque un dernier paquet avec une valeur à 0 pour que l'ordre soit bien pris en compte ?
j'ai l'impression également qu'il manque le type de donnée à envoyer par MaxiDcc: dans DCCCommander, on s'attend à recevoir un type MOVEPOSITIONID hors je ne le vois pas dans la trame "Dcc packet found..."

qu'en penses tu ?
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 03, 2018, 08:38:33 pm
Bonsoir.

Je recolle au problème...

MaxiDcc a été prévu pour piloter des aiguillages avec des boutons, pas avec des ordres envoyés par Dcc... C'est d'ailleurs un peu étrange de demander à une centrale (même faite par DCCpp) de servir aussi de décodeur... Il ne peut pas y avoir deux donneurs d'ordres sur un réseau. Donc la seule centrale à envoyer des commandes Dcc est MaxiDcc. Pourquoi dans ce cas DccCommander aurait-il à analyser des trames pour les décoder ? Si j'utilise Commanders dans l'exemple MaxiDcc, c'est pour gérer les boutons de la centrale de manière bien plus simple qu'en codage classique. Mais l'utilisation d'un DccCommander là est bien plus dangereuse qu'utile !

Si l'on veut décoder les ordres envoyés par une centrale, comme la CS2 par exemple, il faut utiliser Commanders seul avec comme point de départ son exemple DccCommanders .
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le février 03, 2018, 08:57:56 pm
Oui je sais tout ça grâce à tes nombreuses explications sur les autres sujets abordés sur ce forum et tes articles sur le site.

Peut être que j'ai mal expliqué :
J'ai 1 nano avec maxidcc, et un autre nano avec dcccommander.

Celui avec dcccommander décode les trames avec un optocoupleur.

Est-ce plus clair sur le montage que j'ai fait ?
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 04, 2018, 10:22:11 am
Voilà pourquoi un schéma, une photo, une explication du contexte et les fichiers sources concernés sont nécessaires avant même de poser des questions.
Envoie ici tes fichiers ino complets, je pourrais ainsi mieux comprendre la situation.
D'après ce que tu dis, DccCommander reçoit bien des paquets accessoires pour les identifiants 2/0 et 2/1. Mais je ne sais pas si c'est ce qui est codé côté émetteur, ni ce que tu en fais dans ton ino de récepteur...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le février 04, 2018, 11:34:11 am
voici les fichiers.

MaxiDcc pour la partie donneur d'ordre avec l'utilisation d'un LMD18200.
Les ordres envoyés à ma loco fonctionnent bien.

DccCommander pour la partie réception pour commander des accessoires
J'ai repris le schéma de l'optocoupleur de cet article (avec pin D3 pour l'interruption):
http://www.locoduino.org/spip.php?article39
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 04, 2018, 05:44:37 pm
Pour turn1.begin().
Les trois arguments de cette fonction sont:

id : un identifiant interne à DCC++
add: adresse principale pour le Dcc
subadd: sous adresse pour le Dcc

Dans MaxiDcc on a turn1.begin(2, 1, 1);
Donc on devrait retrouver 1 / 1 real data dans l'affichage de DccCommander, ce qui n'est semble t-il pas le cas...

Honnêtement, je ne comprend pas. Le code de DCCpp (turnout.cpp) est simple :
DCCpp::mainRegs.setAccessory(this->data.address, this->data.subAddress, this->data.tStatus);
On envoie un ordre Dcc via le registre principal avec l'adresse et la sub-adresse spécifiée dans le begin().

Côté DccCommander, on reçoit bien un ordre accessoire (il n'affiche que ceux là...), mais les valeurs réelles ne sont pas les bonnes...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le février 04, 2018, 05:50:42 pm
Oui c'est ce que j'ai constaté aussi.
J'ai essayé diverses autres valeurs comme par exemple le 3eme argument de turn1.begin() qui influence les valeurs reçues côté Dcccommander...
Mais je n'arrive pas à interpréter cela.
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 04, 2018, 06:15:37 pm
Bon. Il faudrait que je réunisse de quoi tester... Ça va prendre un peu de temps...
Titre: Re : Bibliothèque DCCpp
Posté par: bagou91 le février 04, 2018, 06:24:25 pm
j'ai trouvé quelquechose ! :D

dans DccCommander:
on reçoit la trame 3 fois pour chaque ordre, hors dans la bibliothèque de DccCommander, fichier DccCommander.cpp, ligne 65, tu expliques que tu attends 3 fois la même trame, puis une 4ème trame avec 0 au dernier octet pour activer l'accessoire.
Cette dernière trame n'est jamais envoyée par MaxiDcc donc pas reçu par DccCommander.

Si je supprime le test ligne 65, ça fonctionne: mon aiguille réagit bien !
Par contre au bout de quelques actionnements de mon interrupteur sur l'arduino MaxiDcc, l'arduino DccCommander finit par perdre les pédales, freeze, plante et reboot.
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 04, 2018, 06:31:23 pm
Ouf, voilà qui est rassurant.
Le problème est que selon la centrale, le format des ordres accessoire peut varier. Du coup, j'ai préféré me baser sur la présence d'une désactivation que j'ai considéré à l'époque comme forcément présente.
Peut être faudrait-il modifier DCCpp pour coller à la norme (s'il y en a une), ou modifier DccCommander pour réagir à un nombre donné d'activations au lieu d'une désactivation... Je vais voir ce que je peux faire côté Commanders, ça me parait plus simple. Et étudier la norme pour s'y conformer du côté DCCpp si elle existe. C'est déjà ce que j'ai fait (pour la prochaine version) pour les fonctions des locos que la norme demande d'envoyer deux fois...
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le février 04, 2018, 08:09:19 pm
Pour le plantage, il faudrait activer le mode debug de Accessories pour voir si quelque chose cloche. Je vais tenter de reproduire le problème ici...
Titre: Re : Bibliothèque DCCpp
Posté par: Souris verte le juin 23, 2018, 07:18:36 pm
Bonjour,

je voudrais configurer les CV de ma loco et je bug...
montage : UNO, LMD18200 et MAX471.
branchement de la voie de Prog :
  DCCpp::begin();
  DCCpp::beginProg(UNDEFINED_PIN, 5, 11, A1);  // J'utilise des variables dans le code
 
  DCCpp::powerOn();

  for (int i=1; i<36; i++){
      delay(100);
      DCCpp::readCvProg (i, 200, 100);
  }

  DCCpp::writeCvProg(33, 1, 400, 100);
  delay(200);

J'obtiens:
<r200|100|1 3>
<r200|100|2 3>
<r200|100|3 32>
<r200|100|4 24>
...
<r200|100|33 0>
<r200|100|34 0>
<r200|100|35 0>
<r400|100|33 -1>
DCCpp WriteCv 33 : 1
*** DCCpp LIBRARY ***
VERSION DCC++:      2.0.0
VERSION DCCpp library: 1.3.0
COMPILED:     Jun 23 2018 16:50:48

DCC SIG PROG(DIR): 5
   DIRECTION: 255
   ENABLE(PWM): 11
   CURRENT: 15

INTERFACE:    SERIAL


J'en déduis que les connexions sont bonnes puisque la lecture se passe bien.
En revanche pour l'écriture pas possible ...
En tapant <W 33 1 400 100> même résultat.

Où est mon erreur? Merci

Yannick
Titre: Re : Bibliothèque DCCpp
Posté par: msport le juin 23, 2018, 10:31:09 pm
Bonsoir,
il faut se référer à la syntaxe décrite dans le document  Commands for DCCpp BaseStation du Github.
Quel est le but de la manœuvre ?

#####WRITE CV BYTE TO ENGINE DECODER ON PROGRAMMING TRACK#####
Writes, and then verifies, a Configuration Variable BYTE to the decoder of an engine on the programming track
•   Write CV BYTE Format is: < W CV VALUE CALLBACKNUM CALLBACKSUB >
•   CV: The number of the Configuration Variable memory location in the decoder to write to (1-1024 ).
•   VALUE: The value to be written to the Configuration Variable memory location (0-255).
•   CALLBACKNUM: An arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs that call this function.
•   CALLBACKSUB: a second arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs (e.g. DCC++ Interface) that call this function.
•   Returns: < r CALLBACKNUM|CALLBACKSUB|CV Value >
•   CV VALUE: Is a number from 0-255 as read from the requested CV, or -1 if verification read fails.
Titre: Re : Bibliothèque DCCpp
Posté par: Souris verte le juin 24, 2018, 07:58:24 am
Bonjour,

J’ai utilisé la syntaxe (la commande est dans mon message).
Le but est d’ecrire Ds les cc de 33 a 47 qui sont tous à 0. Donc pas possible d’alumer Les feux.

Merci
Titre: Re : Bibliothèque DCCpp
Posté par: msport le juin 24, 2018, 11:01:59 am
Bonjour,
si je comprends bien, à <W 33 1 400 100>
la réponse est <r400|100|33 -1> donc échec de l'écriture.
par contre le CV 33 a bien été lu à 0 avec : <r200|100|33 0>

je propose un reset du décodeur (pour Lenz c'est 8 ou 33 dans le CV 8 )
Vérifier alors que le CV1 est à 3, et le CV 33 à 1.

l'allumage des feux avant avec F0 est classique avec le CV 33 à 1 pour les décodeurs que je connais.
Titre: Re : Bibliothèque DCCpp
Posté par: Dominique le juin 24, 2018, 12:13:02 pm
J’ai constaté qu’il y a des décodeurs récalcitrants qui ne se laissent pas programmer par DCC++, notamment CTelektronic.

Mais le MS2 y arrive. Il y a donc certainement d’autres méthodes.

J’ai fait une centrale dédiée à la programmation et j’explore ces questions.
Pas trop le temps en ce moment mais je vous donnerai les résultats.
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le juin 24, 2018, 08:58:15 pm
Pour moi, tous les décodeurs arrivent à recevoir les messages et à faire ce qu'on leur demande. La difficulté vient de la remontée d'information qui n'est pas faite avec la même intensité et la même durée pour tout le monde. Ce n'est pas le cas ici puisque la lecture semble fonctionner. Pourtant le délai entre l'écriture et l'envoi d'une confirmation après l'écriture, ou la manière de décoder cette confirmation peuvent être différentes.
Dans le code de PacketRegister.cpp, la lecture de CV n'a pas tout à fait la même structure que la réception de confirmation. Il faudrait afficher la valeur vraiment lue par les différents analogRead qui sont faits dans writeCVByte() pour comparer. Par exemple, ajouter juste avant la fin du test "if (DCCppConfig::CurrentMonitorProg != UNDEFINED_PIN)"

#ifdef DCCPP_DEBUG_MODE
Serial.print(F("Confirmation intensity "));
Serial.println(c);
#endif

La valeur de c doit être supérieure à celle de ACK_SAMPLE_THRESHOLD (définie dans PacketRegister.h) pour valider la confirmation. Peut être faut il ajuster cette constante pour s'adapter aux capacités du décodeur ? Et puis on va faire 500 mesures de la broche analogique (constante ACK_SAMPLE_COUNT). Peut être est-ce excessif, surtout si le décodeur renvoie sa confirmation pendant bien moins longtemps que ça... Bref, il y a des choses à régler, et peut être qu'un oscillo pourrait rendre service pour étudier la forme du retour.
Titre: Re : Re : Bibliothèque DCCpp
Posté par: msport le juin 24, 2018, 09:14:58 pm

montage : UNO, LMD18200 et MAX471.

En tapant <W 33 1 400 100> même résultat.


Si j'ai bien compris, le problème semble être là aussi avec le serial monitor, il vient donc soit du décodeur, soit du montage.
Et comme j'ai ce montage comme beaucoup d'autres utilisateurs (sauf si il a été personnalisé) ...
Le décodeur est un ... ?
Titre: Re : Bibliothèque DCCpp
Posté par: Souris verte le juin 24, 2018, 11:03:36 pm
Bonsoir,
Décodeur esu. J’ai poussé 8 dans le CV8 et ça a réglé le pb.
Le CV8 est repassé à ca valeur par défaut (151) comme le reste.
Les feux s’allument de nouveau.

Problème de décodeur plus que DCCpp. Merci pour les aides et conseils
Yannick

Titre: Re : Bibliothèque DCCpp
Posté par: Dominique le juin 24, 2018, 11:40:32 pm
Thierry a certainement raison :
Citer
Pour moi, tous les décodeurs arrivent à recevoir les messages et à faire ce qu'on leur demande

En fouillant sur les forums les plus sérieux, j’ai eu l’impression que quand on tombe sur une difficulté, on ne cherche pas très longtemps et on la contourne  :-X. En l’occurence, on ne vérifie pas la bonne programmation des CVs en les relisant.

Pour l’adresse d’une loco, c’est facile, si la loco réagit à la nouvelle adresse, c’est qu’elle est bien programmée.

Moi je cherche à lire tous les CVs pour garder une description de mon parc et surtout pour faire de la reconnaissance automatique de locos (voir le va et vient).

Je considère qu’il y a encore à explorer ce domaine et je remercie Thierry d’avoir intégré cette fonction de reconnaissance automatique dans DCCpp, même si elle ne marche pas encore avec tous les décodeurs.

Amicalement
Dominique
Titre: Re : Bibliothèque DCCpp
Posté par: Jeje_12_34 le novembre 22, 2020, 11:50:40 am
Bonjour

Avec la nouvelle version de DCCpp  disponible a ce jour, je confirme que mes décodeurs D&H récents, qui posaient des problemes sous DCC++, sont désormais intégralement pris en charge sans modifier quoique ce soit.  :)
Tests réalisés avec la centrale sous JMRI de Bobby&Co, en mode serial.

Bravo Thierry

Bon , maintenant, il ne me reste plus qu'a faire fonctionner cette foutue liaison Ethenet, qui, elle, se montre particulièrement enquiquinante :)
(mais j'ai du faire une bêtise quelque part)

La discussion va bon train ici  : https://forum.locoduino.org/index.php?topic=1074.0

Bonne journée a tous
Jerome ... 
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le novembre 22, 2020, 11:59:33 am
Bonjour. Content de voir que ça marche mieux qu'avant...
Pour la connexion ethernet, le passage de DCC++ à DCCpp l'a rendue plus difficile et je ne sais pas pourquoi...
Titre: Re : Bibliothèque DCCpp
Posté par: Tony04 le novembre 22, 2020, 05:33:42 pm
Bonjour Thierry,

je confirme aussi une nette amélioration et peut-être même "plus aucun problème" mais que je ne pourrai voir cela qu'après le déconfinement au club.

Un grand merci à toi.
Cordialement
Antoine
Titre: Re : Bibliothèque DCCpp
Posté par: Tony04 le novembre 23, 2020, 05:55:19 pm
Bonsoir Locoduino,

dans ma dernière confirmation de l'amélioration de la programmation des CVs j'ai peut-être été trop rapide.
Un des membres du club vient de me signaler le dysfonctionnement suivant:

Sur voie MAIN jusqu'au cran 100 (environ) la vitesse augmente pratiquement normalement, par contre en continuant de monter les crans la loco diminue sa vitesse jusqu'à l'arrêt complet. Et selon lui ses machines ont de toute façon moins de "peps". Ce fonctionnement est testé sur ma centrale que j'ai décrit ici: https://locoduino.org/spip.php?article237
En remettant l'ancienne version de DCCpp tout rentre dans l'ordre.
J'ai même mis dans l'ancienne version les 2 fichiers "PacketRegister" de la nouvelle version et la programmation des CVS semble bonne sans voir apparaitre le problème de la vitesse.

Est-ce que d'autres membres ont testés la nouvelle version et ont-ils le même comportement ?

Merci par avance pour vos réponses.

Cordialement
Antoine
Titre: Re : Bibliothèque DCCpp
Posté par: Jeje_12_34 le novembre 23, 2020, 06:47:16 pm
Bonsoir

Thierry,
pour faire fonctionner mon Shield V2 5500 j'ai du désactiver l'EPROM.
C'est grave, docteur ?

En tout cas, pour l'instant ça roule  8)

Jerome
Trop content que ca  fonctionne comme il veut  8)
Titre: Re : Bibliothèque DCCpp
Posté par: Thierry le novembre 25, 2020, 08:39:18 pm
L'EEPROM n'a aucun d'intérêt si l'on utilise pas les accessoires prévus par DCC++ : les aiguillages, les capteurs et les broches à activer. Pour la partie DCC pure, pas d'EEPROM ça ne sert à rien.
Par contre, je ne vois pas le rapport avec le shield 5500... Mais peut être que sa bibliothèque de gestion utilise aussi l'EEPROM...