LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: DDEFF le juin 02, 2020, 11:41:26 am

Titre: Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 02, 2020, 11:41:26 am
Préambule :

On voit sur ce fil l'évolution d'un programme destiné à gérer les CV des locos, genre DecoderPro.
Vous pouvez suivre ce fil dans l'ordre chronologique ou aller directement à la dernière version (la V1.0) en allant page 6, au 03/01/2021.
Bonne lecture !

Quand on y réfléchit, la principale chose qu'on demande à la voie de programmation des CV, c'est qu'elle doit être ISOLÉE du reste du réseau.

Par ailleurs, on voit dans la vraie centrale DCC qui est en train d'être développée (http://forum.locoduino.org/index.php?topic=922.0 (http://forum.locoduino.org/index.php?topic=922.0)), c'est que, finalement c'est assez bon marché. :P

Je propose donc de développer une centrale DCC spécifique qui ne sert qu'à la voie de programmation.

-> On n'a qu'un seul train à alimenter : Un simple L298 (1.74 €) est suffisant.
-> On n'a pas besoin du bus CAN ni de wifi : un simple Arduino NANO (3 €) suffit
-> Pas d'afficheur, pas de boutons (peut-être reset ?)
-> Quelques autres composants bon marché.
Donc, on le voit, la partie électronique est réduite "à sa plus simple expression" 8)

Reste LES parties logicielles :

-> Sur le NANO, la bibliothèque DCCpp, qui est encore en train de s'améliorer. ;D
Elle permet de lire et d'écrire les CV.

-> Sur l'ordinateur, un programme Processing, lui, complètement à créer.

Faire un affichage grand écran, facile à lire et dans lequel on n'a quelques cases à remplir et quelques curseurs à bouger, c'est simple.

La vraie difficulté (car il y en a quand même une !), c'est de connaitre les possibilités de l'immense variété des décodeurs de locos et dont je sais que certaines ne sont même pas dans leur doc ( :o)
C'est un challenge, certes, mais je suis persuadé qu'on peut le relever en commençant par les décodeurs les plus fréquents et les CV les plus courants.

Je vois, enfin, un autre avantage par rapport aux autres solutions :

Le programme de gestion des trains serait indépendant du programme de gestion des CV.
Ils pourraient donc s'afficher simultanément dans des fenêtres différentes.

-> Modifier un CV ne bloquerait pas l'affichage de la gestion des trains.
-> Ce programme serait même indépendant de toutes les centrales DCC, quelles qu'elles soient !

Et, tant qu'on parle de gestion des trains, dans mon programme (http://forum.locoduino.org/index.php?topic=751.0 (http://forum.locoduino.org/index.php?topic=751.0)), j'ai un simple fichier Excel qui regroupe tous les véhicules qu'on a, avec les noms de leurs photos de dessus et de côté et quelques caractéristiques (couleur du fond, …)

On pourrait donc simplement ajouter des colonnes pour enregistrer les valeurs des CV pour chaque véhicule (les voitures et wagons ont aussi parfois des décodeurs).

Comme Processing sait LIRE les fichiers Excel (si on les sauve au format texte, séparateur tabulation), ÉCRIRE dans ces fichiers, on peut ainsi avoir une base à jour facile à exporter, lisible partout et par tous.

Et toujours à jour, sans erreurs de saisies manuelles.

En effet, c'est en mettant à jour le décodeur de la loco qu'automatiquement le fichier Excel se met à jour ! Et réciproquement !

Écriture (vers le bas) / Lecture (vers le haut):

Excel (.xls) : on peut aussi utiliser Libre Office et sauver en ".xls".
          <->
Excel (.txt, séparateur tabulation)
          <->
Fichier .tsv
          <->
Programme Processing Voie de programmation (celui à créer)
          <->
Câble USB (Série)
          <->
Arduino Nano de la centrale DCC dédiée voie de programmation
          <->
Voie de programmation
          <->
Décodeur de la loco

Et voilà. Bon, c'est un immense chantier, j'en suis conscient et ce ne sera pas fait demain matin. Mais je le trouve motivant.

Denis

(en PJ, mon fichier "Matériel.xls" actuel : la colonne "dcc" devrait maintenant s'appeler "CV1")
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 02, 2020, 12:43:58 pm
Il est probable qu’un simple paramètre de configuration suffise à transformer la centrale pour voie principale en centrale pour voie de programmation  ;)

Est-il nécessaire de faire 2 centrales différentes si une seule suffit !

Pourquoi faire compliqué et plus cher ?
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 02, 2020, 01:43:36 pm
L'argument du surcoût ne me convainc pas. Elle est vraiment minimaliste.
Je pense même qu'on peut directement utiliser une partie de ce que tu as déjà fait auparavant.
Je serais surpris qu'on dépasse les 10 €. ;)

Concernant l'indépendance, j'y vois des avantages :

1°) Le fait qu'on puisse utiliser la mise à jour des CV sur une voie paumée dans les coulisses et avoir, à l'avant du réseau, la vraie centrale dont on démontre les capacités au public. ;D
On n'a même pas besoin de réseau pour programmer les CV. Un bout de rail suffit. Par exemple à côté du bureau.

2°) Quand on n'a qu'une centrale, on ne peut plus s'en servir pendant qu'on programme des CV. Je sais bien qu'on évite de modifier les CV pendant l'exploitation.
Mais ça peut arriver. :(

3°) Dans le bus CAN, on a décidé (à juste titre) qu'on renvoyait toutes les infos du réseau périodiquement, disons toutes les 100 ms.
C'est une excellente idée, bien sûr.
Mais il ne faut pas le polluer avec des infos de mise à jour de CV.

Donc, il faudrait qu'une autre entrée/sortie soit dédiée à ça pour qu'un programme externe puisse gérer les 1024 CV possibles sur un  grand écran.

Note aussi que si les centrales du commerce permettent de lire/modifier les CV, c'est souvent assez laborieux. Et on peut peut-être éviter d'installer JMRI juste pour pouvoir profiter de Decoder Pro's.
Par ailleurs, j'aime bien l'idée du fichier Excel facile à transporter et toujours à jour.

Denis

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 02, 2020, 02:58:30 pm
C’est vrai que sur mon réseau j’ai réalisé une centrale de programmation spéciale pour cela : j’avoue  ;)

Mais je ne suis pas à une centrale près ! J’en ai même à revendre !
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 02, 2020, 05:09:52 pm
Je voudrais préciser un point TRÈS IMPORTANT :

JMRI (prononcer "j'aime rail") et son Decoder Pro's constitue LA référence des gestionnaires de CV et de décodeurs.

Je n'ai pas la prétention de faire un logiciel aussi complet, gérant plusieurs centaines de décodeurs, avec, pour ne citer que Zimo, des pages avec une quarantaine (!!) d'onglets contenant chacun au moins une dizaine de cases à remplir !
Non, loin de là, très loin de là.

Moi, ce qui m'intéresse, c'est de savoir ce que je fais, ce qui se passe si je modifie telle valeur et de comprendre ce que je fais.
Donc, je vais démarrer par des choses simples, sur des décodeurs simples, en augmentant la difficulté au fur et à mesure de la progression de mes compétences et de ce que je pourrais apprendre auprès de ceux qui voudront bien m'aider.

J'ai progressé ainsi pour mon gestionnaire, moi qui ne connaissait ni le C, ni Java, ni Processing en 2015. Et il a, maintenant, quelques caractéristiques sympas.
J'aime bien avoir un but ambitieux et progresser pas à pas.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Jeje_12_34 le juin 02, 2020, 09:34:08 pm
Bonjour

Ca m'interresserait aussi.
Ne serait ce que pour comprendre pourquoi je n'arrive pas a modifier les cvs  avec mes montages précédents.  :)

Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 02, 2020, 11:04:12 pm

JMRI (prononcer "j'aime rail") et son Decoder Pro's constitue LA référence des gestionnaires de CV et de décodeurs.


Bon, à partir de là, faut-il réinventer une nième BaseStation ou Sprog ?

Un simple shield moteur à L298 (5€) sur un UNO (3€) + alimentation 12V (3.80€) (aucun autre composant) avec DCCpp.ino original en connexion USB serial sur JMRI répond au cahier des charges sans se griller un seul neurone.
(voir le site éditorial)

Il faudra juste se retenir de ne pas utiliser la voie principale, mais il suffit de ne pas la câbler.

Ceux qui n'ont pas ça dans leur boite à outils devraient se dépêcher d'en monter un.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 03, 2020, 07:50:20 am
Bonjour Michel,

Tu as parfaitement raison : "L'électronique" est super simple (c'est du lego  :P), le logiciel existe déjà.

Mais, avec le même raisonnement, je n'aurais jamais développé mon gestionnaire
Et, comme je l'ai dit un peu après, j'aime bien comprendre comment ça marche. Or JMRI n'est pas un logiciel ouvert. Et ça, ça m'embête.
Et je ne peux pas le lier à mon gestionnaire.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 03, 2020, 09:57:22 am
Coup de chance Denis, la partie hardware est terminée, tu vas pouvoir passer au logiciel.

Comme tu es un pro de Processing tu vas pouvoir faire quelque chose de sophistiqué qui éclipsera la manette minimale de l'article 132 :

https://www.locoduino.org/spip.php?article182

On attend ta réalisation !
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 03, 2020, 11:01:51 am
Tu te doutais bien que ce n'est pas la partie hardware qui me posait problème  8)

Pour répondre à ta question (un peu hors sujet ici, mais, bon..), j'avais bien pensé à faire quelque chose pour cette manette à l'époque.
Mais j'ai laissé tomber pour la simple raison que c'est quand même luxueux de mobiliser un ordinateur pour une simple manette.
Moi, je la trouve bien, cette manette. C'est kitch, mais sympa.

Par contre, quitte à digresser, je voudrais revenir sur le logiciel DCC++ de Greg.
Tout le monde s'est précipité sur la partie C++, particulièrement géniale et innovante, c'est vrai.

Mais la partie Processing est tombée dans l'oubli, ce qui est regrettable, car elle est tout aussi géniale et beaucoup plus complète que beaucoup de solutions du commerce.

Le principal reproche qu'on pourrait lui faire, c'est que la description du réseau est "en dur", dans le logiciel, et que c'est assez difficile de comprendre comment faire pour dessiner le sien à la place.
De même, les itinéraires sont définis "en dur". Et ça devient gênant dans une grande gare (la mienne et ses 180 itinéraires)

En tous cas, ça m'a donné l'idée de développer mon gestionnaire, qui, s'il est encore loin de faire tout ce que fait celui de Greg, fait aussi des choses que le sien ne fait pas dont, justement, la description de son propre réseau et des itinéraires.

Quant à la manette, je ne vois pas à quoi elle servirait pour modifier les CV  ;D

Denis

PS : sur le fil de la vraie centrale DCC, dois-je comprendre que vous voulez une manette Processing ?  :o
Sinon, j'ai ça aussi :
https://www.youtube.com/watch?v=neMlNHVZWuY (https://www.youtube.com/watch?v=neMlNHVZWuY)
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 03, 2020, 03:00:57 pm
JMRI (prononcer "j'aime rail") et son Decoder Pro's constitue LA référence des gestionnaires de CV et de décodeurs.
Je n'ai pas la prétention de faire un logiciel aussi complet ...
J'avais néanmoins l'impression que tu voulais tenter de faire aussi bien que JMRI en Processing, ce dont je te sens tout à fait capable.
ll te reste juste à choisir sur quoi faire tourner Processing (smartphone, tablette, ordi, raspberry ...) et comment le faire communiquer avec une BaseStation :
bluetooth, wifi, serial (USB ou filaire), cette dernière option étant basique (sur ordi) donc simple à maitriser et parfaitement documentée pour la gestion des CV.
L'idée d'une manette dédiée à la gestion des CV me semble tout à fait réalisable puisque c'est ce que permet déjà la centrale intégrée de Thierry avec une interface homme machine certes austère.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 03, 2020, 05:54:44 pm
En gros, tu n'aimes pas les interfaces austères... ;)

Concernant Decoder Pro's, ce serait effectivement tentant d'en faire un "look like".
Mais si l'apparence est une chose (disons-le, c'est assez facile : dessiner un onglet, un rectangle, un curseur), c'est très fastidieux parce qu'il y en a plein.

Et surtout, il y a (à la louche) 500 décodeurs, dont certains ont des possibilités que je n'imagine même pas (Zimo...)
Et là, ça sort clairement de mes compétences :

Peux-tu me dire à quoi correspond la "function output 6 effect generated" si tu choisis "Rotary Beacon"  :o
Attention, c'est la fonction 6, ce qui suppose que ce n'est pas la même que la fonction 5   8)

Un indice : c'est dans "lumières", parmi 33  :o onglets.

Donc, je laisse les pros chez les pros. Et, de toutes façons, j'en connais qui me diraient "mais pourquoi réinventer la roue" (ils se reconnaitrons  :D)

Par contre, je verrai bien une interface du même genre, sur des décodeurs "normaux" ;) et, si tu y tiens, un joli curseur et quelques boutons de fonction.
On fera ainsi d'une pierre deux coups.

Je vais certainement te décevoir, mais, pour l'instant, je n'ai pas trouvé d'appli Processing dans le PlayStore qui gère le réseau et donc, sauf erreur de ma part, pas le WiFi.
Il y en a chez La Pomme (on a regardé avec Pierre59).
Donc, pas de smartphone, pas de tablette Processing sous Android. Comme j'aimerai avoir tort !

De toutes façons, je pense qu'il faut de la place pour que l'affichage soit clair (j'exclue le smartphone, trop petit)
Par exemple, pour le fameux CV29, j'aimerais bien qu'on puisse bien détailler chaque bit, ce qu'il fait, etc...
Pour les CV gérant la vitesse, je voudrais une belle courbe (CV67 à CV94) qu'on pourrait choisir et déformer à volonté. Et ça prend de la place.

Denis

PS : Je suis peut-être le seul à ne pas en avoir un, mais quelqu'un a-t-il un shield L298 pour UNO dont il pourrait se séparer en versant une larme ? Je n'ai pas envie d'attendre 1 mois...
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Pierre59 le juin 03, 2020, 06:54:19 pm
Je vais certainement te décevoir, mais, pour l'instant, je n'ai pas trouvé d'appli Processing dans le PlayStore qui gère le réseau et donc, sauf erreur de ma part, pas le WiFi.
Il y en a chez La Pomme (on a regardé avec Pierre59).
Donc, pas de smartphone, pas de tablette Processing sous Android. Comme j'aimerai avoir tort !
Bonjour

Je ne comprends pas bien ce que tu veux dire, il est facile de faire en Processing une application Android qui gère le WIFI.

Pierre
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 03, 2020, 07:18:57 pm
Bonjour Pierre,

On avait essayé et je n'avais pas réussi. Ou alors, je n'ai rien compris ?
Je préfèrerais franchement m'être trompé.
As-tu un exemple très basique (genre changer la couleur du fond d'écran à chaque pression) qui fonctionne ?

Denis
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 03, 2020, 07:46:12 pm
PS : Je suis peut-être le seul à ne pas en avoir un, mais quelqu'un a-t-il un shield L298 pour UNO dont il pourrait se séparer en versant une larme ? Je n'ai pas envie d'attendre 1 mois...

Bonjour Denis,

Oui j’ai de quoi te permettre d’éviter ce mois d’attente et t’en envoies un dès demain  ;D ;D


Mais en échange, permets moi de te chambrer un peu sur ces délires que tu te permets d’exprimer dans l’ignorance des développements concernés. Mais je n’ai pas épuisé mon droit de réponse donc attends toi à une marée de grande amplitude  ;D
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 03, 2020, 07:59:53 pm
... quelqu'un a-t-il un shield L298 pour UNO ...
Bon, c'est un peu cher, et à moins d'avoir envie d'un livre ou d'un CD, il faut en prendre deux à 13,90€, livrés pour le 12 juin :
https://www.amazon.fr/Shield-dextension-Conducteur-Arduino-Mega2560/dp/B01LVXM0JS/ref=sr_1_8?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=motor+shield+uno+r3+l298

Attention, ce modèle correspond au standard Arduino, les shields qui ont des extras (buzzer, etc.) ne vont pas.
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 03, 2020, 08:08:00 pm
En gros, tu n'aimes pas les interfaces austères... ;)

Certes, j'ai des gouts de luxe, mais je n'en ai pas toujours les moyens ... (de tous ordres)
Et d'ailleurs, je ne suis pas exclusif, le minimalisme peut être un art.

Mais c'est toi qui te fais ton cahier des charges, nous on n'est là que pour approuver tes efforts et profiter des résultats.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: laurentr le juin 03, 2020, 09:09:41 pm
Bonsoir


Une question me taraude... dans le cahier des charges j ai cru comprendre (mais je me trompe peut être) que  l'on veut un "truc" autonome.

Donc pour moi hormis avoir un écran tactile qui présentera les zones pour saisir des info,( ce qui  ne me semble pas être l option retenue?) pourquoi se priver d un simple clavier? (ex 16 touches en 4X4 ( on a alors un input sur l IHM on ne peut plus basique...) et on s’affranchit de tout le bazar PC JMRI n co!
On peut alors agir simplement et efficacement.

Qu'est ce qui m aurait alors sinon échappé?

Laurent

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 04, 2020, 08:51:04 am
Bonjour Laurent,

Oui, je cherche quelque chose de complètement autonome.

Concernant l'écran tactile, pourquoi pas, mais je n'y connais rien. Par contre, je connais Processing et c'est pour ça que je m'oriente vers ça.
Si on peut utiliser une tablette, ce serait super. Et ça a l'air mieux parti que je ne le pensais.

Quant au clavier, là, c'est non. C'est justement ça que je veux éviter.
Je te joins un exemple pour expliquer qu'on ne peut pas faire avec un clavier

Voilà...

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 04, 2020, 08:54:07 am
Bonjour Dominique,

D'avance, merci beaucoup pour le shield. C'est vraiment sympa.  ;D

Concernant la vague, j'attends de voir ce qui choque dans mes propos  ???

Denis
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 04, 2020, 09:41:16 am
Bonjour Pierre,

On avait essayé et je n'avais pas réussi. Ou alors, je n'ai rien compris ?
Je préfèrerais franchement m'être trompé.
As-tu un exemple très basique (genre changer la couleur du fond d'écran à chaque pression) qui fonctionne ?

Denis

Cherches dans ce forum ma petite manette en Processing : la couleur change en fonction de l’état.
Titre: Re : Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 04, 2020, 10:01:36 am
Oui j’ai de quoi te permettre d’éviter ce mois d’attente et t’en envoies un dès demain  ;D ;D

Lequel veux-tu ?

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 04, 2020, 10:06:45 am
Bonjour Dominique,

Le problème que j'ai avec le Wifi et Processing, c'est que je n'arrive pas à me connecter.
Ta manette, celle de Pierre, le programme d'essai de Serge pour son wagon mesure de vitesse : tout fonctionne sur mon mobile Android.
Mais si on ne se connecte pas au Wifi, heu, comment dire...

Mon mobile se connecte très bien en wifi à internet, évidemment.
Mais pas via l'application APDE (Android Processing IDE).
Comme j'aimerais trouver une solution !

Denis

Concernant tes propositions : le dernier, je l'ai déjà, alors le premier qui a l'air d'avoir les mêmes caractéristiques que le deuxième.
Je cherchais un shield qui s'enfiche directement.
Et encore merci  ;D ;D
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le juin 04, 2020, 10:23:06 am
alors le premier qui a l'air d'avoir les mêmes caractéristiques que le deuxième.
Je cherchais un shield qui s'enfiche directement.
Et encore merci  ;D ;D

je t'envoie le 2ème qui apparait dans l'article https://www.locoduino.org/spip.php?article187 (https://www.locoduino.org/spip.php?article187)
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 04, 2020, 10:32:25 am
Ouahhh !
Quel honneur !  ;D ;D

(ça doit être à force de regarder "Affaire Conclue"  ;))
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Pierre59 le juin 04, 2020, 11:34:35 am
Mon mobile se connecte très bien en wifi à internet, évidemment.
Mais pas via l'application APDE (Android Processing IDE).
Comme j'aimerais trouver une solution !

Bonjour

Je t'avais envoyé il y a quelques temps trois applications Processing pour tester le wifi. Un serveur a mettre sur PC, un client pour PC et un client Android. Je peux les renvoyer si nécessaire.

Dans le client Android il y un fichier AndroidManifest.xml il devrait y avoir des lignes pour donner des permissions d'accès au wifi  (à la fin) :

    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

Il faut aussi permettre à Android de faire de la mise au point par USB (si mes souvenirs sont bons il faut appuyer 7 fois sur le bouton M/A pour accéder aux paramétrages ! )

On peut refaire des essais si tu veux.

Amicalement

Pierre
Titre: Re : Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le juin 04, 2020, 11:39:23 am
... Je peux les renvoyer si nécessaire ...
Ou les mettre sur le forum, je suis un éternel curieux. (les mp sont également acceptés). Merci.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le juin 04, 2020, 11:59:41 am
Bonjour Pierre,

J'ai bien les fichiers que tu m'avais envoyé.
Ils ont bien les lignes que tu donnes.
Le débogage USB est bien présent depuis longtemps et activé.
Je reteste et je t'en reparles.

Pour Michel, on en reparle quand ça marchera. Il ne suffit pas d'avoir les 3 fichiers. C'est normalement simple, mais il y a un truc qui bloque.

Amicalement
Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 06, 2020, 06:25:36 pm
J'ai essayé de relever le défi que m'avait lancé msport le 03/06/20  8)

Je vais maintenant décrire un "premier jet", assez costaud quand même, d'une version Processing de ressemblant à Decoder Pro's. Ne rêvez pas, toutefois, ce n'est pas fini.
Et même, j'aurais besoin de votre aide (un pb simple et un plus compliqué).
Mais on est sur un site communautaire, n'est-ce pas ?  ;D

La norme DCC :

Avant ça, j'ai commencé par la base : le DCC
Je ne vais pas ici faire un historique complet, mais noter quelques points :
Inventé au départ par Lenz, mais le fait que Märklin l'ait pris pour ses modèles Trix n'est pas étranger à son succès.
Puis la NMRA (National Model Railroad Association), l'organisme de normalisation américain, l'a pris sous son aile et c'est maintenant LA norme numérique mondiale.
La dernière version de cette norme date du … 20/12/2012.

Et, plutôt que d'explorer internet qui regorge de détails de-ci, de-là, malheureusement parfois contradictoires, je me suis attelé d'abord à une traduction la plus proche possible de LA norme, sans y ajouter des élucubrations diverses, des interprétations et des raccourcis saisissants…

Comme ça, on n'oublie rien.

On a, en tout, 1024 CV (Configuration Variables = variables de configuration) et j'ai gardé le terme CV, même en français, car c'est maintenant entré dans le langage courant (des modélistes).
Je pense que c'est du genre féminin (ce serait logique), mais on voit aussi le masculin.
Et, contrairement au mot "COVID", l'Académie ne donnera pas son avis. On peut dire les deux.

Rassurez-vous, sur ces 1024 CV, 650 CV (!) sont "pour une utilisation future" dans la norme.
Puis 163 CV sont réservés aux fabricants de décodeurs et, donc, pas dans la norme non plus.
Il ne reste "que" 211 CV (!) définis.  ;)

Vous verrez en PJ ma traduction.

Comme tous ces CV n'ont pas un intérêt immédiat, j'ai commencé par les plus utiles, quitte à enrichir au fur et à mesure des besoins. C'est un choix de départ.

Qui dit DCC dit aussi décodeurs et, donc, fabricants de décodeurs qui s'en sont donné à cœur joie pour remplir les 163 CV qui leurs sont alloués.

Dans Decodeur Pro's, on recense 60 fabricants et près de 1 000 décodeurs.
Et,  pour chaque décodeur, la quasi totalité des spécificités sont prises en compte.
Franchement, chapeau !  :P ;D

Mon projet est beaucoup plus modeste  :), surtout à ce stade.
Mais il contient les bases pour aller plus loin.
La gestion d'un parc de véhicules :

Une autre fonctionnalité de ce programme, c'est qu'on peut gérer un parc de véhicules.
J'ai bien dit "véhicules" et pas "locos" d'une part à cause du fait qu'un wagon/une voiture peut aussi avoir un décodeur (allumage, …) et qu'on peut utiliser ces véhicules dans des compositions de trains qui sera gérée.

Un autre défi, plus vieux, celui-là, c'est celui de CATPLUS, le 29/11/19 et la gestion du réseau de son ami Gérard et ses … 600 wagons (!). Autant dire un club !  :o
J'ai démarré cet aspect, mais il me manque encore quelques jours pour le mener à bien.

Les bases de Decoduino :

Pour gérer tout ça, il faut des fichiers pour sauvegarder toutes ces infos.

La structure des répertoires est la suivante :

(https://www.locoduino.org/IMG/png/arborescence.png)

On a un répertoire Processing qui contient 3 sous-répertoires :
1°) Decoduino
   C'est un répertoire générique qui contient toutes les versions des programmes Decoduino.
   En ce moment, j'en suis à Decoduino_V_06.
        Chaque version contient les fichiers Processing (en *.pde) et un répertoire data qui contient les fichiers d'icones
2°) Trains_TCO
   C'est un répertoire générique qui contient toutes les versions des programmes Train_TCO
   En ce moment, j'en suis à la version Train_TCO_V1_9_1
        Chaque version contient les fichiers en Processing (en *.pde) et un répertoire data qui  contient les plans de réseau (par exemple Circuit d'essai.tsv) et deux   sous-répertoires contenant les fichiers d'icones et les fichiers d'aide.
3°) Communs
       Ces deux programmes utilisent des fichiers communs qui sont :
            -> Matériel.tsv (tous les véhicules et CV)
            -> Propriétaires.tsv (les identifiants des propriétaires)

Évidemment, Train_TCO n'est absolument pas nécessaire au fonctionnement de Decoduino.
J'en parle ici juste pour montrer qu'il y a des fichiers communs aux deux programmes.

D'autre part, les fichiers communs ne changement pas si on change de version Decoduino (ou de version Trains_TCO)

Fichiers communs :

Processing utilise des fichiers en ".tsv" (Tabulation Separated Variables = variables séparées par des tabulations).
Et c'est le format natif des fichiers ".txt" (texte) dans Excel.

Pour LIRE un fichier ".tsv" dans Excel, il suffit de l'ouvrir ! Qui dit mieux ?

Pour ECRIRE, il faut ruser un peu.
1°) Depuis Excel, on sauve en ".txt" ("Texte (séparateur : tabulation)   *.txt", pour être précis)
2°) On renomme le fichier en ".tsv".

Le premier fichier est le plus important : Materiel.tsv

Champs ("colonnes" dans Excel) :

(https://www.locoduino.org/IMG/png/tableau_materiel.png)

Les noms de champs ne doivent pas être modifiés, ni leur ordre. Ils n'ont pas d'accent.

Remarques :

1°) Dans Processing, les fichiers ".tsv" ne contiennent des données de seulement deux types :
"String" ou "Int". Pas de booléens, ni de virgule flottante.
D'où le fait que "moteur" est en "0" ou "1", par exemple.
D'où le fait que les dimensions sont en 1/10 de mm

2°) J'impose l'extension ".png" car c'est la plus courante acceptant des fonds invisibles, ce qui est indispensable. Exit ".jpg" !

3°) Ne pas croire que la marque du véhicule est la même que le nom du fabricant du décodeur.
J'ai une loco Fleischmann qui a, d'origine, un décodeur Zimo.

4°) fabricant, famille, modele : je garde les appellations de Decoder Pro's.
Notez qu'il y a un seul "/" entre fabricant et famille et deux "/" entre famille et modele.
C'est indispensable.

5°) On peut se demander pourquoi on note les dimensions des décodeurs (surtout avec une telle précision) :
Parce que l'une des questions principales est d'identifier avec exactitude quel modèle de décodeur est dans ma loco. J'y reviendrai.

Dernière remarque, la plus importante :


A tout moment, on doit avoir une bijection entre le contenu des CV du fichier Materiel.tsv et le contenu réel du décodeur.
C'est le principal intérêt de ce programme.


Deuxième fichier : Propriétaires.tsv

Champs ("colonnes" dans Excel)

(https://www.locoduino.org/IMG/png/tableau_proprietaires.png)

Les CV105 et CV106 sont réservés à l'usage de l'utilisateur
Dans un club, on peut très bien avoir 2 locos identiques qui peuvent avoir 2 propriétaires.
On mettra dans le CV105 les identifiants de chaque propriétaire.
Et comme un numéro, ça n'est pas très causant, il faut bien le nom en clair.
D'où ce fichier.
Je n'ai pas développé plus loin cette fonction pour l'instant. Mais ce serait assez facile.

Remarque :

N'utiliser que le CV105 "limite" le club à 255 adhérents.
En utilisant les deux CV, on pourrait avoir 65 536 adhérents (!!)

Développement prévu pour ces fichiers :

Actuellement, LE SEUL moyen d'ajouter un véhicule est de l'ajouter dans le fichier Materiel.tsv
De même pour supprimer un véhicule.
En fait, les 16 premières colonnes (tout sauf les CV et P0/P4) ne sont modifiables que directement via Materiel.tsv
C'est un peu gênant, mais je pense que développer le programme et ses fonctionnalités est plus urgent.

Le programme :

Puisque la gestion des répertoires est différente en Windows et Mac, elle n'est pas identique non plus dans Processing.
Ce qui fait que mon programme ne fonctionne pas avec Mac…

J'avais dit que j'avais besoin d'aide tout au début de ce post. C'est là que se situe le problème simple.
J'aurais donc besoin qu'un utilisateur Processing sur Mac me dise quoi faire.

Voilà le setup() :

(https://www.locoduino.org/IMG/png/setup.png)

Tout d'abord, on ouvre en size(1366, 768, P2D);
Cette taille permet l'affichage sur tous les ordinateurs.

La fonction sketchPath("") permet de remonter jusqu'à la racine de l'arborescence.

Sur mon ordi Windows, le   println(Repertoire_Decoduino);   donne :

R:\Documents publics\_Trains\Processing\Decoduino\Decoduino_V0_6\

 Vous noterez qu'on est bien avec des "\", le cas normal dans Windows.
Puis je crée toutes les polices nécessaires.
Cela pourrait paraître superflu et on pourrait n'en créer qu'une seule et l'adapter à chaque fois qu'on s'en sert.
L'expérience montre que si on fait comme ça, les textes sont flous…
D'où cette façon de procéder.

Mais, en y regardant de plus près, ce sont les "/" qu'il faut utiliser pour descendre dans l'arborescence !

Puis je retire les 25 derniers caractères pour les remplacer par Communs\\ , oui, avec deux "\" !!
Là, ça ne sera pas pareil pour Mac.

Sur mon ordi Windows, le   println(Repertoire_Communs);   donne :

R:\Documents publics\_Trains\Processing\Communs\

Plus loin, dans le programme, on va charger le fichier "Matériel.tsv"

La ligne correspondante est, dans Windows :

Materiel = loadTable(Repertoire_Communs+"Materiel/Materiel.tsv", "header, tsv");
Je pense que c'est compatible Mac.

Et, quand on sauve :

saveTable(Materiel, Repertoire_Communs+"Materiel/Materiel.tsv");
Là aussi, je pense que c'est compatible Mac.

J'arrête là pour aujourd'hui. Je continuerai quand le programme marchera dans les deux configurations Windows et Mac.

Et ça me laissera le temps de peaufiner.

Pour vous faire patienter, voici deux photos :

(https://www.locoduino.org/IMG/png/gestion_vehicule.png)

(https://www.locoduino.org/IMG/png/tableau_vitesse.png)
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: laurentr le septembre 06, 2020, 09:41:44 pm
Bonsoir Denis

Chapeau!
Superbe travail!!

J ai été surpris de ne pas voir dans tes données les valeur pour les fonctions F15à F28 des décodeurs...

Peut être une révision ultérieure au cœur de ta source?

Néanmoins une base solide sur la quelle nous appuyer pour différents projets. (décodeurs de fonctions ( loco et sortie accessoires), décodeurs d accessoires...etc)


Laurent
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 06, 2020, 10:22:54 pm
Merci Laurent,

Comme tu l'as remarqué, c'est le début d'un vaste projet.
Je le veux à la fois pédagogique (utilisable par un débutant, tu le verras quand tu auras le programme) et par les perfectionnistes (dont je suis  8).

Je vais commencer par satisfaire les débutants avec un programme d'usage simple et on verra par la suite.
Par exemple, la NMRA ne dit rien pour les fonctions au delà de F12.

Voilà ce que ça donne (après qu'on ait appuyé sur "valeurs par défaut")

(https://www.locoduino.org/IMG/png/carte_des_fonctions.png)

Dès qu'on aura réglé le pb (simple, à mon avis) avec les répertoires Mac, je donnerai le programme. On ne peut pas donner un programme qui ne marche qu'avec Windows.

A part ça, je ne prévois pas du tout d'utiliser des décodeurs de fonctions. Il y a le bus CAN pour ça.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: laurentr le septembre 07, 2020, 11:41:54 am
Hello Denis

Comprendre mon propos sur les CV et les décodeurs comme une bonne méthode de suivre les prescriptions NMRA dans le mapping (ex CV pour les adresses, la vitesse max, min, la CV29, etc

Pour ce qui est du décodeur de fonction bine comprendre qu on parle d un décodeur embarque ( comme un de ceux du commerce dans nos locomotive) et non d un decodeur d accessoire qui lui comme tu le dits utilise ici souvent le bus CAN comme dans les "satellites".

En tous les cas l interface ne manque pas d allure!
J aimerai bien en faire autant (une belle interface IHM) pour un projet que j ai dans mes cartons pour un mapping de sorties et des feux SNCF dans différentes combinaisons ( toutes avec ou sans oeilleton)
Aujourd hui je gère cela avec une grille Excel et une série de macro que j ai mis au point avec un collègue mais si le tout pouvait etre sous une IHM cela permetrait de generer le code final à injecter...

Il va donc falloir que je me plonge dans le Processing... après avoir fini mes en cours!

Laurent
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 07, 2020, 12:14:21 pm
Merci Laurent,

Pour faire suite à ton propos, j'ai agrandi le fichier "Proprietaires.tsv" (sans accent, d'ailleurs) avec les TITRES de fonctions 1 à 28.
(F0 est définitivement dédiée aux phares).

Dans l'image précédente, je n'avais pas mis de nom de fonction pour F1 - F12, parce que je ne savais pas quoi mettre...
Et je me suis dit que, POUR UN PROPRIÉTAIRE DONNE  les fonctions F1 - F12 ont la même attributions pour toute SES locos.
J'irai donc chercher ses attributions à afficher dans cet onglet dans le fichier "Proprietaires.tsv".

Par exemple : pour le propriétaire P1, F4 sera l'allumage de la cabine, alors que pour le propriétaire P2, F4 sera le son des freins.
Par contre, F4 sera l'allumage de la cabine pour TOUTES SES locos pour P1.
Et si des locos ne sont pas configurées comme ça, on pourra justement utiliser cet onglet pour mettre toutes les locos "d'équerre" !

Et il y a d'autres onglets sympas. Mais je ne peux pas diffuser un programme uniquement Windows... :(

Denis
Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le septembre 07, 2020, 12:58:29 pm

Et il y a d'autres onglets sympas. Mais je ne peux pas diffuser un programme uniquement Windows... :)

Mais achètes donc un Mac et cette obsession sur Windows cessera  ???
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le septembre 07, 2020, 03:32:43 pm
Nobody is perfect ...
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 08, 2020, 05:14:18 pm
Images des véhicules :

Pour moi, il est fondamental d'avoir une image de ses véhicules.
C'est un peu de travail, c'est vrai, mais c'est très agréable d'avoir pour chaque page l'image du véhicule sur lequel on agit. C'est beaucoup moins austère, comme interface !

Il s'agit donc de faire une photo de son véhicule posé de côté sur une feuille blanche et bien éclairée.

Puis, dans un logiciel gratuit comme Paint, on "détoure" le véhicule (on supprime tout le blanc qui entoure le modèle).

Cela rend le fond de la photo invisible.

En le sauvant au format ".png", on conserve cette invisibilité et on peut mettre ce modèle sur n'importe quel fond.

Comme il faut imposer une échelle, je propose de sauvegarder toutes les photos en 200 pixels de haut. C'est comme ça que le programme a été conçu.

Dans un premier temps, on rogne l'image dans un rectangle qui touche le véhicule en haut, en bas, à gauche et à droite. Puis on réduit l'image en utilisant "Image/Redimensionner" et en cochant "Conserver les proportions". Et on impose 200 pixels de haut, ce qui calcule la longueur de l'image.
Une image "pèse" ainsi environ 250 Ko.

Comme nous sommes sur un site communautaire, si quelqu'un a déjà l'image d'un véhicule, il peut en faire profiter les autres.
Ne vous gênez pas pour utiliser mes images si vous en avez besoin.

Page gestion :

(https://www.locoduino.org/IMG/png/gestion_vehicule.png)

C'est sur cette page qu'on arrive quand on lance le programme.
Là, l'image est prépondérante (elle sera plus petite dans les onglets du décodeur).

Le premier usage de cette image, c'est qu'on peut sélectionner le véhicule sur lequel on va agir.

Soit on avance de 1 en 1 avec les petits boutons bleus en dessous de l'image.
Mais avec 600 wagons, on ne peut pas agir ainsi…
C'est à ça que sert le curseur horizontal en dessous de l'image : on dégrossit la recherche, puis on affine avec les boutons.

Remarque :
Comme on est sur une voie isolée, on n'agit que sur un et un seul véhicule.
Et, dans ce véhicule, il ne peut y avoir qu'un décodeur, associé à ce véhicule.
C'est une limitation, c'est vrai, mais c'est un début.

Deux cases, en dessous de l'image :

Les infos issues de "Materiel.tsv" concernant le véhicule et celles concernant le décodeur éventuel associé.
ID(+1) vaut ici 1/21 (1er véhicule sur 21 dans la liste)

Les boutons :

On peut ajouter, mettre à jour ou retirer un décodeur dans le véhicule.

Pour ajouter un décodeur, il faut connaître son fabricant, sa famille et son modèle.
Et c'est là que les ennuis commencent : en général, on n'en sait vraiment rien…

J'ai donc crée un décodeur générique :
Fabricant = NMRA
Famille     = famille_ generique
Modele    = modele_generique

Cela permet de lire le CV8 (en lecture seule, voir la norme) qui donne le numéro du fabricant.
La dernière liste du NMRA date du 24/08/2020 et est en PJ.
Par exemple, Zimo a le numéro 145, qu'on retrouve donc dans le CV8.

C'est là que les dimensions exactes du décodeur vont servir, mais il faut aller sur internet.
On doit, au moins, trouver la famille.
J'avoue que c'est un défaut de mon programme : je ne sais pas aller plus loin.
Avez-vous une idée ?

Deuxième série de boutons : les copies.

On peut trouver intéressant de ne pas avoir à recopier un à un les CV d'un décodeur vers un autre décodeur.
Il existe à cet effet une fonction copier-coller de TOUS les CV d'un décodeur vers un autre.

(https://www.locoduino.org/IMG/png/copie.png)

On commence par aller sur le véhicule à copier.
On appuie sur "Copie". On peut encore changer de véhicule à ce stade.
Puis on appuie sur "Coller".
A ce moment, on a deux fois la même image en bas.
Mais si on bouge le curseur (ou on appuie sur les petites flèches de chaque côté), on change l'image du véhicule dans lequel les CV seront copiés.
Il suffit alors d'appuyer sur le bouton : "Réaliser la copie effective" ou "Sortir de la copie sans rien faire"

C'est dans cette fonction qu'on apprécie particulièrement d'avoir les images des véhicules !

Troisième série de boutons : les filtres.

Pour ne pas parcourir 600 wagons, on peut restreindre avec les filtres proposés :

Échelle, Moteur, DCC, Marque loco, propriétaire et, évidement, Effacer filtres.

Évidemment, plus on filtre, plus le compteur associé à ID(+1) diminue et, par voie de conséquence, l'écart, pour passer d'un véhicule à l'autre, augmente.
La ligne du curseur fait 1126 pixels (= 1366-240). On peut donc, théoriquement, gérer 1126 véhicules.
Dans l'exemple, comme il y a 21 véhicules, l'écart entre 2 véhicules est 1126/21 = 53 pixels.

Composition des trains :

Là, je n'ai pas encore développé jusqu'au bout.
L'idée est de sélectionner un véhicule en haut et d'appuyer sur "+" pour l'inclure dans un train et "-" pour retirer un véhicule dans le train, en bas.
Puis sauver ces compositions dans un fichier de plus dans "Communs".
A suivre. Je pense que c'est assez simple.

Les onglets :

En cliquant sur "Mise à jour" dans la version actuelle du programme, sur le véhicule "Loco0", on passe aux onglets, dans le même genre que Decoder Pro's.

Je n'ai, pour l'instant, développé que les 7 premiers onglets, parce que ce sont les plus utiles.
Je continuerai le développement des autres onglets quand j'aurai passé un cap fondamental : la lecture et l'écriture dans le décodeur.
Et là, comme demandé dans mon post du 06/09/20, je vais avoir besoin d'aide.
Par avance, merci.

Tout d'abord, lors d'échanges en juillet 2018, Pierre (Pierre59) m'avait proposé un programme capable de reconnaitre automatiquement sur quel port est branché l'Arduino depuis Processing.
C'est une pure merveille qui fonctionne sur Windows, Mac et Linux !
Si vous n'avez rien branché, il vous signale qu'il ne trouve pas l'Arduino, évidement.
Mais si vous avez branché l'Arduino, il vous donne dans une String le nom du port.
Par exemple : "Trouvé l'Arduino sur le port : COM4" pour Windows.

Fort de cette information, vous avez construit un port série entre l'Arduino (qui contient le programme de gestion DCC) et Processing.
On va pouvoir faire des échanges entre les deux programmes.

C'est à cette tâche que je vais m'atteler maintenant.
Dit autrement, mon programme actuel en Processing n'est qu'une IHM, avec un canal série, quand même.
Mais il fallait bien développer l'IHM pour savoir quelles informations échanger avec le gestionnaire DCC sur l'Arduino.

Interface Homme Machine :

Elle fait quand même plus de 5 000 lignes et mérite d'être décrite.
Dans un premier temps, je me suis attaché aux onglets du "Zimo/MX620//MX620 Version 9.12" car c'est l'un de ceux qui en a le plus dans Decoder Pro's.

Qu'on ajoute un décodeur ou qu'on le mette à jour, on tombe sur l'onglet "Fiche"

(https://www.locoduino.org/IMG/png/fiche.png)

En haut, en vert, 3 cases qui se dimensionnement en fonction de leur contenu correspondent :
-> Le fabricant du décodeur
-> La famille du décodeur
-> Le modèle du décodeur

Au dessus des onglets, deux boutons explicites :
-> Mettre à jour et sortir
-> Sortir sans mettre à jour

Puis les 23 onglets de CE décodeur.
Le nombre d'onglet dépend du décodeur et est entré "en dur" dans le programme.
Pour chaque décodeur décrit, on devra donner les onglets dont il est composé et, dans chaque onglet, définir les groupes de boutons, puis les boutons et leur fonction spécifique.

Fort heureusement, on retrouve certains onglets dans tous les décodeurs (comme "Fiche") et il n'est décrit qu'une fois. C'est quand même un minimum.
On retrouve aussi certains groupes de boutons, certains boutons, …

Il n'empêche que la liste va être longue, très longue…

On retrouve dans chaque onglet :
-> L'image du véhicule
-> Le groupe de boutons "Boutons_validation_onglet"
-> Les boutons correspondants :
-> "Valider les choix pour cet onglet"
-> "Ne rien changer pour cet onglet"

Onglet "Fiche" :

On a :
-> Le choix du numéro du propriétaire qui sera dans le CV105.
En construisant le fichier "Proprietaires.tsv", il faudra bien faire attention à l'adéquation du nom du propriétaire et de son numéro (CV105). Il n'y a pas de garde-fou (pour l'instant, c'est en cours)
-> Les dimensions du décodeur qui sont "en dur" dans le programme
-> Le numéro du fabricant qui est en lecture seule dans le CV8
-> Le numéro de la version du décodeur qui est en lecture seule dans le CV7

Pour changer le numéro du propriétaire, on le tape au clavier, on fait RETURN
Le fond du bouton devient vert, preuve qu'on a bien pris en compte l'information.
C'est une constante pour tous les boutons.
Puis on appuie sur le bouton "Valider les choix pour cet onglet".
Cela met à jour le fichier "Materiel.tsv" (c'est fait) et le CV105 dans le décodeur (pour l'instant : non)

Le bouton "Valeurs usine" remet TOUS LES CV du décodeur dans leur version d'usine.
Sauf le CV105 qui est conservé.
En général, quand on fait ça, c'est que plus rien ne marche…

Il reste de la place pour d'autres informations. C'est voulu.

Notez que, de façon pédagogique, on sait, à chaque fois, sur quel CV on intervient, d'où vient l'info, etc…
On sait ce qu'on fait, au fur et à mesure. Cela peut même servir d'aide mémoire.

C'est tout pour aujourd'hui.
A suivre.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: CATPLUS le septembre 09, 2020, 06:52:24 am
Bonjour Denis

Sacré boulot, félicitations

Marcel
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 09, 2020, 11:13:04 am
Je continue…

Onglet Configuration :

(https://www.locoduino.org/IMG/png/configuration.png)

Là, on s'occupe du CV29 qui a la particularité de gérer plusieurs fonctions, bit par bit.
On voit l'usage de chaque bit et la valeur du CV29 correspondant à tous les choix que vous avez fait.
Ici, on est en configuration usine, c'est-à-dire que tous les bits sont à 0, sauf :
->  Le bit 1 qui est à 1 (128 crans de vitesse), mais un pop-up précise aussi l'effet sur l'éclairage
->  Le bit 2 qui est à 1 (Autoriser le changement de source)

Si on clique sur l'un des boutons bleus, on a une fenêtre pop-up qui propose les choix :

(https://www.locoduino.org/IMG/png/configuration-changement_source.png)

Exemple après avoir cliqué sur "Autoriser le changement de source"
On a une question claire.

Une fois que les modifications ont été faites (et, pour chaque modification, le bouton devient vert), on valide par le bouton "Valider les choix pour cet onglet"

Onglet Adresse :

(https://www.locoduino.org/IMG/png/adresse-debut-court.png)

Voici comment se présente l'onglet quand on clique dessus si on est en adresse courte.

C'est la fameuse adresse 3.
On voit qu'elle est dans le CV1 et que le bit 5 du CV29 est à 0.

Supposons qu'on veuille mettre l'adresse 201. On la rentre simplement au clavier, puis RETURN.

(https://www.locoduino.org/IMG/png/adresse-fin-court-long.png)

Apparait alors la nouvelle adresse, qui sera dans les CV17 et CV18, en changeant le bit 5 du CV29 qui passe à 1.

En appuyant sur "Valider les choix de cet onglet", on change donc 3 CV, sans pouvoir se tromper.

Onglet moteur :

(https://www.locoduino.org/IMG/png/moteur.png)

Dans l'onglet moteur, vous pouvez agir sur les CV3 et CV4.
Ils servent, respectivement, à déterminer la durée d'un cran de vitesse pour l'accélération et la durée d'un cran de vitesse pour la décélération.
En bougeant les curseurs, on peut agir sur la valeur des CV.
Au lieu de donner la valeur du CV, ce qui n'est pas très parlant, j'y ai ajouté les temps que ça donnait pour aller du cran 0 au cran 128 (ou 28, suivant le bit 1 du CV29)

Par exemple, ici, en mettant "22" dans le CV3, la durée d'un cran de vitesse, en 128 crans de vitesse; est de 156 ms et le train va de 0 à 128 crans en 20 s.

Nota :
Comme un CV peut accepter la valeur maximale de 255, cela correspond à 288 s (4' 48"), ce qui est énorme !
J'ai donc limité les choix à 63 s, ce qui est déjà pas mal. Cela permet d'augmenter la précision pour les petites durées.

Onglet Contrôle basique des vitesses :

(https://www.locoduino.org/IMG/png/vitesse_basique.png)

Action sur les CV 2, CV6 et CV5 (je n'ai jamais compris pourquoi dans cet ordre)

Certains trains sont "longs à la détente" et leur faut une certaine tension pour démarrer.
Le CV2 permet que le train démarre dès le début du potar de vitesse.

Certains trains vont beaucoup trop vite quand le potar de vitesse est à fond.
Le CV5 permet de limiter la vitesse maxi quand le potar est à fond.
Ces deux CV permettent de profiter du maximum de précision pour la vitesse, la totalité de la course du potar étant utilisée.

Le CV6 permet de fixer la vitesse moyenne à mi-course du potar.
Pour être très précis : "au cran milieu", c'est-à-dire qu'on fixe ici la vitesse au cran 64 sur 128 ou au cran 14 sur 28.

Ici, J'ai choisi un réglage plutôt pour une vapeur qu'une électrique.
J'y reviendrai pour l'onglet suivant.
Nota :
Quand on valide cet onglet, on agit AUSSI sur le CV29, rappelé en bas de page.

Onglet Tableau des vitesses :

Là, j'avoue, je me suis lâché…
Depuis des années, j'ai envie de pouvoir affiner la courbe de vitesse d'une loco.

Il y a deux types de courbes :


1°) La courbe des moteurs thermiques, avec un couple faible au démarrage, couple qui augmente avec la vitesse, atteint un palier, puis décroit quand la vitesse continue à augmenter.
C'est donc le cas des locos vapeur.

(https://www.locoduino.org/IMG/png/tableau_vitesse.png)

2°) La courbe des moteurs électriques, avec un très fort couple au démarrage qui décroît progressivement.
C'est donc le cas des locos électriques, évidemment, mais aussi des diesels qui, finalement, ont bien un moteur électrique pour entraîner les roues.

(https://www.locoduino.org/IMG/png/tableau_vitesse_electrique.png)

Les formules des ces courbes étant très compliquées, j'ai choisi de pouvoir modifier les paramètres de ces courbes à l'inde de simples curseurs. Et on voit tout de suite l'impact sur le dessin de la courbe et, partant, sur la valeur des CV47 à CV94.

Le curseur P0 agit sur la vitesse mini, le curseur P4 agit sur la vitesse maxi, comme pour CV2 et CV5.
Le curseur P3 agit sur le point d'inflexion de la courbe, pour les vapeurs, et P1, P3 sur la convexité des deux ½ courbes.
Dit comme ça, c'est abscons, mais vous verrez en le faisant. C'est très visuel.
Pour les moteurs électriques, P2 agit sur l'aspect plus ou moins brutal de la croissance au départ.

Et si vous voulez personnaliser complètement votre courbe, il y a le bouton "Boutons libres" et, là, vous faites absolument ce que vous voulez.

Nota :
Quand on valide cet onglet, on agit AUSSI sur le CV29, rappelé en bas de page.

Onglet Carte des fonctions :

Voilà l'onglet tout au départ :

(https://www.locoduino.org/IMG/png/carte_des_fonctions_vierge.png)

Lenz et la NMRA ont prévu que chaque bouton de fonction puisse agir sur 8 (!!) sorties.
C'est absolument énorme.
D'où cette carte des fonctions que je trouve assez démentielle, surtout sur la plupart des décodeurs qui sont déjà bien contents d'afficher 4 fonctions.
Si on appuie sur "Valeurs par défaut", on a une belle diagonale :

(https://www.locoduino.org/IMG/png/carte_des_fonctions.png)

Une seule sortie par fonction. C'est déjà plus simple.

En cliquant sur une case, on a accès à une bascule : 0 = vide, V = 1.
On peut ainsi définir les CV 33 à CV46.
J'ai ajouté un code couleur des fils des sorties, très connu, mais qu'on retrouve là.
Comme ça on sait où le trouver si on a un doute.

Voilà.
J'arrête là pour le développement des onglets.
Il reste énormément de choses à faire, mais je vais me consacrer à ce qui se passe sur l'Arduino de la centrale DCC.
Quand ça marchera, je continuerai le développement du programme.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le septembre 09, 2020, 11:26:13 am
Citer
Il reste énormément de choses à faire, mais je vais me consacrer à ce qui se passe sur l'Arduino de la centrale DCC.

En effet, as-tu documenté les échanges entre Decoduino et la centrale (quelle qu'elle soit, de préférence compatible La Box et DCCpp) ?
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 09, 2020, 11:55:34 am
Depuis Processing, je peux envoyer/recevoir ce que je veux sur le port série. Je m'adapterai.
Si je suis compatible DCCpp, je serai compatible avec LaBox.

Si j'ai bien compris, on envoie un texte démarrant par un W pour écrire un CV dans la centrale, puis dans la loco ?

En fait, j'ai besoin de savoir ce que je dois envoyer à la centrale sur le port série pour lire un CV, écrire un CV. C'est tout.
Il n'y a que 2 messages.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le septembre 09, 2020, 03:30:12 pm
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation#engine-decoder-programming-commands


Engine Decoder Programming Commands
PROGRAMMING-MAIN TRACK
WRITE CV BYTE TO ENGINE DECODER ON MAIN TRACK

Writes, without any verification, a Configuration Variable BYTE to the decoder of an engine on the main operations track.

    Write CV BYTE Format is: < w CAB CV VALUE >
    CAB: The short (1-127) or long (128-10293) address of the engine decoder
    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)
    Returns: NONE

WRITE CV BIT TO ENGINE DECODER ON MAIN TRACK

Writes, without any verification, a single bit within a Configuration Variable BIT to the decoder of an engine on the main operations track.

    Write CV BIT Format is: < b CAB CV BIT VALUE >
    CAB: the short (1-127) or long (128-10293) address of the engine decoder
    CV: the number of the Configuration Variable memory location in the decoder to write to (1-1024)
    BIT: the bit number of the Configurarion Variable regsiter to write (0-7)
    VALUE: the value of the bit to be written (0-1)

    Returns: NONE

PROGRAMMING-PROGRAMMING TRACK
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.

WRITE CV BIT TO ENGINE DECODER ON PROGRAMMING TRACK

Writes, and then verifies, a Configuration Variable BIT to the decoder of an engine on the programming track

    Write CV BIT Format is: < B CV BIT VALUE CALLBACKNUM CALLBACKSUB >
    CV: The number of the Configuration Variable memory location in the decoder to write to (1-1024).
    BIT: The bit number of the Configuration Variable memory location to write (0-7).
    VALUE: The value of the bit to be written (0-1).
    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 BIT VALUE>
    CV VALUE is a number from 0-1 as read from the requested CV bit, or -1 if verification read fails.

READ CONFIGURATION VARIABLE BYTE FROM ENGINE DECODER ON PROGRAMMING TRACK

Reads a Configuration Variable from the decoder of an engine on the programming track.

    Read CV BYTE Format is:< R CV CALLBACKNUM CALLBACKSUB >
    CV: The number of the Configuration Variable memory location in the decoder to read from (1-1024).
    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 read could not be verified.

NOTES:

    Because of the way MarkDown language works I had to put a space between the < and the command letter otherwise the text is read as HTML code. A space after < , or before > in the command is ok but not mandatory. Spaces between Values in the command are required.
    All Commands and Formats were taken from the comments in the DCCpp_Uno.ino and Realted *.cpp files created by Gregg E. Berman and the files can be found Here DCC++ Base Station
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le septembre 09, 2020, 03:59:03 pm
Merci Michel,

Je connais donc maintenant quels ordres envoyer/recevoir.

Au début, je vais utiliser la centrale basique Arduino UNO+Shield L298 (et pas n'importe lequel, le vrai, celui de Dominique).
Comme le port USB n'est pas utilisé dans cette centrale, je vais pouvoir l'utiliser pour faire un port série et transmettre/recevoir les ordres.
La centrale sera dédiée voie de programmation.

Pour LaBox, ce sera plus dur : elle n'a pas de sortie Voie de Programmation et, si j'ai bien compris, pas de port série...

Je vais aussi me plonger dans le programme Processing de Greg. Il y a certainement des choses à glaner.
En particulier comprendre CALLBACKNUM et CALLBACKSUM  :o

Mais il faut déjà que je réalise mon réseau : un rond sur une planche de bois ! Tadaa !  :D ;D

Un peu de patience.

Denis

Commençons par voir avec une centrale dédiée
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le septembre 09, 2020, 04:23:43 pm
De rien,

LaBox donne accès au port USB de l'ESP32 donc au port serie du serial monitor (serial1 accessible par un header). Le serial2 est également accessible par un header mais sauf erreur, aucune fonction n'y est attachée.

Et effectivement pas de voie de programmation.

Mais pour une "centrale DCC" dédiée à la voie de programmation, il vaudrait mieux ne pas mélanger les genres surtout que pour moins de 10€ tu as parfaitement satisfait ton besoin avec une BaseStation dédiée sur Arduino UNO+Shield L298.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le septembre 09, 2020, 05:47:18 pm
Surtout que tu n’as pas vraiment besoin du wifi (encore que Processing sait faire) ni de la gestion des connexions de smartphones.

Néanmoins La Box peut être connectée à une voie de programmation moyennant les bons paramètres de configuration.
Ce qui serait intéressant serait d’embarquer quelques commandes de configuration de CVs utiles comme la recherche et programmation de l’adresse DCC.

Tu as du pain sur la planche et quelques kilomètres de contributions encore  ;D
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 15, 2020, 03:11:49 pm
Hallucinant !

Pour continuer mon programme, j'ai branché un Arduino UNO + Motorshield et ça a marché.  ;D

Puis j'ai planté mon (seul) décodeur en lui envoyant trop rapidement des demandes d'écriture… :-[

Mais je ne pensais pas que ce serait si dur de se sortir de cette situation !…

J'ai épluché internet, suivi les conseils d'amis, mais rien n'y faisait.
J'avais même réussi à modifier le CV8 (numéro du fabricant) qui est un CV auquel on ne peut accéder qu'en lecture !!

Au passage, DecoderPro est muet sur le sujet. C'est peut-être ailleurs dans JMRI ?

Ma loco est une 232 TC 415, en N, pré-équipée DCC, référencée 707483 chez Fleischmann.
Avant la panne, j'avais bien regardé le numéro du fabricant (CV8) et j'avais trouvé 145, qui correspond à Zimo.
On trouve cette info en .pdf, mise à jour régulièrement, sur le site du NMRA :
S-9.2.2, Appendix A, DCC Manufacturer ID codes - (revised 10 September 2020)

En pièces détachées Fleischmann, on voit que le décodeur, c'est le Zimo MX617, qui permet le Railcom. Et le prix : 195 € !!...

La documentation Fleischmann indique :

(https://www.locoduino.org/IMG/jpg/decodeur_fleischmann1328.jpg)

On indique, pour le CV8 qu'on peut restaurer les valeurs d'usine en mettant le CV8 à 8.
Mais ça ne marche pas.

La doc Zimo est beaucoup plus complète pour le MX617 :

(https://www.locoduino.org/IMG/jpg/decodeur_mx617.jpg)

Mais elle donne la même manip et, donc, ça ne fonctionne pas.

J'ai acheté alors une centrale Märklin MS2, parce que j'avais lu que certains décodeurs se plantent est quittent le DCC pour se configurer en mfx ! Il me fallait donc une centrale ayant la double compatibilité DCC et mfx.

Quand elle est arrivée, j'ai tout de suite testé, mais sans succès, à nouveau, toutes les CV d'internet.
Mais rien n'y faisait et je ne voyais pas comment m'en sortir.

Puis je suis tombé sur ce site, en allemand :
https://www.1001-digital.de/pages/programmierung/zimo-decoder/hard-reset.php (https://www.1001-digital.de/pages/programmierung/zimo-decoder/hard-reset.php)

On y trouvait une solution invraisemblable que je ne résiste pas à vous donner dans son intégralité (merci Google Traduction) :

"Parfois, des problèmes peuvent survenir dans lesquels les décodeurs Zimo ne réagissent plus, apparemment ne peuvent plus être programmés, mis à jour ou émis. Pour moi, c'était le cas de temps en temps lorsque je mettais à jour les décodeurs sonores avec un très ancien firmware, par exemple, avec MX648 du Fleischmann BR52 en N. Dans ce cas, vous pouvez essayer de relancer le décodeur via une séquence de CV à programmer.

Les CV doivent être programmés en mode service, c'est-à-dire sur la piste de programmation, exactement dans cet ordre avec exactement ces valeurs; aucune autre action (par exemple la lecture) ne peut être effectuée entre les deux. Par conséquent, le centre de contrôle doit régler les CV directement, les appareils tels que le MS2 ou la multi-souris, qui lisent toujours le CV avant la programmation, ne peuvent pas être utilisés.

CV 7 = 0
CV 31 = 0
CV 32 = 0
CV 8 = 8
CV 15 = 0
CV 16 = 0
CV 8 = 8
CV 144 = 0

L'action n'est bien sûr réussie que si seul le logiciel du décodeur s'est "avalé". En cas de défaut matériel, la seule chose qui aide est d'envoyer le décodeur à Zimo pour réparation."


Et ça a marché !!! C'est hallucinant ! :o :o

J'ai, depuis, replanté volontairement mon décodeur et, à chaque fois, je l'ai ressuscité avec cette manip', digne d'un "Easter Egg" de programme informatique !
Pour ceux qui ne connaitraient pas, allez sur le lien suivant :

https://fr.wikipedia.org/wiki/Easter_egg (https://fr.wikipedia.org/wiki/Easter_egg)

Si tous les "Master reset" sont de cet acabit, on n'a pas fini…

Je note au passage que cette solution ne fonctionne pas avec certaines centrales du commerce.
Et que, mieux, ça marche avec DCCpp ! C'est une excellente nouvelle.

Je vous rassure tout de suite :

J'ai, depuis, mis des tempos dans Decoduino pour que ça ne replante plus mon décodeur.
J'ai mis 2 secondes entre l'écriture et le retour d'information.
Et 1 seconde pour afficher le résultat.

Exemple :

Je veux mettre le CV29 à "6".

J'envoie l'instruction DCC++  <W 29 6 129 129>

Et j'attends 2 secondes avec delay(2000). Je suis ainsi sûr qu'il n'y a pas d'autres choses faites entretemps.

Puis je reçois <r129|129|29 6>

Je vérifie que "29" (du premier "129") est identique au "29" (du deuxième "129"), lui-même identique au "29" (du "29") et qu'on a bien reçu ce qu'on a demandé : "6"

Si ça n'est pas bon, je recommence l'envoi 2 fois (donc, 3 fois en tout) et je teste à chaque fois.
Dès que j'ai une correspondance, je sors.
En dessous de 1,5 secondes, ça marche, mais il y a quelques rares loupés.
Avec 2 secondes je n'ai plus aucun loupé. Et ça marche du premier coup.

D'autant que je prends, en plus 1 seconde pour afficher une fenêtre en pop-up :

(https://www.locoduino.org/IMG/png/pop-up.png)

Remarque :

A chaque fois qu'on modifie une valeur de CV, j'ai mis une fenêtre pop-up qui vient confirmer le résultat.
Donc, quand, par exemple, vous modifiez une courbe de vitesse, vous modifiez en fait 28+1 CV, soit 29 x 3 s = 87 s. Il faut être patient. Mais c'est ça ou vous plantez le décodeur…

Je n'utilise delay() qu'entre écriture et lecture des CV.
Le reste des tempos utilise le temps machine, ce qui est la méthode classique.

DCCpp :

Mes premiers essais ont été fait avec DCC++, avec sur l'Arduino, DCCpp_UNO.
Mais, au démarrage, l'EDI Arduino note quelques erreurs, en particulier sur les CV. C'était quand même dommage…
Depuis, j'utilise la fameuse bibliothèque DCCpp de Thierry, qui fonctionne parfaitement. Et qui est mise à jour régulièrement.

Détections :

Avant de lancer vraiment le programme, je fais quelques tests :

1°) Y a-t-il un Arduino branché et, dans le cas de plusieurs Arduinos, lequel contient DCCpp ?
J'utilise une routine de Pierre (Pierre59) que j'ai adaptée à ce cas particulier.
J'envoie : "power on <1>" et seul l'Arduino contenant DCCpp me répond : "<p1>".
Et ça sert en même temps à allumer le Motorshield. Pourquoi s'en priver ?

Il m'a aussi aidé à faire fonctionner le programme indifféremment sur Windows et sur Mac.
Je le remercie beaucoup pour ses conseils et explications qui m'ont bien aidé.

2°) Comme on est souvent dans le fichier "Materiel.tsv", via Excel, ce qui est le plus pratique, on laisse parfois, par inadvertance, le fichier ouvert, ce qui va, bien sûr, poser des problèmes de mise à jour …
Donc, je teste au démarrage si on peut écrire dans ce fichier.

Setup()

Concernant la programmation de cette partie, on pourrait trouver bizarre que ce soit fait dans le draw() alors que ça n'est exécuté qu'une seule fois, au démarrage.

Mais si je l'avait fait dans le setup(), je n'aurais pas pu y joindre des fenêtre pop-up permettant de suivre les processus. On y perd, certes, quelques booléens, mais c'est beaucoup plus "parlant" qu'un écran blanc.

Nouvel onglet :

Pour bien vérifier que tout se passe bien, c'est-à-dire que les infos dans le fichier "Materiel.tsv" sont bien constamment identiques à celles qu'il y a dans le décodeur, j'affiche les 120 premiers CV et je peux, d'un clic, vérifier ce qu'il y a dans le décodeur pour un CV donné.
Et si jamais il y avait un décalage, deux boutons, en bas, permettent de rétablir l'équilibre.

(https://www.locoduino.org/IMG/png/tableau_des_cv.png)

J'ai laissé la place, en bas pour un troisième bouton pour afficher les CV de 121 à 240.
On verra si ça sert…

On y va !

Pour utiliser ce programme, il faut :

Un Arduino UNO et un Motorshield qui s'enfiche simplement dessus. Rien à souder.

(https://www.locoduino.org/IMG/jpg/uno_motorshield.jpg)

Pour être sûrs de ne pas faire d'erreurs ou d'oubli, il faut lire l'article n°187 de Christophe (bobyAndCo)
Tout y est expliqué dans le détail, en particulier les coupures à faire sous le Motorshield et les deux straps 5-13 et 10-12

https://www.locoduino.org/spip.php?article187 (https://www.locoduino.org/spip.php?article187)

Remarque importante ici :
On se branche sur la sortie B (Voie de service) sinon DCCpp répondra systématiquement "-1" quand on interrogera le décodeur.

Remarque : Je n'ai testé qu'avec un Motorshield. Je ne vois aucune raison pour que ça ne fonctionne pas avec toutes les autres configurations proposées dans l'article de Christophe.
Vous me direz, si vous testez d'autres assemblages matériels.

Sur l'Arduino, il faut installer la bibliothèque DCCpp de Thierry.

Voir tous les détails dans l'article 228 :

https://www.locoduino.org/spip.php?article228 (https://www.locoduino.org/spip.php?article228)

Comme toute l'intelligence est dans la bibliothèque, on n'a plus besoin que d'un sketch très simple ici.
Je pense d'ailleurs que vous n'avez jamais utilisé un sketch aussi simple !

    /*************************************************************
    project: <Dc/Dcc Controller>
    author: <Thierry PARIS>
    description: <Dcc Serial Controller sample>
    *************************************************************/
     
    #include "DCCpp.h"
     
    #ifndef USE_TEXTCOMMAND
    #error To be able to compile this sample,the line #define USE_TEXTCOMMAND must be uncommented in DCCpp.h
    #endif
     
    void setup()
    {
      Serial.begin(115200);
     
      DCCpp::begin();
      DCCpp::beginMainMotorShield();
      DCCpp::beginProgMotorShield();

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

Et maintenant, il reste à sortir un ordi pour y installer le programme en Processing.
Si vous n'avez jamais utilisé Processing, j'avais fait l'article 219 pour y expliquer l'installation :

https://www.locoduino.org/spip.php?article219 (https://www.locoduino.org/spip.php?article219)

Dans cette phase 1 (principaux CV), je vous ai joint en plus dans le .zip l'arborescence nécessaire au fonctionnement (voir mon post du 06/09/20) avec les répertoires Processing, Decoduino et Communs.

Par la suite, je ne fournirais QUE le programme Decoduino pour ne pas écraser par mégarde les infos que vous aurez mises dans le répertoire Communs…

Étant donnés les déboires que j'ai eu pour le Master Reset de mon décodeur, cette fonction ne marche que si vous choisissez explicitement le MX617. Pour les autres décodeurs, elle est désactivée.
C'est plus prudent.

Maintenant, c'est à vous de jouer.

Comme nous sommes de nombreux Locoduineurs, je verrais bien la constitution d'une base de photos de faces latérales de véhicules, détourées, allant vers la gauche.
Ce serait en effet dommage que le même modèle de locomotive soit pris en photo plusieurs fois… 8)
Et, SURTOUT, nos photos seraient libres de droit, ce qui n'est pas le cas de ce qu'on trouve sur internet.
Sans compter que, sur internet, on n'a quasiment jamais de vue latérale.

De la même façon, il faut centraliser les infos sur les décodeurs qu'on possède.
Je pense ajouter un fichier Excel regroupant les infos des décodeurs qui sera dans le répertoire Communs.
Ce sera plus facile à mettre à jour. Actuellement, ces infos sont "en dur" dans le programme. Cela existe d'ailleurs déjà dans DecoderPros, au format .csv que je vais décortiquer.
Mais, par exemple, rien sur le MX617… ::)

Enfin, pour l'instant (phase 1), je n'ai utilisé que les 8 premiers onglets.
Rien sur les lumières et le son, en particulier. Il faut que je continue le développement. Mais mon seul décodeur n'a ni le son, ni la lumière…

https://www.locoduino.org/IMG/zip/processing_avec__repertoires.zip (https://www.locoduino.org/IMG/zip/processing_avec__repertoires.zip)

Et voilà  :P
Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Dominique le octobre 15, 2020, 07:16:08 pm
Bravo Denis,

Ça mériterait de sortir un article dans le site éditorial, dès que tu as une version de DECODUINO stable.

On en parle ensemble...

Amicalement
Dominique
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 22, 2020, 10:46:53 am
Plus de 1000 ?

Quand j'ai estimé le nombre de décodeurs listés dans DecoderPros, j'avais dit, au pif, "plus de 1000". 8)
J'étais loin du compte !
Les gens de JMRI (prononcez "J'aime rail") sont vraiment sympas et leurs fichiers sont vraiment open-source.
En effet, on retrouve les listes dans le lien suivant :
https://www.jmri.org/xml/XSLT/CSVindex.shtml
Liste les tailles des décodeurs, liste des courants maximaux.
Les deux autres ne sont pas lisibles (ou je n'y suis pas arrivé…) ???

Comme tout est au format .csv (Comma Separated Variables = variables séparées par des virgules), c'est aussi lisible dans Excel très simplement.
J'ai regroupé tout ça dans un seul fichier, corrigé quelques erreurs de typographies, et traduit les inches en 1/10 de mm, les mm en 1/10 mm (c'est très dur ;D) pour ne plus avoir de virgules.
Puis j'ai ajouté les numéros de constructeurs de la NMRA pour le CV8.

Tout cela est dans un fichier Base_JMRI.tsv.

Et ce fichier compte … 2895 lignes !!! :o :o

J'ai un peu bricolé mon programme pour que tout puisse être affiché correctement, particulièrement dans les choix de décodeur pour un véhicule donné et, maintenant, moi aussi, j'ai accès à 2895 décodeurs !
Cela change du seul petit MX617 que j'avais avant ! :P

Magique ?

Passée la joie de la découverte, on reprend pied et tout n'est pas aussi parfait que ça :

1°)  Tout d'abord, les pièges de la transformation d'un fichier .csv en fichier Excel .xlsx amène quelques surprises.
Par exemple "1 A" se traduit bien par "1 A", ce qui est normal pour 1 Ampère.
Mais "1A" se traduit par "01:00 AM" …
C'est facile à corriger.

2°) Certains champs contiennent 3 variables (!) comme "1A (peak 1.5 A) for 3s".
Il m'a fallu redistribuer les infos dans 3 champs.
Et, là, c'est un problème, car s'il faut faire ça à chaque fois qu'une modif sera faite dans la base JMRI, on n'a pas fini !! Et c'est, pour l'instant, un traitement manuel…

3°) Il reste aussi quelques erreur de frappes (JMRI est mis à jour manuellement).
Par exemple, Digirails/Locomotive lighting//DR80015 a un courant max de … 900 A !!
Je pense qu'il s'agit de 900 mA, bien sûr.

4°) Certaines données doivent être vérifiées.
Au hasard (!), prenons le MX617 de Zimo.
Dimensions dans la doc Fleischmann : 12,0 x 8,5 x 2,0 mm
Dimensions JMRI :                                13,0 x 9,0 x 2,5 mm
Dimensions chez Zimo :                       13,0 x 9,0 x 2,6 mm

A part Fleischmann, l'erreur est minuscule et JMRI est très proche de la bonne valeur.
C'est une très bonne nouvelle. ;D

A partir du moment où JMRI est utilisé dans le monde entier, par des milliers de personnes, je pense que les infos qui s'y trouvent sont vérifiées, corrigées régulièrement.
Qu'il puisse rester quelques erreurs est possible, mais c'est certainement la base la plus à jour actuellement. ;)

Décodeur inconnu :

Il faut répondre à la question : "quel décodeur ai-je dans ma loco ?"
En général, c'est dans la doc de la loco, mais c'est plus compliqué si on achète d'occasion.
La première piste, c'est déjà de lire le CV8 pour trouver le fabricant du décodeur.
Puis le CV7 donne le numéro de version. Ça aide, en particulier pour Zimo.
Puis, je comptais sur les dimensions, mais il va falloir faire attention aux "détails". ;)

Les répertoires :

Brièvement évoqué au début de ce fil, je précise les choses avec les nouveautés :
 
(https://www.locoduino.org/IMG/png/les_repertoires.png)

Le répertoire Processing peut être n'importe où.
Par contre, l'arborescence doit être respectée. C'est très important.
Attention à la typographie. Il n'y a pas d'accents.
Les cadres, à droite, contiennent les fichiers.

Donc, au départ, créez où vous voulez l'arborescence des 4 répertoires Processing, Communs, Decoduino et Trains_TCO.

Je vous fournirais des fichiers .zip contenant le répertoire et les fichiers correspondants.
Bases.zip, Materiel.zip, Proprietaires.zip et Decoduino_V0_13.zip

Les fichiers Materiel.xlsx, Materiel.tsv, Proprietaires.xlsx, Proprietaires.tsv sont à votre main et contiendrons VOS informations. C'est pour ça qu'ils sont en jaune.
Je vous fournis un premier jet, avec MES informations, pour que vous ayez la structure des fichiers, que vous puissiez faire des essais.
Mais après, ce sera à vous de rentrer les infos de VOS matériels, VOS photos, …

Ce qui est important, c'est de voir l'évolution de ces répertoires dans le temps :
Dans le répertoire "Communs" se trouvent les fichiers communs à deux programmes génériques (Decoduino et Trains_TCO). Par exemple, les images de véhicules servent aux deux programmes.

Le répertoire "Decoduino" contient les diverses versions du programme du même nom dont on ne garde que la dernière.
De la même façon, "Trains_TCO" contient les diverses versions de ce programme dont on ne garde que la dernière.

Voici les fichiers.zip
https://www.locoduino.org/IMG/zip/decoduino_v0_13.zip (https://www.locoduino.org/IMG/zip/decoduino_v0_13.zip)
https://www.locoduino.org/IMG/zip/bases.zip (https://www.locoduino.org/IMG/zip/bases.zip)
https://www.locoduino.org/IMG/zip/materiel.zip (https://www.locoduino.org/IMG/zip/materiel.zip)
https://www.locoduino.org/IMG/zip/proprietaires.zip (https://www.locoduino.org/IMG/zip/proprietaires.zip)

Futur :

Pour l'instant je n'ai traité que 8 onglets et sur une seule loco, avec un seul décodeur.
Ça marche, mais je serais intéressé par vos essais, sur d'autres décodeurs.
Il y a forcément des bugs que je n'ai pas encore vus.
Pour la suite, avez-vous une préférence pour les sons ou les allumages de feux ?

A suivre  :P
Denis

PS : Ah, oui, j'oubliais : je ne peux pas écrire dans le CV105.
Pas de pb dans le CV106, mais pas CV105. C'est bizarre. C'est pareil pour vous ?
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 22, 2020, 11:28:46 am
Je me suis trompé pour le programme Decoduino.
J'avais mis la version qui ne connectait pas l'Arduino !!
(elle me sert pour la mise en page)

Voilà le bon lien
https://www.locoduino.org/IMG/zip/decoduino_v0_13.zip (https://www.locoduino.org/IMG/zip/decoduino_v0_13.zip)
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 28, 2020, 03:49:51 pm
Bonjour

depuis quelques jours je suis avec intérêt ce thread.
j'ai donc décidé cet aprem d'installer le programme.

je précise de suite que si je programme en a peu prés tous les langages (html,jav,sql,ajax,c++,delphi,appinventor ... j'en passe comme le forth le fortran etc ...) je suis totalement novice en processing que je découvre avec ce post !

Donc je vais chercher processing et je l'installe (je passe sur la demande de don quand on clic ..) je crée les répertoires et je balance dedans les différents fichier a part tco puisque j'ai lu qq part que c’était pas utile.

je lance le programme et la évidement que du rouge ... bon je sais lire un message d'erreur et je finis par comprendre que certains fichiers ne sont pas lus car pas dans le bon dossier

il faut remonter decoduino_v0_13 au niveau de processing et pas dans le dossier Decoduino de l'arborescence ou alors changer dans le programme le chemin des fontes .ttf

je relance et patatras je tombe sur ca en rouge

C:\Users\J-F\Desktop\PROGRAMMES\processCommuns/
C:\Users\J-F\Desktop\PROGRAMMES\processCommuns/Bases/Base_JMRI.tsv does not exist or could not be read
NullPointerException

ca ne m’arrête pas je rebaptise Communs en processCommuns et le remonte d'un cran

j'arrive finalement a un panneau chargement de fichier
et ensuite a aucun arduino de branché ... bon la ok je savais que j'aurais été bloqué a un moment mais je m'attendais a avoir au moins l'affichage des pages et juste un contrôle au moment d'envoyer qq chose sur la sortie DCC.
De toute façon j'ai pas encore de loco DCC j'ai même pas de locos du tout ni même un bout de rail c'est juste un projet qui trotte dans ma tête.

Bon je ne suis pas entré dans le programme (et donc je ne sais pas si c'est facilement possible) mais je dois dire que pour un novice ça va pas être facile de trouver son chemin.

Ne trouvez aucune agressivité ou aucun reproche dans mes propos qui sont juste la constatation de mon expérience présente.

En tous cas déjà un gros remerciement pour le travail abattu.

Cordialement jfs59

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 28, 2020, 04:11:25 pm
Bon j'ai triché un peu

dans connexion j'ai commenté une partie et gardé ca a la fin

    trouve = true;
    choix_du_vehicule = true;
    debut_comptage = millis();
    if (trouve) {
        texte_ecrire = "Arduino trouve sur le port "+s;
        choix_du_vehicule = true;
    } else {
        texte_ecrire = "Aucun Arduino n'est branché à l'ordinateur"
           +char(10)+char(10)+"Branchez un Arduino avec son MotorShield"
                    +char(10)+"De plus, l'Arduino doit contenir"
                    +char(10)+"le sketch DCC_controller.ino"
           +char(10)+char(10)+"Puis relancez le programme Decoduino";
        choix_du_vehicule = true;       
    }   
 
j'arrive a l'affichage. youpi

voila j'arrive a naviguer dans certaines page d'autres sont bloquantes car j'imagine que clicquer sur un onglet active une com DCC avec un retour qui évidemment n'arrive pas chez moi

J'ai quand même réussi a aller chercher un décodeur esu nano (celui que je vais installer dans des loco ana si mon projet se concrétise ) et joué un peu avec même si je sais pas trop ce que je fais .

je vais en rester la pour l'instant de mes test faute de ne pouvoir aller plus loin. En tous cas un gros investissement et un énorme boulot ! chapeau !

cordialement jfs59
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 28, 2020, 06:44:08 pm
Merci jfs59 pour ces efforts. 8)

J'avoue ne pas comprendre le pourquoi tous ces changements de répertoires.
Il faut bien reporter l'arborescence. C'est celle que j'ai sur mon ordi et elle fonctionne parfaitement.

1°) D'abord, Decoduino remonte dans l'arborescence jusqu'à la racine.
J'ai donc, chez moi :
R:\Documents publics\_Trains\Processing\Decoduino\Decoduino_V0_13\
On appele ça le "Repertoire_decoduino" (ligne 11)

2°) Puis on "remonte" en effaçant 26 caractères
On est donc à R:\Documents publics\_Trains\Processing\

3°) On "redescend" en ajoutant "Communs/"
R:\Documents publics\_Trains\Processing\Communs/
On appelle ça le "Repertoire_Communs" (ligne 21)

Certains pourraient être surpris d'avoir des "/" en Windows, mais c'est pour que ce soit compatible Windows et Mac.

Je pense que tes problèmes viennent du fait que tu n'as pas pris le répertoire "Decoduino_V0_13" (en orange sur le schéma), mais seulement les fichiers qui étaient dedans. Le .zip contient les fichiers ET le répertoire.

Il faut que je réexplique mieux, ce n'était visiblement pas clair.
Bravo pour avoir trouvé une solution quand même  ;D

Pour ton autre problème, évidemment, si tu ne mets pas d'Arduino... ::)

Il y a une solution plus simple pour essayer le programme, même sans mettre d'Arduino :
Tu vas dans le premier onglet (Decoduino_V0_13)
Tu commentes les lignes 69 à 74 et la ligne 76.
On garde évidemment la ligne 75.
Cela évite de bricoler ailleurs dans le programme.

Ceci dit, bravo pour ta ténacité et encore merci.

Denis
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 28, 2020, 07:49:38 pm
Bonsoir vu les lignes de code en rouge j ai pensé que vous aviez gardé différentes configuration qui font que ça marche chez vous

J ai bien recopié exactement les dossiers du schéma bien mis tous les fichiers au bon endroit désolé

Quand je vois ca
processCommuns/Bases/Base_JMRI.tsv does not exist or could not be read

C est bien que le dossier a été déclaré processCommun et pas Commun dans le programme

Enfin j ai pas cherché plus loin mais il me semble nécessaire de vérifier ce point de même pour les fontes utilisées sauf à dire que le schéma de dossier donné est faux.

Cordialement jfs

Édit probable que le fait de remonter le premier dossier provoque effectivement ma deuxième erreur je vais tout affacer et recommencer
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 28, 2020, 08:34:05 pm
Bon j'ai tout réinstallé et effectivement ça marche

donc méaculpa j'ai du merder a la première j'avais pourtant tout vérifié deux fois (comme quoi ...)

désolé
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 28, 2020, 08:35:53 pm
Bonsoir,

Voilà ce que j'ai chez moi :

(https://www.locoduino.org/IMG/png/les_repertoires2.png)

Donc, il faut, dans un premier temps, récupérer les bonnes lignes de programme pour que le premier onglet soit identique à celui qui a été donné.

Puis créer 3 répertoires (par exemple sur le bureau) :
"Processing", "Communs", "Decoduino" avec l'arborescence ci dessus. On oublie pour l'instant "Trains_TCO".
Tous ces répertoires sont VIDES.

Puis il y a 4 fichiers .zip.
Le premier (Bases.zip, en bleu clair) contient, lui aussi, un répertoire "Bases" qui doit être mis en sous-répertoire de "Communs" qui n'est donc plus vide.
Le deuxième (Materiel.zip, en vert) contient un répertoire "Materiel" (sans accent), lui aussi sous-repertoire de "Communs"
Le troisième (Proprietaire.zip, en bleu foncé), contient un répertoire "Proprietaire" (sans accent), lui aussi sous-repertoire de "Communs"

Enfin, le programme Decoduino_V0_13, avec son répertoire de "Decoduino" vont comme sous-répertoire de Decoduino.

Il ne peut plus rester de "processCommuns". Le nom des répertoires est fixe.

Les fontes sont dans le répertoire "Data", fait partie de "Decoduino_V0_13" en tant que sous_répertoire.

    Repertoire_Decoduino = sketchPath("");
                                                                                                                              println(Repertoire_Decoduino);
    Courier12 = createFont(Repertoire_Decoduino+"data/SLC_.ttf", 12, true);
    Courier14 = createFont(Repertoire_Decoduino+"data/SLC_.ttf", 14, true);
    Courier17 = createFont(Repertoire_Decoduino+"data/SLC_.ttf", 17, true);
    fontUnits = createFont(Repertoire_Decoduino+"data/DSEG7Classic-BoldItalic.ttf", TAILLE_POLICE, true);
    textFont(Courier12);
    textFont(Courier14);
    textFont(Courier17);
    int Repertoire_Decoduino_length = Repertoire_Decoduino.length();
    Repertoire_Communs = Repertoire_Decoduino.substring(0, Repertoire_Decoduino_length-26)+"Communs/";
                                                                                                                              println(Repertoire_Communs);

Puis, dans l'onglet "Tables" :
//----------------------------- charge_table_Materiel() ------------------------------------
void charge_table_Materiel() {
    Materiel = loadTable(Repertoire_Communs+"Materiel/Materiel.tsv", "header, tsv");

//----------------------------- charge_table_Proprietaires() ------------------------------------
void charge_table_Proprietaires() { 
    Proprietaires = loadTable(Repertoire_Communs+"Proprietaires/Proprietaires.tsv", "header, tsv");

//----------------------------- charge_table_Base_decodeurs() ------------------------------------
void charge_table_Base_decodeurs() { 
    Base_decodeurs = loadTable(Repertoire_Communs+"Bases/Base_JMRI.tsv", "header, tsv");
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 28, 2020, 08:48:05 pm
Heureux que ça marche. J'étais sûr de moi.
De toutes façons, je ferai un article et ce sera utile de bien préciser. Ce n'est pas du temps perdu.

Je suis en train d'ajouter une mini commande de trains pour ceux qui ont, comme voie d'essai, un rond indépendant du réseau.
Un beau pupitre de commande "vintage" avec des vieux cadrans et de tubes nixies... ;D

Denis :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 28, 2020, 08:53:30 pm
j'ai pas réussi a me depatouiller avec les modifs de mise en commentaire

j'ai ajouté ca

static final private boolean DEBUG = true; // false
 
au début

et
                     if (DEBUG)
      {trouve = true; } else {connexion();  }

 a la place de connexion();

plus rapide et plus concis pour moi

EDIT j'ai cherché désespéramment le TCO ... et j'ai abandonné il est ou ce truc même google connait pas ou alors j'ai pas tapé ce qu 'il faut ....
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 28, 2020, 10:40:05 pm
Ta solution est assez simple aussi.

Le programme Trains_TCO fonctionne, pas assez bien à mon goût et je dois le revoir, surtout en lien avec Communs qui n'est pas fait.
En particulier pourquoi il y a aussi des véhicules.

Tu auras une idée là :
http://forum.locoduino.org/index.php?topic=211.0 (http://forum.locoduino.org/index.php?topic=211.0)
Une idée seulement : ça n'est pas branché à un réseau.
Il n'y a pour l'instant que des trains virtuels.

Mais l'expérience que j'ai eu depuis avec Decoduino devrait m'aider à faire cette connexion (mais c'est une autre paire de manches)

Denis :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 29, 2020, 10:58:37 am
Re bonjour

J'ai essayé (et réussi ) de créer un exécutable. Évidemment la hiérarchie des dossiers est plus la bonne et il faut tout remettre a plat.

je connais pas processing plus que ca mais il semblerait qu'il faille au minimum

Decoduino_V0_13.exe plus des dossiers data , java , lib  et évidemment remettre dans l'arborescence le commun a sa bonne place.

le dossier source est lui inutile.

le concept Decoduino puis decoduino_version s'il peut être utile en dev (et encore) me semble compliqué et redondant en exploitation.



Donc pour en venir a mes essais si je comprends bien (et vous me pardonnerez si c'est pas le cas vu mon noviciat) pour ajouter une loco je dois le faire a la main dans le fichier matériel ??

si c'est le cas n'est il pas plus simple d'avoir une page ajout de matériel qui s'auto remplie avec un profil standard resterait a choisir une photo un décodeur un propriétaire un nom etc ....
enfin je dis ca mais comme je ne vois pas trop l'utilisation globale je pars d'une réflexion telle que :

j’achète une loco (ou je fabrique) analogique  que je digitalise en choisissant un décodeur ... il y a fort peu de chance que je retrouve ce matériel en existant .... je dois donc créer le profil de toute pièce.

Mais je n'ai pas forcément compris la philosophie de ce programme.

cordialement jfs
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 29, 2020, 11:22:35 am
Bonjour,

Je note qu'on peut facilement faire un .exe avec un programme Processing.
Quelle est sa taille, comparée à la taille des zip ?

Ceci étant, ce serait utile en commercialisation, pour qu'on n'aille pas voir comment ça marche.
Mais sur Locoduino, c'est justement le contraire : on veut que les gens aillent voir comment c'est fait, y piocher des idées, ...

On ne garde que la dernière version, évidemment. Et le fichier zip s'intègre facilement dans une arborescence existante.

Pour ajouter une loco, on le fait à la main, dans le fichier Materiel.xlsx (qu'on transforme ensuite en Materiel.tsv).
On met tous les CV à "-1" et via une copie (page véhicule), on recopie les CV d'une loco qu'on connait.
Puis on bricole les quelques CV spécifiques à cette nouvelle loco.

Il n'y a que des infos spécifiques à rentrer : la photo, le nom du fichier .png,

(https://www.locoduino.org/IMG/png/extrait_excel.png)

Explique-moi ce qui, dans ces infos, correspondrait à une loco standard ?

Cordialement
Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 29, 2020, 11:50:27 am
Citer
Pour ajouter une loco, on le fait à la main, dans le fichier Materiel.xlsx (qu'on transforme ensuite en Materiel.tsv)
.

j'ai essayé (nouvelle image + ajout d'une ligne en copié collé puis changement nom et image) et pas réussi car pas réussi a trouver l'option tsv dans mon excel .... :-[

Citer
Explique-moi ce qui, dans ces infos, correspondrait à une loco standard ?
aucune idée j'ai une loco (sans rail) que j'ai retrouvée dans le grenier et elle a 40 ans .... si y a pas de loco standard un profil vide remplissable en changeant un choisissant un décodeur une image et un nom .... ::)

Citer
Ceci étant, ce serait utile en commercialisation, pour qu'on n'aille pas voir comment ça marche.
Mais sur Locoduino, c'est justement le contraire : on veut que les gens aillent voir comment c'est fait, y piocher des idées, ...

C'est aussi utile pour ceux qui veulent pas forcément s'embarquer dans l'install de plein de truc et ne voulant pas forcément mettre les mains dedans .. utilisateur lambda  :)

et puis l'un ne va pas forcément sans l'autre j'imagine un github ou autre avec la version source et la versions d'exploitation.

Citer
Je note qu'on peut facilement faire un .exe avec un programme Processing.
Quelle est sa taille, comparée à la taille des zip ?

ca prend 2 mn le plus long a été de rechercher l'option et de vérifier ce quelle faisait et l'utilité des fichiers.

l’exécutable fait 90 k  mais évidemment le java et le lib ça pèse 190 Mo

je vais zipper pour voir

edit en zippant locoduino uniquement ca fais 55 Mo je doute que ca grossisse plus vu que quand on a passé le minimum requis la complexité du programme influe plus énormément je supose que c'est comme les autres langages
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 29, 2020, 12:11:32 pm
On est dans Excel , fichier "Materiel.xlsx"
Il faut sauver dans enregistrer sous :

(https://www.locoduino.org/IMG/png/enregistrer_sous.png)

Puis bouton "Enregistrer".
Là, Excel met une information :

(https://www.locoduino.org/IMG/png/enregistrer_sous2.png)

On clique sur "Oui".
On peut sortir d'Excel. Là, il redemande si on veut sauver et on dit "Non".

On a alors un fichier "Materiel.txt", en plus des deux fichiers existants "Materiel.xslx" et "Materiel.tsv" (l'ancien)
On peut effacer l'ancien .tsv et renommer le .txt en .tsv.

Dit comme ça, on dirait une usine à gaz.
Mais c'est seulement à chaque fois qu'on ajoute une (ou plusieurs) loco(s).
Après, on n'a plus besoin d'aller dans ce fichier.

Denis :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 29, 2020, 12:21:52 pm
Ah oui évidemment ! pourquoi j'y ai pas pensé ....  ;D
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 29, 2020, 04:58:08 pm
comme cela me gavait un peu

Option Explicit
Dim sauvegarde As Boolean 'variable sauvegarde fichier

Private Sub CommandButton1_Click()
Dim Feuille As Worksheet

sauvegarde = False
If MsgBox("Voulez vous sauvegarder le fichier tsv ?", vbYesNo, "Demande de confirmation") = vbYes Then
       
        'sauvegarde demandée
        sauvegarde = True
        End If
 If sauvegarde = True Then
Application.DisplayAlerts = False
For Each Feuille In ActiveWorkbook.Sheets

If Feuille.Name = "Materiel" Then

Feuille.Copy

With ActiveWorkbook
.Title = Feuille.Name
.Subject = Feuille.Name
 .SaveAs Filename:=ThisWorkbook.Path & "\" & Feuille.Name & ".tsv", _
        FileFormat:=xlText, CreateBackup:=False
 .SaveAs Filename:=ThisWorkbook.Path & "\" & Feuille.Name & ".xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
         .Close
End With
End If
Next
MsgBox "Nouveau fichier créé et sauvegardé !"
Application.DisplayAlerts = True
End If
End Sub

une tite macro excel qui fait le taf enregistre une copie tsv et une en xls (donc sans la macro)

pour ma part j'ai rajouté au fichier excel un onglet gestion avec un gros bouton enregistrer qui appelle la macro
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 29, 2020, 07:15:38 pm
C'est une excellente idée, mais il faut que je teste.
On ne crée pas seulement un fichier .txt, mais un fichier .txt avec séparateur tabulation (c'est l'essence même du format .tsv)
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 30, 2020, 01:15:38 pm
J'avoue je me suis défoulé  ;)

copie la dernière ligne du fichier demande un nom unique et une image (format png oblige) puis insère la ligne a la fin sans risque de merdouille  ;D


Option Explicit
Dim Ajout As Boolean
Function ValExiste(Wks As String, sCol As String, vSearch As String) As Boolean
  ValExiste = False
  ValExiste = Not IsError(Application.Match(vSearch, Sheets(Wks).Range(sCol & ":" & sCol), 0))
End Function
Sub ajouterligne()
Dim Feuille As Worksheet
Dim derLig As Long
Dim NouveauNom As String
Dim NomImage As String
Dim NRange As String
Dim NomUnique As Boolean
Ajout = False
NomUnique = False

If MsgBox("Voulez vous ajouter une machine ?", vbYesNo, "Demande de confirmation") = vbYes Then
       
        'ajout demandé
       
        Ajout = True
        End If
 If Ajout = True Then
Application.DisplayAlerts = False
   'derniere ligne
    derLig = Sheets("Materiel").Cells(Rows.Count, 1).End(xlUp).Row
    While NomUnique = False
    NomUnique = True
NouveauNom = InputBox("Entrez le nom de la machine !", "Nouvelle machine", "Le nom doit etre unique")
If ValExiste("Materiel", "A", NouveauNom) Then
MsgBox "Le nom existe déja !", vbExclamation
NomUnique = False
End If
 Wend
 'Affiche la boîte de dialogue "Ouvrir"
 ChDir ThisWorkbook.Path & "\"
  Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
    NomImage = Application.GetOpenFilename("Images (*.png),*.png")
     NomImage = Split(NomImage, "\")(UBound(Split(NomImage, "\")))
NRange = derLig & ":" & derLig
Sheets("Materiel").Rows(NRange).Copy
Sheets("Materiel").Range(NRange).Insert Shift:=xlDown
Sheets("Materiel").Range("A" & derLig + 1) = NouveauNom
Sheets("Materiel").Range("B" & derLig + 1) = NomImage
MsgBox "Nouvelle machine ajoutée !"
Application.DisplayAlerts = True
End If
End Sub

Oui je sais mais bon ca fait travailler mon cerveau ...  ::)

évidemment les deux macros ne sauvent pas par défaut le fichier original (dés fois que) mais ça a été testé ... j'ai essayé de choisir un décodeur mais j'ai pas trop compris comment marche la base jmri

EDIT si on choisi pas d'image ca plante le programme processing (il aime pas l'absence ou la non existence d'une image) peut être du a un manque au niveau de la protection de ce cas dans le code
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 30, 2020, 02:20:03 pm
Cela me parait sympa.
On ne sait toujours pas si le .tsv généré est bien utilisable ?
Tu peux m'envoyer le fichier Excel avec la macro ? (J'ai la flemme... et du boulot)

OK, il manque des tests sur les images.
C'est anormal que ça plante. Je vais ajouter ces test pour que ça ne plante plus.

Mais je tiens à ce que ça ne marche pas si on n'a pas mis de photo.
La photo est un élément indispensable à l'esthétique de l'appli.

Denis  :P



Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 30, 2020, 02:37:58 pm
Citer
On ne sait toujours pas si le .tsv généré est bien utilisable ?
Tu peux m'envoyer le fichier Excel avec la macro ? (J'ai la flemme... et du boulot)

AH ben si le tsv je l'utilise enfin autant que je puisse y comprendre qq chose (les lignes ajoutées apparaissent bien dans le programme)


Je vous envoies ça dès que je repasse sur pc

Citer
Mais je tiens à ce que ça ne marche pas si on n'a pas mis de photo.
La photo est un élément indispensable à l'esthétique de l'appli.

Suffit de mettre par défaut une photo avec un gros point d exclamation...

apres je peux facilement obliger de choisir dans l'ajout de ligne ...
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 30, 2020, 04:22:52 pm
lien supprimé
nécessité d'activer les macros évidemment pour que ca fonctionne.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 30, 2020, 05:35:01 pm
Moi ancien Excel. Moi Excel 2007.

Et on ne peut pas ajouter de bouton dans le ruban dans 2007. Il faut attendre 2010 (celui que j'avais au bureau)
Donc, malheureusement pas de bouton.
Bon.
J'avais fait appel à mes souvenirs et j'ai ajouté l'onglet développeurs.
Ta première macro (lancée à la main) ne semblait pas fonctionner.

Par contre, ta nouvelle, à 2 boutons, fonctionne et, mieux, le fichier .tsv ajouté est parfaitement fonctionnel ;D ;D

Il me reste à trouver quelque chose de simple pour la lancer. On ne peut pas demander à n'importe qui de faire ce que j'ai fait.
Par ailleurs, il faudra chaîner les deux macros, sinon, certains vont croire avoir fait la modif (puisqu'elle apparaît à l'écran) et pas la sauvegarde.
Un seul bouton.

Bravo, on est sur une bonne piste

Denis :P

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 30, 2020, 05:42:05 pm
Citer
Par contre, ta nouvelle, à 2 boutons, fonctionne et, mieux, le fichier .tsv ajouté est parfaitement fonctionnel

Bah la nouvelle est la même que l'ancienne sauf que j'ai changé le bouton de lancement pour faire "beau" (ça a toujours fonctionné chez moi)

on peut évidemment chainer les deux et faire la sauvegarde en fait il suffit de coller le code ou de lancer la sauvegarde après insertion mais bon celui qui s'amuse a ajouter des trucs sait a priori ce qu'il fait.

les actions sont bien différentes on peut vouloir l'un et pas l'autre ... enfin je sais pas on peut vouloir insérer plusieurs machine et a la fin seulement sauvegarder

On peut aussi mettre un mode d'emploi sur le panneau !
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 31, 2020, 08:59:21 am
Bonjour jfs59,

La nuit porte conseil  ;)

Tu as parfaitement raison, il faut 2 boutons.
Pour la raison que tu donnais (ajouter plusieurs lignes puis enregistrer le tout), mais aussi pour une autre raison : pour pouvoir supprimer des lignes. :)

Mais il reste un problème : Excel est un logiciel payant ! Et, j'ajouterai, cher.
En plus, il faut avoir au moins la version 2010 pour avoir des boutons qui lancent des macros (en 2007, je ne retrouve pas ces boutons)
Et, sur Locoduino, on n'utilise que des logiciels gratuits.

J'ai essayé LibreOffice, qui accepte les fichiers .xlsm, mais, malheureusement, ça bugue...
Je pense pourtant qu'on est à deux doigts du but.
Peux-tu regarder STP ?

Denis  :P

Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 31, 2020, 09:48:34 am
Bonjour

j'ai chargé libre office
j'ai chargé le jre java
j'ai réussi a démarrer les macros

évidemment ca marche pas il y a des erreurs d’exécution pratiquement partout
indépendamment des erreurs (qui pourraient peut être se régler ) le fichier tsv n'a rien a voir avec ce qu il devrait être ! incompatibilité totale.

je vais regarder plus loin mais ca me semble irréalisable sauf a trouver un expert du tableur libre office .

désolé

cordialement jfs

Edit en plus quand je sauve le fichier original sous libre office il bousille tout ! :o

Utiliser ajouter une machine bloque complétement le programme qu'il faut ensuite tuer dans le gestionnaire de tache .... :-X

je sais maintenant pourquoi j'ai plus installé libre office sur mon nouveau pc.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 31, 2020, 10:28:08 am
Je viens de voir que dans le programme processing il y avait déjà de quoi lire et écrire le fichier matériel

pourquoi ne pas avoir tout centralisé ?


void sauve_table_Materiel() {
    Materiel.clearRows();   
    TableRow newRow;   
    int compte_vehicules = -1;
    for (Vehicule veh0 : tous_vehicules_complet) {
        newRow = Materiel.addRow();
        compte_vehicules++;
        Materiel.setString(compte_vehicules, "nom",        veh0.nom);
        Materiel.setString(compte_vehicules, "image",      veh0.image_t);
        Materiel.setString(compte_vehicules, "marque",     veh0.marque);
        Materiel.setString(compte_vehicules, "ref",        veh0.ref);
        Materiel.setInt(   compte_vehicules, "htamp",      veh0.htamp);
        Materiel.setString(compte_vehicules, "couleur",    "#"+hex(color(veh0.couleur)).substring(2));                              //  hex(color) -> String. String doit démarrer par #. Il faut donc remplacer les deux 1er caractères (FF)
        Materiel.setString(compte_vehicules, "echelle",    veh0.echelle);
        Materiel.setInt(   compte_vehicules, "moteur",     int(veh0.moteur));
        Materiel.setInt(   compte_vehicules, "dcc",        int(veh0.dcc));
        Materiel.setString(compte_vehicules, "date",       veh0.date);
        Materiel.setString(compte_vehicules, "fabricant",  veh0.fabricant);
        Materiel.setString(compte_vehicules, "famille",    veh0.famille);
        Materiel.setString(compte_vehicules, "modele",     veh0.modele);
        for (int i = 1; i < 201; i++) {
            Materiel.setInt(compte_vehicules, "CV"+str(i), veh0.CV[i]);
        }
        for (int i = 0; i < 5; i++) {
            Materiel.setInt(compte_vehicules, "P"+str(i), veh0.p[i]);
        }
        Materiel.setInt(   compte_vehicules, "ident",      veh0.ID);
    }       
    saveTable(Materiel, Repertoire_Communs+"Materiel/Materiel.tsv");
}
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 31, 2020, 11:03:10 am
Effectivement, LibreOffice marche quand on se limite à des choses simples.
Mais quand on commence à toucher aux macros...
Pour info, j'avais essayé de faire marcher un programme Access et je n'y suis jamais arrivé.

On oublie.

Effectivement, Processing sait lire et écrire les fichiers .tsv (heureusement)

Je pensais que c'était plus simple avec Excel en manuel :
On remplit quelques cases à la main dans le .xlsx (et là, je pensais pouvoir utiliser LibreOffice), on transforme en fichier .tsv et c'est fini.
On a un fichier dans un format que tout le monde connait.

Donc, je vais ajouter un bouton "ajouter un véhicule" dans Processing. C'est tout à fait possible. Tu as raison.
Et comme on travaille directement avec .tsv, il n'y a pas de problème.
Après, comme un fichier texte est immangeable (essaie d'ouvrir Materiel.tsv avec le BlocNote ou, pire, avec Word), on ouvre le fichier avec LibreOffice via Classeur_Calc pour regarder ce qui est dedans.

Mais voilà : on ne peut pas sauver depuis LibreOffice dans un format qui pourrait devenir un .tsv (il ne connait que le .csv, ce qui ne nous sert pas).

Donc, on garderait LibreOffice juste pour la consultation gratuite.

Après, et c'est ça qui me freinait vraiment, c'est qu'il faut définir dans Processing une fenêtre pour pouvoir modifier les champs du début, etc...
En fait : refaire un éditeur alors qu'on en a déjà un avec Excel.

Par contre, ce à quoi je n'avais pas pensé, c'est que LibreOffice ne savait pas sortir un format avec la tabulation comme séparateur.
Il faut un vrai Excel payant.

Donc, je n'ai plus le choix.
Soit on a un Excel > 2010 et tes macros fonctionnent, soit je suis obligé de tout faire dans Processing...

On aura au moins appris ça  8)

Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 31, 2020, 12:41:04 pm
sinon j'ai ca
lien supprimé

écris en lazarus ce matin il permet de charger le tsv d'ajouter une ligne de supprimer et de sauver

et bien d'autre chose si je m'amuse encore un peu

comme ouvrir une fenetre en cas d'ajout choisir l'image etc ...
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 31, 2020, 01:31:26 pm
Oui ... mais non.
Je ne doute pas un instant que tu vas réussir à faire un éditeur qui permet d'ajouter, de retirer des lignes.
J'en suis certain, je te fais confiance.

Mais, et tu l'as dit toi même : ce n'est pas la bonne piste.
Même toi, tu te demandais pourquoi on devait faire des choses en dehors du programme...

Non. La bonne solution est d'intégrer ça au programme pour qu'un seul programme s'occupe de tout.
Je m'y mets.

Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 31, 2020, 01:45:35 pm
Citer
Mais, et tu l'as dit toi même : ce n'est pas la bonne piste.
Même toi, tu te demandais pourquoi on devait faire des choses en dehors du programme..
.

Bah oui ca me semble une évidence donc je jette l'éponge je vais pas plus loin même si c'était un challenge (enfin un petit challenge  ::))

J'avais déjà fait le panneau de choix d'images mdr...

je vais continuer a suivre en mode silencieux ++
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 31, 2020, 03:06:32 pm
Merci quand même... Jean-François ?
Tu as fait progresser le projet. ;D

C'est vrai qu'il y avait un manque de ce côté là. Et tu as bien mis le doigt dessus.
Je ne m'étais jamais vraiment posé la question jusqu'au bout. Mais là, c'est clair.

Et il va falloir que je fasse pareil pour les autres programmes (Edite_TCO et Trains_TCO qui souffrent du même problème)

Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: jfs59 le octobre 31, 2020, 06:31:28 pm
Citer
Liste les tailles des décodeurs, liste des courants maximaux.
Les deux autres ne sont pas lisibles (ou je n'y suis pas arrivé…)

cvsummary.csv et reservedCVs.csv

contiennent bien les 2897 decodeur mais tres peu d'infos autres

parfois on trouve des trucs du genre

Codigo de Bloqueo de CVs;   Codigo de Bloqueo;                        Compensacion de velocidad minima. Sin BEMF se suma a CV2 (1-100);

pour reserved et du genre

Direccion principal de la locomotora (1-127);   Velocidad minima(1-128);Velocidad minima(1-128);   Aceleracion (0-50);   Desaceleracion (0-50);   Velocidad maxima (0-255);   Velocidad media (50-120);   Version del programa ;   Numero de Fabricante asignado por NMRA;

Primary Address (1-127);      Acceleration Rate (0-255);   Braking Rate (0-255);         Manufacturer Version ID;   Manufacturer ID;

Gaugemaster Opti DCC Loco Decoders   Primary Address;   Start voltage;   Accel Base Rate (CV3);   Decel Base Rate (CV4);   Maximum Voltage;   Midpoint Voltage;   Version ID;   Manufacturer ID;


pour summary

mais c'est vide a 99.99 %
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le octobre 31, 2020, 08:58:16 pm
Merci pour ces infos.

En fournissant les données de taille des décodeurs et des courants maximaux, JMRI fournit des infos intéressantes.
Les avoir récupéré est une bonne chose.

Mais je suis encore très loin d'avoir un programme équivalent à DecoderPros :
Il y a en effet énormément de particularités des décodeurs qui sont inscrites directement dans le programme.
Rien que chez Zimo, on peut s'arracher les cheveux sur quelques subtilités qui sont dans les onglets que je n'ai pas encore fait.
Mais je crois que plus on va dans les détails, plus on coupe les cheveux en 4 ! Est-ce vraiment utile ?

Je pense que ce qui pourrait être important, ce serait de gérer les sons. Là, c'est (encore) un vrai manque de mon programme.
Et il faut aussi étudier Loksound d'ESU qui me semble être le meilleur programme à ce sujet.
L'avantage de faire soi-même un programme, c'est que je peux mélanger deux programmes en un seul !

A court terme, je voudrais intégrer une micro alim DCC dédiée à UNE loco sur la voie de service.
Pour l'instant, ma voie de service est un cercle, ce qui permet facilement de chronométrer les locos.
Je poursuis mon idée de connaître la vitesse réelle des trains.

Certains parmi nous jugent inutile de connaître cette vitesse précise. Et je vais certainement les surprendre : la vitesse, en temps que telle, je m'en moque !!
Mais alors, pourquoi cette "marotte" ?
Parce que la vitesse, c'est une distance divisée par un temps !

Et le temps, dans un programme, on le gère avec une précision assez grande.
Il s'ensuit que si on connait aussi la vitesse, on peut en déduire une distance avec précision.
Et faire siffler un train avant un passage à niveau sans mettre d'ILS, par exemple.
C'est ce que fait RRTC, d'ailleurs. Comme quoi ça doit être possible.

L'interface va certainement encore évoluer, mais, ce soir, elle aurait cet aspect (c'est une piste, encore à creuser) :

(https://www.locoduino.org/IMG/png/tdb2_reduit.png)

Denis  :P




Titre: Re : Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: msport le octobre 31, 2020, 10:31:18 pm

C'est ce que fait RRTC, d'ailleurs. Comme quoi ça doit être possible.


Bonsoir Denis,
je ne voudrais pas être rabat-joie, mais pour éviter une déception ultérieure, il faut que tu prennes en compte le patinage, qui en sournois déjoue les calculs les plus élaborés.
J'ai testé un va-et-vient en délivrant des ordres DCC de vitesse en accélération constante (donc rien de plus déterministe que cela) puis en décélération, autant dans un sens que dans l'autre.
Il ne faut pas plus de dix allers-retours pour se retrouver avec 5 cm de décalage dans les arrêts (en HO, pas testé en G).
Mais, bon, je ne vais pas pour autant renier ma devise shadok.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le novembre 01, 2020, 12:24:57 pm
Bonjour Michel,

Je suis parfaitement d'accord avec toi. De nombreux pièges nous guettent :

1°) Le patinage :
On peut, en partie, améliorer les choses en ayant des bandages neufs (mais c'est la plaie à changer)
Puis on peut démarrer doucement et arrêter doucement. Plus c'est lent, plus c'est bon (ça ne rime pas :D)
Mais on ne peut pas supprimer le phénomène.

2°) Les joints de rail :
Il ne faut pas sous-estimer cet aspect qui freine quand même aussi.
Là, on peut agir sur la parfaite planéité du réseau. Par exemple, en coupant les rails en biais (je n'ai jamais vu un réseau comme ça) et que les deux coupures ne soient pas exactement en face les unes des autres.
Dans la même catégorie, les pointes de cœur des aiguilles.

J'ai acheté ça (à l'échelle N) :
https://kalmbachhobbystore.com/product/modeling-tool/84081?utm_source=Yesmail&utm_medium=email&utm_email=denis.deffunt@orange.fr&utm_campaign=SA000_HBS_201025_P36098_ClearAcrylicInspectionCars_MRR-MRV-HBS (https://kalmbachhobbystore.com/product/modeling-tool/84081?utm_source=Yesmail&utm_medium=email&utm_email=denis.deffunt@orange.fr&utm_campaign=SA000_HBS_201025_P36098_ClearAcrylicInspectionCars_MRR-MRV-HBS)

3°) Les mauvais contacts qui font que le DCC doit renvoyer plusieurs fois le code pour qu'il soit appliqué.

4°) L'encombrement du bus CAN (quand ça arrivera  ;)) et, à minima, le temps de propagation de l'information variable.
Je pense que cet effet peut être négligé, en première approche.

5°) Le nombre de véhicules, les pentes, dont l'effet est (normalement) amoindri par la gestion de la fcem. A vérifier...

Le seul point positif à ces désagréments c'est qu'ils vont tous dans le même sens :
Ils retardent le train quand on accélère, c'est à dire que le train arrive en retard au point déterminé.
Ils avancent le train quand on freine, c'est à dire qu'on arrive plus tôt que prévue au point déterminé.

Donc, on peut globalement amoindrir leurs effets cumulatifs avec un coefficient pour l’accélération et un autre pour la décélération.

Mais il y a quand même des choses sur lesquelles on a la main :

1°) Patiemment, on peut affecter une vitesse réelle à chaque cran de vitesse.

2°) Tenir compte de tous les CV (ce qui est facile avec Decoduino puisqu'on les a en mémoire dans Materiel.tsv  :D)
En particulier le seuil de démarrage dont il faut tenir compte et qu'il faut adapter à chaque loco.
Comme il s'agit d'un CV, on l'a aussi, adapté à chaque loco. De même, on pourrait avoir le coeff ci-dessus spécifique à chaque loco, dans Decoduino.

3°) L'autre point est la linéarité de la courbe. Si on est sur une courbe en seulement 3 points, c'est facile, puisqu'il s'agit de deux droites.
Si c'est sur 28 points, c'est un peu plus dur, mais on a la fonction mathématique, donc un calcul précis est possible aussi.

Le dernier point, le plus important, c'est de "remettre les pendules à l'heure" à chaque changement de zone de détection.

Je suis sûr qu'on peut améliorer les choses et diminuer considérablement le nombre d'ILS, effet Hall, infrarouge...
Ce que j'aimerais bien, c'est éviter d'avoir 3 zones de détection par canton (Deux zones d'arrêt et une zone centrale).

Enfin, quand je dis que RRTC sait le faire, je me réfère à cette vidéo de Renaud Yver et son fameux réseau Luzy :
https://www.youtube.com/watch?v=kk5v3ggpnfs (https://www.youtube.com/watch?v=kk5v3ggpnfs)

Bien amicalement
Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le novembre 11, 2020, 07:18:33 pm
Voilà ma nouvelle version de Decoduino. :D

De nombreux changements par rapport à la version précédente.
Tout d'abord, une volonté de tester les trains sur une voie de programmation … bouclée.

En effet, on peut très bien modifier des CV sur un morceau de rail, ou sur une voie de garage qu'on peut isoler électriquement du reste du réseau. C'est un cas fréquent.

Mais certains paramètres (la vitesse, en particulier) nécessitent de faire rouler des trains sur un circuit qui comporte le moins "d'obstacles" possible.
J'entends par "obstacle" tout ce qui peut faire varier la vitesse du train pendant les tests :
Pentes, aiguilles, courbe et contre-courbes, …
Tout cela pour dire qu'un cercle est la meilleure solution. ;)

Pour faire rouler des trains, il faut une alimentation sommaire et je garde évidemment l'Arduino UNO + MotorShield que j'ai utilisé pour tester les modifications de CV.

J'ai malheureusement dû démonter mon "réseau" pour des travaux chez moi  :( et je le remonte samedi. Je pourrais alors faire de vrais tests de vitesse.

En attendant, je me suis attaché à construire une alimentation dans Processing qui soit assez agréable à utiliser, avec un look "vintage".

Je préviens tout de suite : ce n'est pas la reproduction d'un poste de conduite réel, style "Trains Simulator". J'en ferai certainement un, mais pas tout de suite.
J'aime bien ça :
https://www.youtube.com/watch?v=HKVkCJxEsYE

Donc, on trouve :
-> Un voltmètre,
-> Un ampèremètre,
-> 28 boutons de fonctions
 (si quelqu'un a un besoin irrépressible d'un 29 ème bouton, je verrais pour en ajouter un),
-> La demande de crans de vitesse et son affichage
-> La vitesse elle-même (utile pour les tests). Deux notions différentes
-> L'inverseur de sens
-> L'adresse DCC de la loco et son affichage
-> L'étiquette vieillie donnant l'image de la loco en test

De nombreuses choses ne peuvent pas exister sur une vraie loco :
-> Les boutons de fonctions
-> Les tubes Nixie dont la fragilité aurait interdit l'usage dans une loco, bien connue pour vibrer de partout.
Mais j'aime bien cet affichage… 8)

Il me reste à faire l'interface avec l'Arduino.
Côté DCCpp, ce sera facile, tellement cette bibliothèque est bien faite. ;D
Mais je vais aussi devoir récupérer la tension et l'intensité.
Et … sortir le chronomètre !

Pour le développement, toutes les aiguilles bougent de concert avec la manette des crans de vitesse.
Cela n'a aucun sens, bien sûr. Mais ça m'a permis les réglages des paramètres.

Par ailleurs, conformément à ce que j'ai dit plus haut (01/11), j'ai ajouté 3 champs dans la base Matériel.tsv :
-> La vitesse maximale réelle de la vraie loco qu'on reproduit
-> Un coefficient de freinage (pour tenir compte des patinages et autres)
-> Un coefficient d'élan (pour tenir compte d'une avance par rapport aux ordres transmis)

Je les ai aussi ajoutés dans l'onglet "Fiche".
Et c'est là que je vais mettre l'éditeur permettant de modifier ces nombres et d'ajouter une loco.
C'est aussi à faire.

On passe des véhicules au pupitre en cliquant sur l'image du véhicule, tout simplement.
Pour inverser le sens de circulation : clic GAUCHE.

Voilà les fichiers.
Il faut bien faire attention et mettre le fichier Matériel.tsv au bon endroit ;)
https://www.locoduino.org/IMG/zip/decoduino_v0_14.zip (https://www.locoduino.org/IMG/zip/decoduino_v0_14.zip)
https://www.locoduino.org/IMG/zip/materiel-2.zip (https://www.locoduino.org/IMG/zip/materiel-2.zip)

Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le janvier 03, 2021, 04:12:20 pm
Bonjour,

Voici (enfin !?) la version 1.0 de mon logiciel Decoduino.
J'ai tenu compte de toutes les remarques qui m'ont été faites :

- Jusque là, j'avais mis de côté la mise à jour des données, pensant qu'Excel suffisait pour les mises à jour.
Non seulement c'était faux, mais, en plus, il fallait un vrai Excel, payant et fort cher.

Un clone comme Libre Office est très limité et permet seulement la lecture d'un fichier en ".tsv", c'est-à-dire "Tabulation Separated Values" (valeurs séparées par des tabulations).
Or, Processing ne connait que ce type de fichiers externes.
Et, donc, ne pas pouvoir sauver un fichier lu par Libre Office sous ce format est, évidemment, un gros handicap…

Et, maintenant que j'ai un éditeur complet pour gérer toutes les infos, je me suis rendu compte qu'on pouvait faire énormément d'erreurs de saisie, erreurs qui amenaient à un plantage du programme.
L'éditeur permet de valider les saisies, de poser des questions en cas d'erreurs et, de ce fait, limiter les plantages. Je dis "limiter", car il doit quand même en rester.
Mais, au moins, une fois identifiées, on peut corriger les erreurs de saisie.
C'est en testant ce programme qu'on peut y arriver. Et c'est là que vous intervenez.

- Pour rester dans les remarques de Jean-François (merci jfs59), j'ai mis un "?" quand on n'a pas mis de photos.
C'est moche et ça incite à en mettre une belle image.
D'autant qu'on a le modèle en main et qu'il suffit de le prendre en photo…

J'ai simplement pris une feuille de papier blanc, posé mes modèles dessus, "avant à gauche" (c'est important) et on prend une vue latérale.
Nota : une vue latérale est très rare sur internet et, quand elle existe, minuscule.
La photo passe dans un logiciel type "Paint" (gratuit) et on la tronque  avec un rectangle qui doit affleurer le haut, le bas, la gauche et la droite.
Il faut ensuite redimensionner en 200 pixels de haut (c'est impératif)
On retire le blanc autour et c'est fini.

Je ne sais pas sous quelle forme on pourrait les regrouper sur Locoduino, mais ce serait une bonne idée.

- Les fichiers on notablement évolué pour tenir compte de toutes les données dont on a besoin.

Voici les répertoires :

(https://www.locoduino.org/IMG/png/les_repertoires_decoduino.png)

Les images de tous les véhicules sont regroupées dans un répertoire "Vehicules" (sans accent)
L'autre sous-répertoire est "TSV" et il contient les 5 fichiers externes

Le répertoire "Decoduino" contient le programme en cours, aujourd'hui "Decoduino_V1_0.pde"
A chaque nouvelle version, ce programme changera, bien sûr.

Nota important :
Aujourd'hui, je vais vous fournir les 5 fichiers du répertoire "TSV"
Mais ces fichiers sont les vôtres, ce sont vos véhicules, vos décodeurs, vos trains…
Cela n'aurait aucun sens que je vous fournisse les miens par la suite.

Par contre, la Base_decodeurs.tsv n'est pas modifiable par le programme. C'est voulu.
Elle a été initialisée grâce à JMRI et toutes les modifications qui doivent être faites doivent pouvoir servir à tous.
Donc, je vous propose de les mettre sur le forum et on refera une nouvelle base à jour, après validation.

Les fichiers :

Vehicules.tsv :

(https://www.locoduino.org/IMG/png/vehicules.png)

Le champ "ID" ne doit pas avoir de doublons.
Le champ "ID_CV" correspond au numéro d'enregistrement dans le fichier "Infos_CV.tsv".
Le champ "nom" est libre.
Le champ "image" doit correspondre EXACTEMENT à un nom de fichier image dans le répertoire "Véhicules".
Le champ "marque" est libre.
Le champ "ref" est libre. Ces deux champs correspondent au véhicule, pas au décodeur.
Le champ "htamp" est la longueur (en mm) hors-tampons du véhicule mesurée sur le modèle que vous avez en mains.
Le champ "couleur" correspond à la couleur de fond du véhicule dans la composition des trains.
Comme ce fichier est dans le répertoire "Communs", il sert évidemment aussi à définir la couleur du véhicule du train virtuel dans le gestionnaire de trains.
Le champ "échelle" correspond à l'échelle
Le champ "moteur" contient "1" quand c'est un véhicule moteur.
Quand un véhicule est moteur, sa couleur de fond est toujours #808080.
L'inverse n'est pas vrai.
C'est un booleen dans le programme, mais les fichiers ".tsv" n'acceptent que les entiers et les chaînes de caractères.
Le champ "date" donne la date et l'heure de la dernière modification de l'enregistrement.
Le champ "CV106" correspond au numéro de propriétaire.

Le véhicule 0 est très particulier : on ne peut pas le retirer.
Il a ID = 0,
Il a ID_CV = 0, c'est-à-dire qu'il a le décodeur 0 qui correspond au fait qu'il n'a pas de décodeur.
C'est aussi le cas des wagons et des voitures.
Il a CV106 = 0, c'est-à-dire le propriétaire 0
On pourrait, par contre, changer son nom et son image.

Infos_CV.tsv :

(https://www.locoduino.org/IMG/png/infos_cv.png)

Le champ "ID_CV" correspond au numéro d'enregistrement dans le fichier "Vehicules.tsv".
Les champs "famille", "famille" et "modele" sont sélectionnés dans la "Base_decodeurs".
"fabricant", "famille" et "modele" correspondent aux appellations JMRI du décodeur.
Le champ "v_reelle" est la vitesse maximale du véhicule réél.
Le champ "frein" est un coefficient entre 0 et 1, multiplié par 10 000.
C'est pour tenir compte des frottements, patinages, … pour aller au plus près de l'affichage d'une vitesse réelle à l'échelle.
Le champ "elan" est un coefficient entre 0 et 1, multiplié par 10 000.
C'est pour tenir compte des glissements, … pour aller au plus près de la vitesse à l'échelle.
Pour l'instant, ces deux coefficients sont à "1", le temps d'affiner l'efficacité lors des essais.
Les champs "P0" à "P4" sont 5 paramètres permettant de modeler les courbes de vitesses en 28 points.
Les champs "CV1" à "CV200" correspondent aux 200 premiers CV. La plupart ne sont pas d'un usage courant, sauf si on peaufine les sons et les éclairages (ex : "light dimmer" du décodeur de Laurent)

Auparavant, j'avais tout dans le même fichier "Materiels.tsv", mais ça prenait inutilement beaucoup de place.
Le fichier "Infos_CV.tsv" n'a que deux enregistrements :
- L'enregistrement "0" pour le véhicule "0" et tous les wagons et voitures.
- L'enregistrement "1" pour le seul véhicule que j'aie avec un décodeur.

Proprietaires.tsv :

(https://www.locoduino.org/IMG/png/proprietaires.png)

Le champ "CV106" ne doit pas avoir de doublons. C'est le numéro du propriétaire.
Le champ "prop" est le nom du propriétaire. C'est un champ libre.
"F1" à "F28" correspond aux 28 fonctions possibles de la norme NMRA.
On y met le nom de la fonction.

On n'a pas de choix dans la norme NMRA pour "F0", ce qui fait qu'elle n'apparait pas ici.
J'ai prévu qu'on ait les mêmes noms de fonctions pour un propriétaire donné.
Après, c'est dans le programme qu'on affectera, véhicule par véhicule, la bonne fonction au bon bouton.
Par contre, chaque propriétaire peut avoir ses propres affectations de fonction. C'est souple.
J'ai prévu de mettre le numéro de propriétaire dans le CV106, ce qui donne 255 propriétaires possibles. C'est déjà un beau club…

Compositions.tsv

(https://www.locoduino.org/IMG/png/compositions.png)

J'avais besoin des compositions de trains pour mon gestionnaire. D'où sa présence ici.
Un enregistrement par composition, avec un champ "nom" et l'ID des véhicules.
Un maxi de 20 véhicules, ce qui fait déjà un beau train…

Maintenant que j'ai présenté tous les fichiers, je suis toujours aussi curieux et j'aimerai bien voir le ou les fichiers de Marcel (CATPLUS) est ses 600 wagons (!!). Il y certainement d'autres nouvelles infos à ajouter à mon programme.

A suivre dans le post suivant
Denis :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le janvier 03, 2021, 04:13:46 pm
Passons au programme lui-même :

Je suis parti des idées de DecoderPro, qui reste LA référence.
Mais, par moments, je le trouve un peu trop "Pro", c'est-à-dire qu'un certain nombre de choses paraissent évidentes dans ce programme et un débutant est parfois perdu.
J'ai donc voulu bien décortiquer les choses, mettre des commentaires, des aides, des demandes de confirmation pour que même une personne qui démarre trouve ses marques.

L'autre référence, c'est LokProgrammer, d'ESU.
Certes, le programme est gratuit, mais il impose de se connecter à une interface réseau payante qui coûte quand même la bagatelle de 149,90 €…

Voyons le fonctionnement de Decoduino :

Au début, on charge les fichiers et on vérifie qu'aucun fichier ".tsv" n'est ouvert dans une autre application, ce qui planterait le programme lors des sauvegardes.
Puis on cherche un Arduino et son Motorshield. Merci à Pierre (Pierre59)

L'innovation de ce programme est qu'on a maintenant un mode "démo", c'est-à-dire qu'on peut le tester sans Arduino.
Mais, évidemment, on ne peut plus alors ni lire ni écrire les CV de la loco.
Ceci dit, on a alors une bonne idée de ce qu'on peut faire avec ce programme. Et pour le développement, ça aide.
Il y a un mode "edit" aussi dans DecoderPro, mais pas dans LokProgrammer.

On a donc, au départ, les informations suivantes :

(https://www.locoduino.org/IMG/png/chargement_des_fichiers.png)
(https://www.locoduino.org/IMG/png/verification_des_fichiers.png)

Puis soit l'un ou l'autre des deux pop-up :

(https://www.locoduino.org/IMG/png/aucun_arduino.png)


(https://www.locoduino.org/IMG/png/un_arduino.png)   

Puis on arrive sur la page "Vehicule"

(https://www.locoduino.org/IMG/png/page_vehicules.png)

En haut, la case du véhicule. C'est là qu'on apprécie d'avoir fait une belle photo.
En haut à droite, on voit qu'on est sur le véhicule 1/21, puisqu'il y a 21 véhicules.

Puis on a un curseur horizontal et deux boutons à chaque extrémité pour sélectionner le véhicule.
Le nombre de véhicules gérable est lié à la longueur du curseur (1 124 points)

Dans la case "infos sur le véhicule", on a un résumé des principales infos :
Le nom, la marque, la référence, l'identifiant ID, le nom du propriétaire et la longueur hors tampon.

Puis une ligne de boutons pour filtrer les véhicules par échelle, moteur ou remorqué, DCC ou non, marque ou propriétaire.
Évidemment, le compteur dans la case de la photo se met à jour en fonction des ajouts de filtres et le curseur d'affichage aussi.

La deuxième ligne de boutons pour ajouter, mettre à jour ou retirer un véhicule.

Dans la case "Infos sur le décodeur", on a le fabricant, la famille et le modèle.
Puis l'adresse DCC, le nombre de crans de vitesse et la gestion des vitesses (3 ou 28 points)
Puis les boutons pour ajouter, mettre à jour ou retirer le décodeur.

Pour l'instant, le bas de l'écran est réservé à la composition des trains.
Chaque case contient un véhicule et son nom en dessous.
Pour ajouter un véhicule dans la composition, on clique sur le "+", ce qui insère le véhicule dans la composition. Cliquer sur le "-" le retire.
C'est là qu'on comprend pourquoi il faut des véhicules en vue latérale, orientés vers la gauche.
Il y a, pour l'instant, l'affichage de la composition 1 sur 2 en tout, comme l'indique le compteur.
Au dessus, un curseur et deux boutons pour sélectionner la bonne composition.
Puis, en bas à droite, les boutons pour ajouter, retirer et valider une composition.

Nota, on ne peut pas insérer le véhicule 0.

Copie de CV :
Il restait deux boutons dans la case "infos sur le décodeur" : copier et colle les CV

(https://www.locoduino.org/IMG/png/page_vehicule_copie.png)

1°) on appuis sur "Copier CV" et la composition des trains disparait de l'affichage, remplacée par la case du véhicule qui contient le décodeur dont les CV sont à copier.
On choisit le véhicule avec le curseur véhicule et les boutons.
Quand il est choisi, on passe à la copie, ce qui ouvre une deuxième case dans la quelle on choisit le véhicule récepteur.

Puis on termine par l'un des deux boutons : "Réaliser la copie effective" ou "Sortir de la copie sans rien faire".

Passons à la "Mise à jour". On atteint l'onglet "Fiche"

(https://www.locoduino.org/IMG/png/onglet_fiche.png)

Dans les 9 cases du haut, les infos issues de la Base_decodeurs.tsv.
Comme il s'agit d'infos communes, elles ne sont pas directement modifiables mais sont déjà remplies pour 2 895 décodeurs (!)

Suivent les infos du véhicule (rectangle des 8 cases à gauche), puis les 3 cases correspondant au test des locos.

Non modifiable, mais déjà remplies aussi, les CV7 et CV8, en lecture seule, en bas à droite.
Pour être précis, c'est dans le décodeur que ces valeurs sont inscrites et sont non modifiables.
Il faudra aller dans le "tableau des CV" pour mettre à jour le fichier (voir l'onglet correspondant).

Reste la gestion des propriétaires :
- Deux cases correspondant au véhicule affiché.
On choisit le numéro OU le nom du propriétaire dans une liste.
- 5 boutons correspondant à la gestion de TOUS les propriétaires.
Pour l'instant, l'affichage est limité à 43 propriétaires (à cause de la hauteur de l'écran), mais je vais l'augmenter si vous le voulez.
On pourrait aller jusqu'à 255 propriétaires possibles (à cause du CV106)

(https://www.locoduino.org/IMG/png/onglet_choisir_proprietaire.png)

Un bouton "Validez les choix pour cet onglet" pour sauvegarder les infos dans les fichiers "Vehicules.tsv", "Infos_CV.tsv" et "Proprietaires.tsv".

Mais, c'est le plus important, les CV sont mis à jour dans le décodeur de la loco.
Il apparait alors un pop-up au centre de l'écran qui égrène tous les CV mis à jour.
Le rythme est volontairement lent, pour que tout se passe correctement.

Un bouton pour "Ne rien changer pour cet onglet" permet de récupérer TOUTES les infos qu'il y avait avant qu'on atteigne cet onglet.

Tout ceci sera vrai de tous les onglets (sauf Tableau CV pour les boutons).

Reste deux boutons :

"Retour des CV aux valeurs d'usine" qui permet de retrouver un décodeur qui marche s'il était seulement mal programmé, ce qui ne devrait plus arriver avec ce programme. C'est un "reset light".

"Master reset" qui, là, génère une suite d'actions aptes à récupérer un décodeur complètement bloqué. Cela ne marche pour l'instant que pour le seul décodeur que j'aie : le Zimo MX617.
Mais c'est très efficace.

Onglet configuration :

(https://www.locoduino.org/IMG/png/onglet_configuration.png)
 
Là, on a toutes les informations, tous les détails pour mettre à jour le CV29.
Nota : j'ai lu plusieurs fois que pour le bit 2, il est recommandé d'interdire le changement de source pour ne pas "planter" au premier faux contact, interprété comme un changement de source.

Onglet adresse :

(https://www.locoduino.org/IMG/png/onglet_adresse.png)

Il suffit d'indiquer au clavier la nouvelle adresse et tout se met à jour. CV1, CV17, CV18 et CV29.

Onglet moteur :

(https://www.locoduino.org/IMG/png/onglet_moteur.png)

Pour gérer simplement les CV3 et CV4. Toutes les infos nécessaires sont affichées.
Nota : Dans la norme NMRA, comme on peut régler les CV3 et CV4 jusqu'à 255.
Cela qui correspond à … 3' 48" secondes (!) pour passer de la vitesse 0 à la vitesse maxi, et réciproquement pour la décélération.
J'ai donc limité ce CV à 67 au lieu de 255, ce qui correspond à 1' pour aller de 0 au maximum, ce qui me parait déjà pas mal.

On note qu'il reste de la place dans cet onglet : ce sera pour le CV9 (gestion de la fcem), particulièrement utile pour avoir des ralentis sans saccades.

Onglet Contrôle basique des vitesses :

(https://www.locoduino.org/IMG/png/onglet_contole_basique_des_vitesses.png)

La gestion des CV2, CV6 et CV5.
Bien sûr, le CV29 se met à jour aussi pour la gestion à 3 points.

Onglet tableau de vitesses :

(https://www.locoduino.org/IMG/png/onglet_tableau_des_vitesses.png)

Voilà le cas d'une loco vapeur. La courbe se dessine en modifiant simplement les 5 curseurs à droite.
La courbe "logistique" est celle qui s'approche le plus de la vraie courbe d'un moteur thermique.

(https://www.locoduino.org/IMG/png/onglet_tableau_des_vitesses_1.png)

Là, c'est une courbe "logarithmique" qui correspond plutôt aux moteurs électriques. Et donc aux locos diesels aussi.
On n'a besoin que de 3 curseurs pour la modifier.

Si on appuie sur "Boutons libres", on peut faire absolument ce qu'on veut avec les 28 curseurs à gauche.
Bien sûr, le CV29 se met à jour aussi pour la gestion à 28 points.

Onglet Fonctions/Propriétaires :

(https://www.locoduino.org/IMG/png/onglet_fonctions_proprietaires.png)

C'est là qu'on met à jour le fichier des fonctions propriétaires.
On retrouve le sifflet pour "F1" pour le propriétaire 1 (en bas à droite) qu'on avait vu dans le fichier.

Onglet Carte de fonctions NMRA :

(https://www.locoduino.org/IMG/png/onglet_carte_des_fonctions_nmra.png)

C'est là que vous pouvez vraiment adapter vos fonctions à vos boutons.
Notez que, comme il s'agit du propriétaire "1", on a bien "Sifflet" pour "F1.
C'est là que ça sert. Et on met à jour les CV33 à CV46.

J'ai noté les 5 premières couleurs de fils les plus standard pour les décodeurs.
Mais, après, les couleurs dépendent des fabricants.

Onglets Tableau des CV :

(https://www.locoduino.org/IMG/png/onglet_tableau_des_cv.png)

On a à l'affichage les 120 premiers CV.
Je pourrai afficher une autre page si nécessaire. Il suffirait d'ajouter un bouton. A voir.

Il est prévu des boutons permettant une mise à jour des CV par rapport aux infos dans les fichiers et réciproquement.
En particulier, il faut utiliser le bouton "Transfert  Fichier" pour mettre à jour les CV7 et CV8 dans le fichier "Infos_CV.tsv" (voir Onglet "Fiche")

Le fonctionnement est un peu particulier pour cet onglet :

Au départ, on a à l'affichage le contenu des 120 premiers CV dans le fichier "Infos_CV.tsv".
Comme les cases sont petites, j'ai, en plus, un "cadre volant" qui suit la souris pour être sûr d'être sur la bonne case.
Si on clique sur une case, on va afficher le contenu du CV correspondant dans le décodeur.
On voit au passage, comme d'habitude, le pop-up de question-réponse du décodeur.
Si les deux informations sont identiques, elles sont maintenant sur fond vert, sinon, elles restent en bleu.
On peut alors choisir l'info à modifier : soit celle du fichier, soit celle du décodeur, en prenant l'autre info comme référence.

Mais, bien sûr, on ne peut pas modifier ICI un CV directement.
Ce serait trop dangereux puisque beaucoup de CV sont liés.
On ne modifie les CV QUE dans les autres onglets.

Pupitre :

C'est un bonus par rapport aux autres programmes, un "Easter Egg".
 
(https://www.locoduino.org/IMG/png/pupitre.png)

Pour accéder au pupitre, il suffit de cliquer sur la case photo dans la page véhicule.
Évidemment, ça ne marche que si ce véhicule a un décodeur.
Ce pupitre va me servir à tester les vitesses réelles à l'échelle de la loco que j'ai.
Et ainsi définir ses coefficients "frein" et "élan".

Comme, pour l'instant, je ne peux agir que sur le cran de vitesse (la grosse manette), j'ai voulu tester les aiguilles de tous les cadrans qui bougent ainsi de concert, ce qui n'a absolument aucun sens.
Mais ça m'a permis de définir les paramètres de 0 à maxi pour chaque cadran.

Pour l'instant aussi, appuyer sur un bouton fonction ne fait qu'allumer la lampe au dessus.

Il reste donc encore du travail sur cette page !

Pour revenir à la page véhicule, on clique sur la petite photo en haut.

Branchements :

Voilà mon branchement :

(https://www.locoduino.org/IMG/png/branchement1.png)
 
Au lancement du programme, je suis sur "VDS" (Voie De Service) et je programme mes CV.
Puis je bascule sur "POM" (Programmation On Main), c'est-à-dire le réseau, et j'utilise le pupitre.

J'ai une question concernant DCCpp (que je connais finalement assez mal) :

Dans ce sens là (VDS -> POM), tout va bien.
Je passe de commandes du type <W … > avec une réponse <r … > à une commande de type <t…>

Mais quand je reviens sur "VDS", quand j'envoie <W …>, j'ai une réponse <T …>

Il doit falloir envoyer une commande en même temps que je bascule le double inverseur. Laquelle ?

Enfin, comme je n'ai pas tous les composants pour LaBox, je n'ai pas testé.

Les fichiers Zip :
https://www.locoduino.org/IMG/zip/decoduino_v1_0.zip (https://www.locoduino.org/IMG/zip/decoduino_v1_0.zip)
https://www.locoduino.org/IMG/zip/vehicules.zip (https://www.locoduino.org/IMG/zip/vehicules.zip)
Le fichier TSV.zip est en PJ.

Voilà, c'est tout pour aujourd'hui.

Denis  :P
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: Jean-Paul le janvier 10, 2021, 09:57:28 pm
Bonjour,

J'utilise pour la programmation une BaseStation dédicacée (UNO + motorshield standard) avec la sortie de programmation reliée à une petite (je suis en Z) boucle (un simple ovale) de programmation permettant de programmer et de faire rouler la locomotive (surtout pour tester les résultats vitesse - accélération). La sortie de la voie principale du motor shield n'est pas utilsée ici.
Au lieu du branchement POM/VDS par commutateur, j'ai le même résultat par programmation en modifiant DCCpp pour rediriger les commandes t et f vers les 2 premiers registres de la voie de programmation.
J'utilise habituellemment  DecoderPro sans problème dans cette configuration

Pour ce qui du problème:
Dans ce sens là (VDS -> POM), tout va bien.
Je passe de commandes du type <W … > avec une réponse <r … > à une commande de type <t…>
Mais quand je reviens sur "VDS", quand j'envoie <W …>, j'ai une réponse <T …>
Il doit falloir envoyer une commande en même temps que je bascule le double inverseur. Laquelle ?


cela ne produit pas chez moi. Je passe de R ou W , puis t ou f, puis de nouveau R ou W de manière correcte, aussi bien directement en introduisant les commandes dans le Serial Monitor que via DecoderPro.

L'installation de la version en Processing est une des prochaines activités pour lesquelles j'espère trouver un peu plus de temps ... Je ne manquerai pas d'en informar ici.

Amicalement
Jean-Paul.
Titre: Re : Décoduino : une "centrale DCC" dédiée à la voie de programmation
Posté par: DDEFF le janvier 11, 2021, 09:38:05 am
Bonjour Jean-Paul,

Merci d'avoir lu ce (long) post !
C'est agréable d'avoir des lecteurs  ;D

Tu as résolu mon "problème" d'une manière surprenante : modifier DCCpp.
J'aimerais bien avoir l'avis de Thierry là dessus.

C'est, indirectement, la question que je posais : pouvoir se passer d'un commutateur physique dont je suis bien convaincu que c'est du "bricolage".
Il devrait exister une commande DCCpp qui permette de faire la modif que tu proposes.
Bien qu'en N, je suis exactement dans ton cas : une voie de programmation bouclée qui me permettra des essais de vitesse, et d'un d'arrêt à un point précis sans ILS.

Quant à Processing, c'est très simple : j'ai même fait un article dessus :
https://www.locoduino.org/spip.php?article219&var_mode=calcul (https://www.locoduino.org/spip.php?article219&var_mode=calcul)
En fait, pour faire marcher Decoduino, seul le début de l'article sert : installer Processing. Le reste n'est utile que si on développe en Processing.

Comme tu connais déjà DecoderPro, ton avis sur Decoduino m'intéressera beaucoup, sachant que je n'en suis qu'au début.

Bien amicalement
Denis :P