Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Jeje_12_34

Pages: 1 [2] 3 4 ... 6
16
Merci de la réponse, vraiment :)

Mais je ne pense pas que ce soit ca .
Ma centrale sous DCC++ fonctionne avec l'adresse 192.168.0.200 parce que mon routeur est configuré ainsi.
Et quand je téléverse DCCpp sur cette centrale, branchée exactement de la même manière et au même endroit,  ça ne fonctionne plus .

Je ne m'explique pas pourquoi mon routeur ne voit pas le shieldV2 Ethernet  sous DCCpp alors qu'il le voit sous DCC++.

Je n'ai eu aucune erreur de compilation. La bibliothèque Ethernet2 est installée .

J'ai téléversé le sketch en serial et apparemment, la centrale  DCCpp via USB fonctionne. J'arrive a allumer les LEDs  d'alimentation des voies par JMRI.
Je n'ai pas eu le temps de tester plus loin, je n'ai pas mon matériel ferroviaire accessible.

Je sèche complètement . :)  et ca m'embête parce que je dois faire fonctionner en Ethernet, le fil USB entre l'ordi et la centrale n'est pas viable dans ma configuration . :-\

Bonne soirée à tous
Jerome

EDIT  : mais je tenterai demain avec l'adresse 192.168.1.200  ca ne coute rien  :)

17
Bonjour

J'ai tres largement simplifié mon sketch

/*************************************************************
project: <Dc/Dcc Controller>
author: <Thierry PARIS>
description: <Dcc Ethernet Controller sample>
*************************************************************
Modifié par Jerome
Adaptation de ma Centrale fonctionnelle sous DCC++ Ethernet pilotée via JMRI
Composée d'un "Mega", d'un "Shield Ethernet V2 5500", d'une carte "L9110S Dual Motor Driver" et d'un seul "Max 471"
Montage strictement identique à l'article paru dans Locoduino

J'ai adapté l'exemple "EthernetDcc" fourni dans le dossier examples de la bibliotheque DCCpp.
********************************************/
#include "DCCpp.h"

#if !defined(USE_TEXTCOMMAND) || !defined(USE_ETHERNET)
#error To be able to compile this sample,the lines #define USE_TEXTCOMMAND and #define USE_ETHERNET must be uncommented in DCCpp.h
#endif

/* j'ai decommenté la ligne 486 dans le fichier de la DCCpp de la bibliotheque. J'ai un shield V2 avec 5500
 La ligne #define USE_TEXTCOMMAND était déjà décommentée.*/

// the media access control (ethernet hardware) address for the shield:
// uint8_t mac[] = { 0xBE, 0xEF, 0xBE, 0xEF, 0xBE, 0xEF }; adresse MAC se trouve sur le materiel ou son emballage.
uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF };  //ceci est l'adresse MAC de mon shield ethernet.

//the IP address for the shield:
// uint8_t ip[] = { 192, 168, 1, 200 }; chez moi cette adresse n'a jamais fonctionné sans doute a cause de mon routeur free
uint8_t ip[] = { 192, 168, 0, 200 };  // cette adresse fonctionne chez moi avec la centrale précedente

EthernetServer DCCPP_INTERFACE(2560);                  // Create and instance of an EthernetServer

void setup()
{
Serial.begin(115200);

DCCpp::begin();
  // Configuration for my LMD18200. See the page 'Configuration lines' in the documentation for other samples.
#if defined(ARDUINO_ARCH_ESP32)
  DCCpp::beginMain(UNDEFINED_PIN, 33, 32, 36);
#else

//DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 3, A0); script original du LMD18200 de l'auteur
DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 3, A0);
DCCpp::beginProg(UNDEFINED_PIN, DCC_SIGNAL_PIN_PROG, 11, A0);
#endif
  DCCpp::beginEthernet(mac, ip, EthernetProtocol::TCP);

}

void loop()
{
DCCpp::loop();
}


Cela ne fonctionne toujours pas, en ethernet

Avec ce programme, je n'arrive pas à ping l'adresse 192.168.0.200. Alors que j'y arrive avec le sketch original de l'article.

De plus, mon routeur voit bien l'adresse MAC de mon shield V2  avec l'ancien programme DCC++.
Il ne le voit pas dès que je suis avec DCCpp.
Je suis sur que je rate un truc tout bête.

Je vais essayer d'utiliser une liaison série, pour vérifier que la centrale fonctionne.

La suite bientot :) mais je prends tous les conseils  :P

Bonne soirée
Jerome

18
Bonjour

J'ai tenté  . La connexion via Ethernet ne fonctionne pas .

/*************************************************************
project: <Dc/Dcc Controller>
author: <Thierry PARIS>
description: <Dcc Ethernet Controller sample>
*************************************************************
Modifié par Jerome
Adaptation de ma Centrale fonctionnelle sous DCC++ Ethernet pilotée via JMRI
Composée d'un "Mega", d'un "Shield Ethernet V2 5500", d'une carte "L9110S Dual Motor Driver" et d'un seul "Max 471"
Montage strictement identique à l'article paru dans Locoduino

J'ai adapté l'exemple "EthernetDcc" fourni dans le dossier examples de la bibliotheque DCCpp.
********************************************/
#include "DCCpp.h"

#if !defined(USE_TEXTCOMMAND) || !defined(USE_ETHERNET)
#error To be able to compile this sample,the lines #define USE_TEXTCOMMAND and #define USE_ETHERNET must be uncommented in DCCpp.h
#endif

/* j'ai decommenté la ligne 486 dans le fichier de la DCCpp de la bibliotheque. J'ai un shield V2 avec 5500
 La ligne #define USE_TEXTCOMMAND était déjà décommentée.*/

// the media access control (ethernet hardware) address for the shield:
// uint8_t mac[] = { 0xBE, 0xEF, 0xBE, 0xEF, 0xBE, 0xEF }; adresse MAC se trouve sur le materiel ou son emballage.
uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF };  //ceci est l'adresse MAC de mon shield ethernet.

//the IP address for the shield:
// uint8_t ip[] = { 192, 168, 1, 200 }; chez moi cette adresse n'a jamais fonctionné sans doute a cause de mon routeur free
uint8_t ip[] = { 192, 168, 0, 200 };  // cette adresse fonctionne chez moi avec la centrale précedente

EthernetServer DCCPP_INTERFACE(2560);                  // Create and instance of an EthernetServer

void setup()
{
Serial.begin(115200);

DCCpp::begin();
  // Configuration for my LMD18200. See the page 'Configuration lines' in the documentation for other samples.
#if defined(ARDUINO_ARCH_ESP32)
  DCCpp::beginMain(UNDEFINED_PIN, 33, 32, 36);
#else
// DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 3, A0); script original du LMD18200 de l'auteur

  /* Ci dessous les lignes trouvées dans DCCP_Uno.h de la centrale sous DCC++  pour adapter a ma configuration */
 
  #define DCC_SIGNAL_PIN_MAIN 12          // Arduino Mega - uses OC1B
  #define DCC_SIGNAL_PIN_PROG 2           // Arduino Mega - uses OC3B
 
  /* Il convient de modifier certains noms  des variables trouvées.
  #define SIGNAL_ENABLE_PIN_MAIN 3
  #define SIGNAL_ENABLE_PIN_PROG 11
  #define CURRENT_MONITOR_PIN_MAIN A0
  #define CURRENT_MONITOR_PIN_PROG A0
  #define DIRECTION_MOTOR_CHANNEL_PIN_A 12
  #define DIRECTION_MOTOR_CHANNEL_PIN_B 13 */

  #define MOTOR_SHIELD_SIGNAL_ENABLE_PIN_MAIN  3
  #define MOTOR_SHIELD_SIGNAL_ENABLE_PIN_PROG 11
  #define MOTOR_SHIELD_CURRENT_MONITOR_PIN_MAIN A0
  #define MOTOR_SHIELD_CURRENT_MONITOR_PIN_PROG A0
  #define MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_A 12
  #define MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_B 13
 
  DCCpp::beginMain(MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_A, DCC_SIGNAL_PIN_MAIN, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_MAIN, MOTOR_SHIELD_CURRENT_MONITOR_PIN_MAIN);
  DCCpp::beginProg(MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_B, DCC_SIGNAL_PIN_PROG, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_PROG, MOTOR_SHIELD_CURRENT_MONITOR_PIN_PROG);
#endif
DCCpp::beginEthernet(mac, ip, EthernetProtocol::TCP);
}

void loop()
{
DCCpp::loop();
}

 :(

Bonne journée

EDIT : 15:30  Manifestement, pour moi la marche est encore trop haute pour  faire fonctionner cette centrale en Ethernet/JMRI/DCCpp
Lundi prochain je tenterai de la faire fonctionner en serial .


Néanmoins, j'ai passé une bonne partie de la journée dessus. Dans l'article sur la Bibliothèque DCCpp, la ligne a décommenter  pour utiliser le Shield Ethernet V2 5500 ne semble pas la même que dans la bibliotheque. (pas la 486) Pour tant il est indiqué :

Voici l'extrait concerné :
#define USE_TURNOUT
#define USE_EEPROM
#define USE_OUTPUT
#define USE_SENSOR
#define USE_TEXTCOMMAND
//#define USE_ETHERNET_WIZNET_5100
#define USE_ETHERNET_WIZNET_5500
//#define USE_ETHERNET_WIZNET_5200
//#define USE_ETHERNET_ENC28J60

#ifdef DOXYGEN_SPECIFIC
    // DO NOT CHANGE THESE LINES IN THIS BLOCK 'DOXYGEN_SPECIFIC' : Only here for documentation !

    /**Comment this line to avoid using and compiling Turnout.*/
    #define USE_TURNOUT
    /**Comment this line to avoid using and compiling EEPROM saving.*/
    #define USE_EEPROM
    /**Comment this line to avoid using and compiling Outputs.*/
    #define USE_OUTPUT
    /**Comment this line to avoid using and compiling Sensors.*/
    #define USE_SENSOR
/**Comment this line to avoid using and compiling Serial commands.*/
#define USE_TEXTCOMMAND
/**Comment this line to avoid using and compiling Ethernet shield using Wiznet 5100 chip (Arduino Shield v1).*/
#define USE_ETHERNET_WIZNET_5100
/**Comment this line to avoid using and compiling Ethernet shield using Wiznet 5500 chip (Arduino Shield v2).*/
#define USE_ETHERNET_WIZNET_5500
/**Comment this line to avoid using and compiling Ethernet shield using Wiznet 5200 chip (Seeed Studio).*/
#define USE_ETHERNET_WIZNET_5200
/**Comment this line to avoid using and compiling Ethernet shield using ENC28J60 chip.*/
#define USE_ETHERNET_ENC28J60

#undef USE_TURNOUT
#undef USE_EEPROM
#undef USE_OUTPUT
#undef USE_SENSOR
#undef USE_TEXTCOMMAND
#undef USE_ETHERNET_WIZNET_5100
#undef USE_ETHERNET_WIZNET_5500
#undef USE_ETHERNET_WIZNET_5200
#undef USE_ETHERNET_ENC28J60

Un début de piste?

Autre chose, a la fin  du script :

DCCpp::beginEthernet(mac, ip, EthernetProtocol::TCP);

TCP ? (j'y connais rien mais ca n'apparait pas dans la version originelle qui fonctionne sur ma centrale.

Re aurevoir  8)



19
Bonjour

La réalisation de cette centrale est très attrayante pour de vrais débutants. L'article est clair et très bien  documenté.
Cette centrale permet de piloter des trains facilement, en s'affranchissant des codes DCC complexes, puisque c'est JMRI qui s'en charge.

Je vais tenter, en temps que néophyte, de la faire fonctionner avec DCCpp et non plus avec DCC++.
C'est peut être déjà fait par quelqu'un d'autre, mais je n'ai pas trouvé un "tuto" aussi clair que l'article.

Le but est de pouvoir faire bénéficier les néophytes des modernisations de DCCpp, et en particulier, la lecture/écriture d'un plus grand nombre de décodeurs "récents"; ainsi que des mises a jours quasi automatique d'une bibliothèque.

Si je n'y parviens pas, je demanderai de l aide à la suite de ce fil.
J'ai commencé à m'y pencher.
Croyez moi, c'est peut être évident pour beaucoup d'entre vous, mais pour moi; ca ne l'est pas.

Si j'y parviens, j'essaierai de faire un petit "tuto" pour les vrais débutants si le besoin s'en fait sentir.


Bonne soirée
Jerome

20
Bonsoir Thierry

Est il possible de mettre a jour cette bibliothèque  en la basant sur tes avancées dans DCCpp ?

Si ce n'est pas trop dur ni trop long a faire, bien entendu.

Je sais bien que tu es tres occupé par LaBox .

Je pourrai ainsi plus facilement te confirmer si mes décodeurs D&H  fonctionnent "sans rustines".

Bon Week end

Jerome

21
Le logiciel DCC++ / Re : DCCpp 1.4.2
« le: novembre 09, 2020, 08:25:11 pm »
Bonjour

Je n'ai malheureusement pas le temps ( durant quelques mois) de vous confirmer que  je peux programmer mes D&H  via cette nouvelle bibliothèque.

Je vous tiens au courant des que je peux

Merci a tous, surtout ! :)

22
Bonjour Chris

Hélas, si la rustine ne fonctionne pas alors qu'elle est correctement installée, je ne peux t'aider, cela dépasse mes compétences  :'(

Tu as bien modifié les 8 lignes concernées et tout reversé après la compilation?

Si oui ... je ne sais pas. Ma proposition d'aide était juste pour aider à faire les modifications  :(

23
case EVENT_SELECT:
if (this->valueEdited)
{
if (!this->undefValue)
((ControllerDccpp *)DcDccController::pController)->WriteCv(this->cvAddress, this->value);
}
else
{
this->valueEdited = true;
int val = ((ControllerDccpp *)DcDccController::pController)->ReadCv(this->cvAddress);
this->undefValue = (val < 0);
if (val >= 0)
this->value = val;
else
this->value = 0;

showValue = true;
}
break;
Cette ligne  :
  int val = ((ControllerDccpp *)DcDccController::pController)->ReadCv(this->cvAddress);

Ne devrait pas être :
int val = ((ControllerDccpp *)DcDccController::pController)->ReadCv(this->cvAddress, this->value);

?

24
Bonjour a tous

A présent, toutes mes locos fonctionnent parfaitement sous DCC++ et DCCpp grâce à la rustine citée plus haut..

Je continue mes tests quand je peux, pour faire fonctionner correctement cette géniale DcDccNanoController, surnommée "ma petite"

J'ai lancé en parallèle ma "grosse centrale JMRI" et ma "petite". Je change simplement la connexion sans rien toucher d'autre pour passer de l'une à l'autre.

Contrairement à ce que j'ai écrit plus haut :

Par" ma petite" :

Je pose ma loco "21" et tente de lire un de ses CV , par exemple le 68 : la valeur affichée est  :  "021".
J'enlève la loco et tente de lire le  CV68  avec une piste vide : la valeur du CV68 affiche  "---" . Donc la centrale lit bien que la piste est vide et affiche la valeur en conséquence.
Je pose ma loco "14" et tente de lire le CV68 : la valeur affichée est "014" .

Je vais sous JMRI : je vois la valeur du CV 68  égale  09.
Je vais sur ma petite centrale : je lis le CV 68 : "014"  !    Je modifie cette valeur et je mets 18 dans le CV68. l'affichage affiche bien "018". Pour autant, si je sors de ce sous-menu,  par exemple pour lire un autre CV ,   puis que je retourne lire la valeur du CV68,  c'est redevenu "014".

Alors, je retourne sous JMRI et lis la valeur du CV 68 :  "18"   !?!?

La petite centrale modifie bien le contenu des CV !
C'est juste qu'elle n'affiche pas la valeur du CV qu'on lui demande, mais toujours la valeur du CV1.

Bien sur le CV68 est un exemple . Le symptôme est la pour tous les CV (sauf bien sur le 01). J'en ai testé plusieurs et sur plusieurs type de décodeurs.

Je pense comme Thierry, que c'est un bug logiciel, pas matériel.
Pourtant,  j'ai cru comprendre que d'autres que moi n'ont pas ce problème ?

J'ai beaucoup cherché en fouillant dans le code.
C'est vraiment trop ardu pour moi, encore.

Peut être un jour ...


Jerome, qui finit ses vacances sans avoir résolu ce problème   :'(


25
Bonjour Dominique

Les seules modifications de Thomas ne m'avaient pas suffit pour résoudre mon problème.

C'est bien l'ensemble des 8 modifications proposées dans les fichiers  (fournis me semble t il  par le service technique de D&H, avec l'aide de Thomas) qui m'ont aidé.

Je n'ai pas trop compris pourquoi il désactivait deux lignes en les commentant, par exemple.

 :)




26
Moi, je ne touche plus a rien .  je vais sagement attendre que Dominique teste  8)

27
Bonsoir

Bien que je ne l'utilise pas encore, j'ai déjà installé DCCpp dans mon IDE
Je dispose de la  version  : 02/04/2020 V1.4.1

J'ai donc jeté un coup d'œil et je pense avoir identifié les 8 endroits à modifier.
En fait, ce sont à chaque fois trois ou quatre lignes qui se suivent et qui sont strictement identiques  à celles que j'ai déjà modifiées avec succès dans DCC++ et dans DcDccNanoController .

Dans les extras fournis avec la bibliothèque,  on trouve les sources src  et les lignes y sont numérotées.

dans le fichier PacketRegister.cpp
la 419 et la 433 à modifier en : loadPacket(0, bRead, 3, 1) au lieu de loadPacket(0, resetPacket, 2, 1);
la  521 et la 591 à commenter pour qu'elles ne s'exécutent pas. // loadPacket(0, resetPacket, 2, 1);
la 533 et la 603 à modifier en : loadPacket(0, bWrite, 3, 1) au lieu de  loadPacket(0, resetPacket, 2, 1); 

dans le fichier  PacketRegister.h
la ligne 18  : mettre la valeur 250 au lieu de 500
la ligne 20   : Attention, la constante en "dur" 30 a été remplacée par  : DCCpp::setAckThreshold
Je présume qu'il suffit de la définir quelque part dans votre  script à 5 , ce que je ne sais pas encore faire, mais vous surement oui :)
La documentation indique que DCCpp::setAckThreshold est définie par défaut à 30, mais je n'ai pas trouvé où c'était.

Jeudi, je pourrai vous joindre les fichiers modifiés, si vous le souhaitez.
MAIS JE NE GARANTIS RIEN :) Je ne peux pas tester.

Bonne soirée .
Jérôme, qui n'aime pas lâcher un os tant qu'il ne l'a pas rongé jusqu'au bout  8)

28
Bonsoir

J'ai une  bonne et un mauvaise nouvelle, je commence par laquelle ?  :P

Concernant le problème N° 1:
Les modifications apportées en 8 endroits en tout dans les fichiers cités plus haut donnent entière satisfaction.
Toutes mes locos sont désormais automatiquement détectées par cette petite centrale
Il s'agit donc bien d'une incompatibilité avec le DCC++ original et les nouveaux décodeurs.
La rustine fonctionne pour moi ... youpi !


Concernant le problème N°2 :

J'ai passé une bonne partie de la journée à essayer de comprendre le code.
J'avais dans l'idée de trouver l'endroit où était demandé l'affichage de l'adresse autodetectée  (donc le CV1) dans le menu configDCC --> Adresse  puisque cet affichage fonctionne correctement .
Et ensuite de comparer avec l'endroit où est demandé l'affichage des autres CV dans  configDcc-->modif CV
A la recherche de la virgule manquante ... :)
Hélas ? Je ne trouve pas. Et je ne comprends pas "comment ça marche" :)

Toutes les valeurs affichées pour un  CV est en fait la dernière  "Valeur"
Je m'explique :
Par exemple si je cherche à modifier les CV de la  loco 021 qui a été détectée toute seule , toutes les valeurs de tous les CV est affichée 21!
ET pire : si je change de loco sans chercher à aller voir son adresse,  tous les CV restent affichés ... 21 :)

Thierry si tu veux que je fasse d autres tests, je pourrai Jeudi et Vendredi.

En attendant .. je deviens de moins en moins néophyte  ;D

Bonne soirée a tous

Je vous joins les fichiers modifiés.
pour remplacer  les fichiers que vous avez a cet endroit :
\Arduino\libraries\DcDccNanoController\src\DCCpp

29
Bonsoir Tony

Je pense que j'ai compris comment faire, mais je ne suis pas certain.

vois la page 5 ce post et la réponse de Thierry
https://forum.locoduino.org/index.php?topic=752.60

Je pense qu'il suffit de modifier ces fichiers (avec notepad)  dans ton répertoire  arduino/libraries/DCCpp/src

Je ne peux pas tester, n'ayant aucune centrale sous DCCpp mais demain je teste de faire les modifications pour DcDccNanoController





30


Bonsoir

Pour résoudre le problème N°1, est ce que la solution est de modifier avec un traitement de texte basique (notepad ?) les deux fichiers PacketRegister.cpp et PacketRegister.h situés dans le répertoire suivant sur mon ordinateur :

D:.........\Arduino\libraries\arduino_378281\src\DCCpp

Ces deux fichiers ressemblent furieusement à ceux que j'ai modifié pour faire fonctionner DCC++ et mes décodeurs D&H.


Puis sauvegarder ces deux fichiers à l'endroit où ils sont déjà puis recompiler  le tout dans l'IDE ?

Et enfin, bien sur, téléverser le nouveau programme dans le nano ?


PS : je ne comprends pas pourquoi le répertoire s'appelle arduino_378281 et pas DccDccNanocontroller, puisque c'est bien la bibliothèque qu'il contient.

Pages: 1 [2] 3 4 ... 6