IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Effectuer une association entre deux tableaux


Sujet :

Arduino

  1. #261
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Bonjour à Toutes et tous,

    le plan (non définitif !) de mon réseau. Écrit avec et d'après le totorial de Pierre Lecouffe sur LOCODUINO, "TCO en processing"
    En cours la signalisation, toutes les procédures pour lier processing et Arduino

    Nom : MonTCO.JPG
Affichages : 105
Taille : 170,0 Ko
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  2. #262
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Salut Jacques

    Superbe! Peux-tu me fournir le fichier, ça m'intéresse.

    Gères-tu tout ton réseau avec ça ou as-tu encore besoin de mon programme!
    Faut-il adapter mon programme?
    Faut-il adapter le programme Processing?

    A+
    Bonne journée (il flotte)
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #263
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par jpbbricole Voir le message
    Salut Jacques

    Superbe! Peux-tu me fournir le fichier, ça m'intéresse.
    Le voilà en zip : PERSO_10_2_1.7z

    Gères-tu tout ton réseau avec ça ou as-tu encore besoin de mon programme !
    Faut-il adapter mon programme?
    Faut-il adapter le programme Processing?
    Il y a la solution : tout Arduino ce qui rend nécessaire la construction du TCO
    Il y a la solution : le TCO sur ordinateur qui va commander les Mega 2560 ; donc pas de TCO à fabriquer et ça c'est un gros avantage
    il y a la solution : adapter le programme, je pense que c'est la même chose ... C'est faisable ?
    et la dernière solution : tout en processing mais là, tu m'as dit que tu ne le connaissais pas trop !

    J'ai demandé à Pierre LECOUFFE sur LOCODUINO, s'il comptait compléter son tuto,, j'attends la réponse.
    Au besoin tu peux récupérer sur Locoduino, les tutos "TCO en processing"
    Sur le TCO, il y a encore pas mal de travail à faire, la signalisation (cantons, zones d'arrêt, présignalisation etc.) je m'y attelle demain matin

    Ici aussi .... il flotte !

    A+
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  4. #264
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Pour info,

    sur le plan, j'ai numéroter les lignes et alphabétiser les colonnes !

    C'est hach'ment plus pratique pour s'y retrouver !
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  5. #265
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Jacques
    Citation Envoyé par Jsiorat Voir le message
    Il y a la solution : le TCO sur ordinateur qui va commander les Mega 2560 ; donc pas de TCO à fabriquer et ça c'est un gros avantage
    il y a la solution : adapter le programme, je pense que c'est la même chose ... C'est faisable ?
    C'est, pour moi, la meilleure solution, c'est quand même plus fun un TCO sur ordi, quel que soit la méthode, Processing ou autre.
    Pour l'adaptation, je connais, un peu, le principe de fonctionnement de Processing, je pense que c'est possible, lors d'un clic sur un objet, d'envoyer, sur la liaison USB de l'Arduino.
    C'est là que tu peux mettre les ordres tels que je les ai défini comme AIG=A1_G ou BP=C2_V1 etc.
    Si les ordres sont déjà constitués dans Processing, il doit être possible d'adapter mon programme.
    Je vais étudier Processing.
    De toute façon, je continue de développer la version avec bus i2C pour les E/S, je m'amuse trop!

    A+
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  6. #266
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Bonsoir JP,

    voilà un extrait du message de P. Lecouffe :
    Quand on clique sur un pavé-aiguille, celle ci change de position (c'est aussi vrai pour les signaux), il faut donc en plus envoyer un message à l'Aduino.

    Pour communiquer entre Processing et Arduino le plus simple est le câble USB/Série (celui qui sert à charger les programmes).

    Il faut ensuite définir un protocole pour les messages échangés (taille, contenu, ...), en pratique cela peut être 1, 2, ou 3 octets. La taille du message dépends du nombre de messages différents (et aussi du nombre d'appareils commandés, par exemple le nombre d'aiguiles). Il faut avoir une petite idée d'avance sur les messages échangés : commandes d'aiguilles, de signaux, trains,... mais aussi ceux de rétrosignalisation.

    Concernant le dessin du TCO : on peut faire tourner les pavé-signaux (comme les autres), il existe aussi des des grands quart de cercle ( PaveArc90Grand(n) ). Je me pose aussi des questions sur les deux croisements, est ce bien des croisement, par ce qu'il existe des pavés TJD et TJS contenant deux aiguilles et un croisement.
    Tout à fait OK pour une adaptation ! si ça ne te poses pas de soucis !

    A+ Il flotte toujours !!!
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  7. #267
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    bonjour

    j'ai jeté un oeil rapide au code Java / Processing.

    En prenant une approche objet, Il suffirait d'ajouter une variable d'instance et une méthode à la classe Pavé qui permettrait d'associer le message qui doit être envoyé sur le port USB lors d'un clic sur ce pavé. Cette notification serait émise dans la méthode manoeuvrer() qui est appelée dès qu'un pavé est modifié (manoeuvre des aiguilles et signaux).

    En prenant une autre approche, on pourrait créer un "centre de notification" qui aurait la connaissance des associations entre "changement d'état d'un pavé" et "message à émettre". Le centre de notification serait "notifié" lors d'un click sur un pavé et c'est ce centre de notification qui envoie le bon message

    Enfin on pourrait coder "en dur" dans la fonction mouseClicked() l'émission du message sur le port série après modification du pavé par l'appel à manoeuvrer() puisqu'on sait de quel pavé il s'agit

    la première approche serait sans doute la plus "propre".

  8. #268
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Salut Jay M

    J'ai aussi fais quelques essais et j'arrive à transmettre, depuis Processing, dans mon programme. Tout ce joue dans void mouseClicked().
    Le repère est le pavé (c, l), où que l'on y clique cela produit un mouvement gauche, droite, gauche, droite...
    Mon problème, je n'arrive pas à saisir si c'est un mouvement gauche ou droite qui se produit. Certainement mon manque de connaissances de ce programme.
    Si tu as un truc!

    Mon idée est de créer, dans mon programme, un tableau pavesLC dans lequel j'introduirais l'aiguille correspondante, selon la notation habituelle.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  9. #269
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Bonjour Messieurs,

    je vois que vous vous intéressez à Processing.
    Il me semble que c'est la bonne solution pour ne pas avoir à fabriquer manuellement un TCO complet.

    En prenant une approche objet, Il suffirait d'ajouter une variable d'instance et une méthode à la classe Pavé qui permettrait d'associer le message qui doit être envoyé sur le port USB lors d'un clic sur ce pavé. Cette notification serait émise dans la méthode manoeuvrer() qui est appelée dès qu'un pavé est modifié (manoeuvre des aiguilles et signaux).
    cette solution proposée par Jay devra être associée aussi au click sur un bouton (à developper ! c'est en cours !) afin de pouvoir répondre à C1_V1, C2_V1 ou C3_V1 etc ... il y a 8 circuits prévu pour la gare et encore plus pour le triage.

    Qu'en pensez-vous ?
    et comme dans le feuilleton à la tv ..... "Sous le soleil" pour cet après-midi !

    Cordialement, Jacques
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  10. #270
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Salut Jacques

    Dessines tes boutons, fais-moi parvenir le Processing et je l'adapterais à mon programme.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  11. #271
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Citation Envoyé par Jsiorat Voir le message
    je vois que vous vous intéressez à Processing
    oui j'ai déjà pas mal joué avec par le passé pour piloter des appareils photo. ça permet de déporter de nombreuses choses sur une machine plus puissante et laisser le "pilotage" matériel à l'arduino tout en ayant une GUI sympa et bien sûr on a la puissance d'un vrai ordinateur complet !


    Le repère est le pavé (c, l), où que l'on y clique cela produit un mouvement gauche, droite, gauche, droite...
    Mon problème, je n'arrive pas à saisir si c'est un mouvement gauche ou droite qui se produit. Certainement mon manque de connaissances de ce programme.
    Si tu as un truc!
    C'est pour cela que je dis que le mieux ce n'est pas de le faire dans la fonction mouseClicked() car bien qu'on ait les coordonnées du pavé cliqué on ne connait pas son état et vers quoi il va basculer. ça obligerait à maintenir une nouvelle fois les états. Par contre l'instance du Pavé connait très bien son état puisqu'elle sait se dessiner et donc ma recommendation serait d'envoyer le message depuis la méthode manoeuvrer() qui est appelée dès qu'un pavé est modifié (manoeuvre des aiguilles et signaux).

    cette solution proposée par Jay devra être associée aussi au click sur un bouton (à developper ! c'est en cours !) afin de pouvoir répondre à C1_V1, C2_V1 ou C3_V1 etc ... il y a 8 circuits prévu pour la gare et encore plus pour le triage.
    un bouton ne serait qu'un pavé comme un autre avec un dessin un peu différent. donc gérable avec la même approche, il enverrait un message différent

  12. #272
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par Jay M Voir le message

    un bouton ne serait qu'un pavé comme un autre avec un dessin un peu différent. donc gérable avec la même approche, il enverrait un message différent
    Bonsoir Jay,
    je sais faire un pavé avec une barre dedans, mais je planche sur le rond ... y a pas un truc "rounded" ou quelque chose comme ça ? avec 3 (ou 4) multiplié par Pi ? suis perdu !

    je vais devoir inclure aussi du texte à des endroits bien précis.

    Merci
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  13. #273
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Jacques

    Uns piste, pour tes boutons, charges la bibliothèque controlP5, il y a des exemples.

    Bonne soirée.
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  14. #274
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Citation Envoyé par Jsiorat Voir le message
    Bonsoir Jay,
    je sais faire un pavé avec une barre dedans, mais je planche sur le rond
    pas prévu dans le code d'origine.

    en faisant sans fioritures pour rester dans l'esprit du code

    dans l'onglet Paves, rajoutez à la fin du fichier une sous classe qui crée un pavé utilisant un dessin de cercle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class PaveCercle extends Pave {
      float cx=5, cy=5, r=5;
      int couleur=#0000FF; // BLEU
     
      PaveCercle() {
      } // constructeur
     
      void dessiner() { 
        fill(couleur); 
        pushMatrix();
        scale(1.0/ZOOM);
        circle(cx*ZOOM, cy*ZOOM, r*ZOOM); 
        popMatrix();
      }
     
      Pave manoeuvrer(boolean b) {
        if (couleur == #0000FF) couleur = #FF00FF;
        else couleur = #0000FF;
        return this;
      }
    }
    la méthode dessiner() ne fait que peindre un cercle d'une certaine couleur elle est appelée automatiquement si on a créé dans le TCO un pavé de ce type

    Quand on clique sur ce pavé, la méthode manoeuvrer() est appelée automatiquement et dans cette méthode j'alterne juste la couleur du rond entre BLEU (#0000FF) et Magenta (#FF00FF)

    Une fois ceci fait il ne vous reste plus qu'à déclarer dans le TCO que certains pavés continennent un PaveCercle, par exemple au début au lieu de sauter deux lignes, faites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void construire() { // PERSO 10 complet
    //==============================================================================    
        
        ajouter(new PaveCercle()); 
        alaligne();        // Ligne 2 
        alaligne();        // Voie 3 en haut ; Ligne 3
        espacer(1); 
    ...
    et vous verrez en lançant l'application que vous avez maintenant un cercle bleu dans la première case en haut à gauche
    Nom : bouton.png
Affichages : 83
Taille : 487,2 Ko

    et si vous clickez dans cette case le cercle alterne de couleur

    @JP:
    de la même manière que proposé ci dessous, il suffirait que cette méthode manoeuvrer() envoie sur le port série un message, vous voyez qu'elle connait la couleur courante et donc a tout ce qu'il faut pour envoyer un message d'activation ou de désactivation.

  15. #275
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Bonsoir Jay,

    merci pour le bouton !

    Là, je vais avancer vraiment !
    Dès que j'ai terminé, je mettrai un fichier .zip

    Je m'y attelle dès demain !
    Pas de jours chômés/fériés pour nous retraités !

    voici les dernières modifs du TCO

    Nom : MonTCO.JPG
Affichages : 90
Taille : 161,5 Ko

    J'aurais aimé avoir votre connaissance de ces langages, C++, Java et Processing.
    Je vous envie !

    Bonne soirée. Jacques
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  16. #276
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    cool

    Pour progresser rien ne vaut la pratique et essayer de faire des bouts de codes mais en cherchant à comprendre ce que l’on fait. En Java il faut comprendre quand même la notion de programmation orientée objet et donc lire des trucs à ce sujet (c’est aussi important en C++) et bien sûr regarder quelles sont les primitives du langage ainsi que sa grammaire.

    je vais devoir inclure aussi du texte à des endroits bien précis.
    si vous regardez dans votre code il existe déjà un Pavé de type texte, donc il suffit de l’instancier pour voir ce que ça donne. Je suis sur mobile maintenant donc je ne peux plus tester

  17. #277
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut @Jay M
    Bonjour Jay,

    Les expériences conduisent parfois à des erreurs, dont celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    class PaveCercle extends Pave {
       float cx=4, cy=4, r=6 ;
       int couleur=#0000FF ; // BLEU
       String nom; // nom sur le bouton                  /// AJOUTER PAR Jacques
     
       PaveCercle() {}    // constructeur
     
       void dessiner() {
         fill(couleur);
     
         pushMatrix();
         scale(1.0/ZOOM);
         circle(cx*ZOOM, cy*ZOOM, r*ZOOM);
         popMatrix();
     
         textSize(4*N);                                  /// AJOUTER PAR Jacques
         textAlign(CENTER,CENTER); textMode(SHAPE);      /// AJOUTER PAR Jacques
         text(nom,B+(x*9+4.5F)*N,B+(y*9+4.5F)*N);        /// AJOUTER par Jacques
     
       }
       /// AJOUTER par Jacques
      /*  
      String nom() { return nom; } // obtention nom du bouton
        void couleur(int c,boolean x) { couleur=c; cli=x; } // coloration fond de bouton
        int no() { return no; } // obtention numero du bouton
        boolean cli() { return cli; }
        //===========================
       */
       Pave manoeuvrer(boolean b) {
         if (couleur == #0000FF) couleur = #FF00FF;
         else couleur = #0000FF;
         return this;
       }
    "Unknown error inside the compiler" !
    J'ai omis quoi ? j'ai surtout de gros progrès à faire !!!
    Ça demande une correction par un maître !

    Avec mes remerciements, Jacques
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  18. #278
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Votre code utilise N
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         textSize(4*N);                                  /// AJOUTER PAR Jacques
         textAlign(CENTER,CENTER); textMode(SHAPE);      /// AJOUTER PAR Jacques
         text(nom,B+(x*9+4.5F)*N,B+(y*9+4.5F)*N);        /// AJOUTER par Jacques
    qui n'est pas défini (ni B ni F d'ailleurs). il faudrait aussi modifier le constructeur pour qu'il accepte un texte en paramètre et le range dans votre String.

    Pourquoi vous vous embêtez à embarquer le texte dans le bouton alors qu'il existe un pavé texte. Si vous conservez la classe PaveCercle comme je l'avais définie et vous modifiez le TCO pour rajouter des pavés de texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      void construire() { // PERSO 10 complet
        //==============================================================================    
    
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C1 V1", 4, NOIR, 2, 0)); // texte, taille texte, couleur, ∆x, ∆y
        espacer(2);
    
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C2 V1", 4, NOIR, 2, 0)); // texte, taille texte, couleur, ∆x, ∆y
        espacer(2);
    
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C3 V1", 4, NOIR, 2, 0)); // texte, taille texte, couleur, ∆x, ∆y
    
        alaligne();        // Ligne 2 
    ...
    alors vous aurez directement à l'écran 3 "boutons" suivis par leur texte respectif. Je suppose que c'est cela que vous souhaitez faire.

    Nom : pave.png
Affichages : 78
Taille : 549,8 Ko

    si vous voulez que ce soit "plus dense" et que le texte tienne dans un seul pavé, il faut réduire la taille de la police et mettre un passage à la ligne dans le texte. Par exemple en mettant des pavés comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C1\nV1", 3, NOIR, 0, 0)); // texte, taille texte, couleur, ∆x, ∆y
        espacer(1);
     
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C2\nV1", 3, NOIR, 0, 0)); // texte, taille texte, couleur, ∆x, ∆y
        espacer(1);
     
        ajouter(new PaveCercle());
        ajouter(new PaveTexte("C3\nV1", 3, NOIR, 0, 0)); // texte, taille texte, couleur, ∆x, ∆y
    au début de la fonction construire(), vous aurez alors cette représentation (en mettant la taille de police à 2 ça sera plus compact dans le pavé mais plus difficile à lire)
    Nom : P2.png
Affichages : 177
Taille : 705,4 Ko

  19. #279
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour à vous

    J'ai fait des essais dans Processing, ça ne doit pas être pour moi! Je ne suis pas arrivé à "cerner" l'événement d'un clic sur une aiguille (ça c'est bon) tout en déduisant quel est la direction active.
    Pour la transmission vers l'Arduino, c'est ok.
    Je vais me concentrer sur le programme de l'Arduino et vous me transmettrez les commandes issues de Processing et je les traiterai dans l'Arduino.

    Jacques, une remarque concernant les boutons supplémentaires, toutes action sur ces boutons doit "passer" via Processus afin de mettre à jour l'affichage et, ensuite être envoyés à l'Arduino, par le même "chemin" qu'un click sur un pavé. Autrement il faudrait prévoir une procedure de feedback de l'Arduino afin d'aligner les informations des deux (Processing et Arduino)
    Je te fais une version Processing du programme, avec des MCP23017 pour gérer les ports des aiguilles. Faut-il quand même prévoir des ports en entrée pour d'éventuels boutons poussoirs?
    Dis-moi quelle configuration de l'Arduino tu veux.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  20. #280
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut @JP
    Salut JP,

    alors, même le dimanche ? et sous le soleil ?

    J'ai pu modifier le fichier PERSO.pde
    J'ai inclus un TCO pour la gare et un TCO pour le triage

    il faut que je mette en place les boutons nécessaires pour passer de l'un à l'autre sur les 3 TCOs et avec les conseils de Jay, ça ne devrait pas poser de problème.
    Il me faut, à moi débutant très inexpérimenté, le temps pour écrire et surtout comprendre ce que j'écris.

    Je t'enverrai le fichier complet dès que ...

    te souhaite une bonne journée !
    Cordialement, Jacques
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

Discussions similaires

  1. Requête pour effectuer une comparaison entre deux dates
    Par ktm26 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/04/2017, 08h49
  2. Effectue une soustraction entre deux dates
    Par messi1987 dans le forum Développement
    Réponses: 2
    Dernier message: 05/03/2015, 14h22
  3. [XL-2003] Faire une liaison entre deux tableaux sur 2 classeurs différents
    Par Katell dans le forum Conception
    Réponses: 1
    Dernier message: 22/01/2015, 18h04
  4. implementer une association entre deux classes uml en java
    Par tabbabi dans le forum Persistance des données
    Réponses: 8
    Dernier message: 19/04/2011, 19h39
  5. Réponses: 1
    Dernier message: 11/06/2009, 23h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo