LOCODUINO

Un gestionnaire en C++ pour votre réseau (4)

Trains et commandes de trains

. Par : Pierre59

Parlons de trains et de commandes de trains. Dans la réalité il y a d’une part des "trains" et d’autre part des "commandes" de trains un "train" c’est normalement une locomotive avec ou sans une rame de voitures ou de wagons, ou une rame automotrice (on appellera "train" tout ce qui roule sur un réseau) une "commande" de train c’est (…)

Retourner à l'article

Vous répondez à :

Un gestionnaire en C++ pour votre réseau (4) 28 novembre 2017 16:26, par Dario Bello

Bonjour Pierre et merci pour votre réponse.

Mon système, PC Windows 7 Professionnel 64 bit.

En fait l’erreur se situe à la ligne 43, println("Le port utilise : "+Serial.list()[NO_PORT]) ;
En effet, comme les erreurs ne sont pas "catchées", il donne l’erreur à la fin de la méthode setup() ligne 64 qui est l’accolade.

Vous avez mis quelle valeur dans la constante [NO_PORT] ?
Moi j’ai 0 et j’ai essayé avec un numéro de port mais cela ne fonctionne pas.

J’ai peut-être mal posé ma question. Je voulais essayer (tester) TCOlocodrome, avant de créer mon Locodrome, afin de mieux comprendre le fonctionnement. Je me disais en mode simulation peut-être que je peux lancer TCOlocodrome et voir ce que cela donne avec le debugger en activant les boutons du TCO, est-ce possible sans le brancher à un Arduino ?

Ensuite si je désire créer mon TCO, je dois lancer « TCO_V5_3.pde » et dessiner mon TCO est-ce correct ?

Merci encore et bonne fin de journée.
Je me suis inscrit sur le forum Locoduino, ainsi j’expliquerai mon projet et je créerai un fil.

Dario

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

28 Messages

  • locodrome 2 avril 2017 01:13, par VENET

    Bjr
    Je voudrais diriger un petit circuit N pour mon petit fils avec un arduino Uno (et arduino 1.8.1)
    J’ai telechargé Locodrome pour m’initier, le TCO s’affiche bien sur le PC mais les programmes locodromeBal.ino et LododromeBAL4.ino renvoient une erreur de compilation qui concerne a chaque fois la 1ere instruction # include :
    # include "TCO.h" pour la V3
    # include "Constantes.h" pour la V4.
    Pourriez vous me dire ce qui ne va pas. Merci

    Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 10:04, par Dominique

    Le programme LocodromeBAL4.ino doit se trouver dans un dossier du même nom, qui contient aussi les autres fichiers Constantes.h, etc... comme sur l’image ci-dessus.

    Avez-vous bien respecté ceci ?
    Sinon, précisez l’erreur dans le bas de l’éditeur de l’IDE et donnez nous plus de détails.

    Je viens de recompiler le programme, sans erreur pour un Uno.
    Cordialement
    Dominique

    Répondre

    • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 15:37, par venet

      Merci pour ces reponses hyper rapides,
      J’ai fait ce que vous preconisiez et ... c’est OK
      Maintenant, nouveau probleme surement simpliste, mon Arduino etant sur le com3, je dois aller indiquer cela dans la variable NO_PORT, mais je ne la trouve pas dans le programme telechargé sur l’Uno.
      Suis je a cote de la plaque ?
      Debutant oblige !!
      Merci

      Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 10:25, par Pierre59

    Bonjour

    Moi aussi je viens de recompiler LododromeBAL4 avec Arduino 1.8.1 (sur Mac OSX 10.9.5) sans problèmes.

    Cordialement

    Pierre

    Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 17:49, par Pierre59

    Bonjour

    La variable NO_PORT se trouve dans le programme Processing (fichier TCOlocodrome4C.pde). Voir aussi les instructions dans le fichier "notice" (vers la fin), pour appairer le n° de port de Processing avec celui de l’Arduino..

    Cordialement

    Pierre

    Répondre

    • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 18:09, par venet

      Encore merci...
      Si j’ai bien compris j’installe le programme processing (que je ne connais pas du tout), j’ouvre le fichier TCOLocodrome4C.pde, je modifie NO_PORT et j’enregistre... Puis je relance..
      Je cherche surtout a faire ’bouger’ des trains dans un premier temps, les programmes Locodrome V3 et V4 peuvent ils etre utilises sans TCO sur un petit circuit reel (donc sans affichage) ou sinon puis je me baser sur le projet de Guillaume de ’petit locodrome’ qui a le meme schema ?
      C’est pour realiser avec un enfant de 8 ans, donc progressivement, et puis il faut que je me mette a niveau..
      Cordialement
      Claude

      Répondre

      • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 18:37, par Pierre59

        Bonjour

        Il faut tout d’abord installer une version 3 de Processing, puis lancer le TCO en Processing pour avoir la liste de ports USB/série et leurs numéros et ajuster le NO_PORT. Tout cela est décrit dans le fichier "notice".

        Le gestionnaire peut être utilisé sans TCO, mais dans ce cas il faut l’interfacer avec un réseau réel, ce qui demande de l’électronique, notamment des détecteurs de présence des trains sur les zones.

        Le gestionnaire est conçu pour s’adapter à n’importe quel réseau, mais cela demande réécrire toute la description du réseau. Sur Locoduino on est dans une logique de DIY (faites le vous même).

        Le Locodrome de Guillaume est à l’origine de l’écriture du gestionnaire car il est très simple. Depuis la publication d’autres utilisations du gestionnaire sont en cours sur d’autres réseaux, voir sur le Forum Locoduino :

        http://forum.locoduino.org/index.ph...

        Cordialement

        Pierre

        Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 2 avril 2017 22:59, par Dominique

    Etant donné que le Locodrome est tout fait, coté Arduino pour le Gestionnaire et cote Processing pour le TCO, cela peut constituer un excellent projet pour un enfant de 8 ans, mais il vous faudra quelques autres ingrédients et aider votre gamin en faisant vous-même toute l’électronique :

    • des rails évidemment avec 2 aiguillages à moteur
    • un train ou 2, de préférence en DCC (digital)
    • une centrale DCC (de préférence à construire vous même, à partir d’un montage décrit ici http://www.locoduino.org/spip.php?a.... J’en ai fait déjà plusieurs, c’est amusant et pas cher !
    • un module de commande des aiguillages (Arduino avec des relais)
    • quelques détecteurs de consommation (on peut vous aider à choisir)
    • quelques signaux (en option ou plus tard)
    • un Arduino avec le Gestionnaire (qui peut probablement être intégré avec l’Arduino centrale DCC, si vous prenez un Mega)
    • relier tout cela ensemble (selon un joli schéma à faire).

    C’est un projet auquel je pense comme démonstrateur dans un club, quand j’aurai fini mon réseau.

    Qu’en pensez-vous ?

    Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 27 novembre 2017 22:48, par Dario Bello

    Bonsoir,

    J’ai lu une bonne partie du projet et franchement c’est assez génial tout ce que vous avez fait. Quand je dis, "Vous avez fait", je veux dire, toutes les personnes qui ont contribué au développement de ce projet et de tous les autres sur ce site/forum.

    J’ai installé Processing 3.3.6, la dernière version de java et téléchargé le fichier zip Locodrome V4, puis extrait le tout.
    J’exécute le fichier TCOlocodrome4C.pde, Processing s’ouvre avec tous les fichiers .pde chargés.
    A l’exécution de TCOlocodrome4C j’ai cette erreur :
    “java.lang.ArrayIndexOutOfBoundsException : 0
    at TCOlocodrome4C.setup(TCOlocodrome4C.java:64)”

    et le TCO ne s’affiche pas.
    J’ai une question : peut-on utiliser Locodrome sans brancher un Arduino ou doit-on obligatoirement le brancher ?

    Est-il possible de voir juste le dessin du TCO sans connexion avec l’Arduino, sans simulation de train ?
    Si non, je dois avoir manqué ou pas « imprimé » quelque chose dans la lecture du projet !

    Merci pour vos réponses et bonne soirée.
    Bien à vous
    Dario

    Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 28 novembre 2017 09:22, par Pierre59

    Bonjour

    A priori le programme TCOlocodrome est prévu pour fonctionner avec un gestionnaire sur Arduino.

    Mais on peut aussi, moyennant quelques précautions, le faire fonctionner seul.
    Je l’ai essayé seul avec Processing 3.3.6 (sur Mac), juste un petit problème avec le numéro de port (variable NO_PORT), indice hors limite à la ligne 45 (du setup), après changement (NO_PORT=0) le TCO apparait normalement.

    Pour en revenir à votre message d’erreur, la ligne 64 dans le fichier TCOlocodrome4C ne contient qu’une accolade ( ’}’ ) ???
    Pouvez vous préciser votre système, ce qu’il y a dans votre ligne 64 et ce qui est affiché dans la console.

    Vous pourriez aussi nous dire ce que vous voulez faire avec le TCO.

    Cordialement

    Pierre

    Répondre

    • Un gestionnaire en C++ pour votre réseau (4) 28 novembre 2017 16:26, par Dario Bello

      Bonjour Pierre et merci pour votre réponse.

      Mon système, PC Windows 7 Professionnel 64 bit.

      En fait l’erreur se situe à la ligne 43, println("Le port utilise : "+Serial.list()[NO_PORT]) ;
      En effet, comme les erreurs ne sont pas "catchées", il donne l’erreur à la fin de la méthode setup() ligne 64 qui est l’accolade.

      Vous avez mis quelle valeur dans la constante [NO_PORT] ?
      Moi j’ai 0 et j’ai essayé avec un numéro de port mais cela ne fonctionne pas.

      J’ai peut-être mal posé ma question. Je voulais essayer (tester) TCOlocodrome, avant de créer mon Locodrome, afin de mieux comprendre le fonctionnement. Je me disais en mode simulation peut-être que je peux lancer TCOlocodrome et voir ce que cela donne avec le debugger en activant les boutons du TCO, est-ce possible sans le brancher à un Arduino ?

      Ensuite si je désire créer mon TCO, je dois lancer « TCO_V5_3.pde » et dessiner mon TCO est-ce correct ?

      Merci encore et bonne fin de journée.
      Je me suis inscrit sur le forum Locoduino, ainsi j’expliquerai mon projet et je créerai un fil.

      Dario

      Répondre

      • Un gestionnaire en C++ pour votre réseau (4) 29 novembre 2017 11:46, par Pierre59

        Bonjour

        Le TCOlocodrome ne fonctionne pas sans Arduino, on peut juste avoir l’affichage en supprimant dans le programme ce qui concerne le port série (utilisations de la variable "port").

        Si vous voulez savoir comment cela fonctionne, il suffit de demander, j’ai un article, en cours de finition, sur ce sujet, je peux vous l’envoyer si vous voulez. Il décrit comment faire son propre TCO (comme celui du Locodrome).

        Cordialement

        Pierre

        Répondre

        • Un gestionnaire en C++ pour votre réseau (4) 29 novembre 2017 13:55, par Dario Bello

          Bonjour Pierre et merci pour vos réponses.

          Très volontiers, je serais intéressé à recevoir votre article sur "comment faire son TCO".

          Comme je le disais, je suis inscrit sur Locoduino sous dbe8f. C’est aussi plus facile si vous désirez me l’envoyer par là.

          Toute bonne fin de journée.
          Bien à vous.
          Dario

          Répondre

      • Un gestionnaire en C++ pour votre réseau (4) 28 novembre 2020 13:12, par Laurent18

        Bonjour Dario,

        Pb NO_PORT :
        Lors de l’exécution du setup modifié ci-dessous, le logiciel TCOlocodrome4C vous propose la liste complète des COM parmi lesquelles se trouve celle de l’Arduino (pour moi COM3 en première position dans la liste). NO_PORT est l’index dans la liste (0 est le premier élément). A vous de mettre dans NO_PORT l’index de la COM Arduino pour que ça fonctionne bien (NO_PORT = 0 pour moi).

        void setup()
        print("Les ports serie : ") ;
        printArray((Object[])Serial.list()) ;
        print("Le port utilise : ") ;
        println(Serial.list()[NO_PORT]) ;
        port=new Serial(this,Serial.list()[NO_PORT],9600) ;
        port.buffer(3) ;
        portWrite(’X’) ; // (re)initialisation du programme de gestion
        size(1100,500,P2D) ; noStroke() ;

        En utilisant une liste, il n’y a plus d’erreur d’index.

        Par contre je cherche toujours pourquoi, de temps en temps, TCOlocodrome4C déclare le bus de la carte Arduino en cours d’utilisation (il suffit de redémarrer TCOlocodrome4C et la carte Arduino pour que ça fonctionne à nouveau). Je pense que c’est l’instruction « new » qui cherche à déclarer une nouvelle classe « serial » alors que le port fonctionne dans une ancienne (?) A étudier.

        Pb : carte Arduino
        Les modifications à effectuer sont trop importantes pour fonctionner sans Arduino ...

        Cordialement
        Laurent18

        Répondre

        • Un gestionnaire en C++ pour votre réseau (4) 3 décembre 2020 22:13, par Laurent18

          Rebonjour,

          Je viens de trouver pourquoi la carte Arduino ne démarre pas correctement. Il s’agit effectivement de l’instruction "new" qui fait des siennes lorsque l’Aduino cause sur le bus. Voici la solution à mettre au début du setup du TCOlocodrome4C :
          (alt91) = crochet ouvert
          (alt93) = crochet fermé
          void setup() (alt91)
          print("Les ports serie : ") ;
          printArray(Serial.list()) ;
          String portName=Serial.list()[NO_PORT] ;
          print("Le port utilise : ") ; println(portName) ;
          port=null ;
          while (port==null)(alt91)
          try (alt91)
          port=new Serial(this,portName,9600) ;
          (alt93)
          catch (Exception e) (alt91)
          e.printStackTrace() ;
          (alt93)
          (alt93)
          port.clear() ;
          port.buffer(3) ;
          portWrite(’X’) ; // (re)initialisation du programme de gestion
          size(1100,500,P2D) ; noStroke() ; etc...

          A vous de jouer avec le locodrome.
          Cordialement
          Laurent18

          Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 24 mars 2020 23:16, par Gilles

    bonjour,
    accessoires et trains commandés avec une seule carte Arduino.
    Merci pour la réponse
    Gilles

    Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 25 mars 2020 10:32, par Gilles

    Bonjour,
    1. Est-ce qu’il faut plusieurs cartes Arduino pour commander à la fois les accessoires (décodeurs signaux, aiguilles, ...) et les trains (décodeurs dans les locos pour vitesse, direction, ...).
    2. Comment mélanger tout ça dans l’IDE ?
    Merci.
    Gilles

    Répondre

    • Bonjour

      Le gestionnaire émet des messages sur différents canaux virtuels pour commander les accessoires (signaux, aiguilles, ...) et les trains (vitesse, direction, ...)

      Ces canaux virtuels doivent êtres implémentés dans le programme du gestionnaire par du code Arduino pour envoyer les messages sur des bus physiques : CAN, DCC, I2C, réseau (ethernet ou wifi), ...

      Une centrale DCC est nécessaire sur l’un de ces bus réels pour générer les trames DCC et les injecter sur le réseau avec une puissance électrique suffisante. Ce peut être une centrale faite maison en suivant les conseils du site Locoduino.

      Le gestionnaire attend aussi des messages venant de ces bus pour fonctionner : messages de rétrosignalisation (occupation des zones ou cantons), messages venant des manettes (vitesse et sens des locomotives), ...

      Pierre

      Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 25 mars 2020 11:23, par Gilles

    Encore moi,

    Désolé si je pose des questions idiotes.

    Dans l’IDE, on met tous ces programmes à la queue-leu-leu ?
    C’est ça que je ne comprends pas.
    Je veux commander deux locomotives et 4 aiguillages, par exemple.

    Merci de m’éclairer.
    Gilles

    Répondre

    • Bonjour

      Je suppose que vous voulez commander vos locos en DCC.
      Dans ce cas il vous faut une centrale DCC reliée au gestionnaire par un bus quelconque (CAN si vous utilisez une centrale Locoduino ou autre). Il faudra rajouter au gestionnaire un peu de logiciel traduisant les messages du gestionnaire vers le protocole du bus utilisé (ce logiciel se met n’importe où dans le gestionnaire)
      Pour les aiguilles c’est un peu le même topo, il faudra aussi quelque chose entre le gestionnaire et les aiguilles, par exemple un décodeur d’accessoire DCC supportant votre modèle d’aiguille, ou un ou plusieurs satellites Locoduno qui sont sur le bus CAN, ou autre. Il faudra aussi rajouter au gestionnaire un peu de logiciel pour la prise en charge du bus (DCC,CAN,...)
      Il faudra peut être aussi une ou deux manettes si la centrale n’en est pas équipée.
      Pierre

      Répondre

  • Un gestionnaire en C++ pour votre réseau (4) 21 octobre 2020 19:05, par Jean-Michel Dubois

    Bonjour,

    D’abord merci pour ce très intéressant dossier.

    Pour que les algorithmes fonctionnent, les aiguilles doivent elles être placées dans des zones distinctes des zones de pleine voie ou les aiguilles prises en pointe peuvent-elles la partie terminale d’une zone comme on me le recommande ailleurs ?

    Répondre

    • Un gestionnaire en C++ pour votre réseau (4) 22 octobre 2020 10:18, par Pierre59

      Bonjour

      A priori les aiguilles peuvent êtres n’importe où. Mais elle doivent êtres protégées par un signal carré (qui peut être éventuellement loin de l’aiguille).

      Ce signal carré est aubiné (fermé) par l’occupation de la zone qui la suit immédiatement. Cette fermeture pourrait se faire par une détection ponctuelle (voire une zone un peut plus loin), mais ce n’est pas prévu pour l’instant.

      Pour résumer les zones de pleine voie avec une aiguille en pointe à la fin sont à éviter, c’est ailleurs normalement le cas à la SNCF. Sur nos réseaux on a tendance à le faire pour gagner des zones , donc les détecteurs associés.

      Ne pas oublier dans le découpage des zones qu’une zone ne peut laisser le passage à un seul train à la fois, quelque soient les positions des aiguilles.

      Le gestionnaire se rapproche le plus possible de ce qui existe à la SNCF, notamment dans le découpage des zones.

      Pierre

      Répondre

      • Un gestionnaire en C++ pour votre réseau (4) 22 octobre 2020 10:30, par Jean-Michel Dubois

        Merci beaucoup pour cet avis étayé. Si la seule raison de l’inclusion des aiguilles prises en pointe dans la zone amont est l’économie d’un détecteur, je vais les garder dans une zone distincte, tel que je l’ai conçu au départ.

        Répondre

Rubrique Projets

Les derniers articles

Les articles les plus lus