Annonce

Réduire
Aucune annonce.

Cockpit maison avec Arduino (comment faire) ?

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #1
    Envoyé par Lami Voir le message
    ...Tout ce que tu écris sur ce « barometer_setting » m'intrigue, je suis curieux de lire les conclusions de ton test de ce soir !...
    Pas fait le test, j'essaye ce soir.
    Envoyé par Lami Voir le message
    ...Je trouve regrettable qu'il n'y ait pas de bonne documentation et/ou livre en français ...
    Effectivement, dans le domaine de l'électronique et de l'informatique un bon niveau d'anglais technique est quasi indispensable. Moi je suis tombé dedans quand j'étais petit, je n'ai aucun mérite.

    PhM
    X-Plane 9.70 & 11.5r1 / W10 / AMD Ryzen 7 2700 / 8Go RAM / Sapphire R9 390 Nitro 8Go / Sapphire HD7870 GHz 2Go / Samsung LN40C530 / Oculus DK2 / LeapMotion / Saitek X56 / Thrustmaster Pendular Rudder

    Commentaire


    • #1
      Bonjour,

      Bon les problèmes du forum semblent réglés, bonne nouvelle !

      Là, je viens de tombe carrément dans un sac de nœuds (pour un débutant comme moi) !

      En voulant étendre les fonctions gérées par la télécommande. Par exemple, le bouton « Ignition » du Cirrus SF-50 a trois positions. Je voudrais utiliser deux boutons (plus un cran, moins un cran) au lieu de trois pour les trois positions (OFF, RUN et START) et voici le code préparatoire aux fonctions de gestion de ce bouton :

      Code:
      const int IgnitionPosition_OFF   = 0;// Associé à la commande sim/starters/shut_down
      const int IgnitionPosition_RUN   = 1;// Associé à la commande sim/engines/engage_starters
      const int IgnitionPosition_START = 2;// Associé à la commande sim/starters/engage_start_run
      Le problème c'est qu'il y a plusieurs types de boutons Ignition, je le découvre dans le fichier « DataRefs.txt », en tombent sur les lignes suivantes :

      sim/cockpit2/engine/actuators/igniter_on int[8] y boolean Igniter, on or off.
      sim/cockpit2/engine/actuators/auto_ignite_on int[8] y boolean De-ice switch, 0 or 1. De-ice - auto-ignition. This switch turns on a continuous ignition source in the engine to automatically relight it if there is a flameout.
      sim/cockpit2/engine/actuators/ignition_on int[8] y enum 0 = off, 1 = left, 2 = right, 3 = both
      sim/cockpit2/engine/actuators/ignition_key int[8] y enum 0 = off, 1 = left, 2 = right, 3 = both, 4 = starting
      Alors, ici, pour ne pas partir dans une mauvaise direction, j'aurais besoin des lumières et de l’expérience des anciens !

      Voici ou je me suis arrêté :

      Code:
      /*
      const int IgnitionPosition_off      = 0;
      const int IgnitionPosition_left     = 1;
      const int IgnitionPosition_right    = 2;
      const int IgnitionPosition_both     = 3;
      const int IgnitionPosition_starting = 4;
      */
      const int IgnitionPosition_OFF   = 0;// Associé à la commande sim/starters/shut_down
      const int IgnitionPosition_RUN   = 1;// Associé à la commande sim/engines/engage_starters
      const int IgnitionPosition_START = 2;// Associé à la commande sim/starters/engage_start_run
      
      int IgnitionNombreDePosition = 0;
      int IgnitionPosition = IgnitionPosition_RUN;
      
      //*****************************************************************************
      // FONCTION AjusterBoutonIgnitionPosition
      //*****************************************************************************
      int AjusterBoutonIgnitionPosition (int IgnitionPosition, int IgnitionNombreDePosition)
      {
        IgnitionPosition = IgnitionPosition + IgnitionNombreDePosition;
        if (IgnitionPosition < IgnitionPosition_OFF)
        {
          IgnitionPosition = IgnitionPosition_OFF;
        }
        else if (IgnitionPosition > IgnitionPosition_START)
        {
          IgnitionPosition = IgnitionPosition_START;
        }
        switch (IgnitionPosition)
        {
          case IgnitionPosition_OFF:
            EnvoyerCommandeX_Plane ("sim/starters/shut_down");
            break;
          case IgnitionPosition_RUN:
            EnvoyerCommandeX_Plane ("sim/engines/engage_starters");
            break;
          case IgnitionPosition_START:
            EnvoyerCommandeX_Plane ("sim/starters/engage_start_run");
            break;
          ;
        }
        return IgnitionPosition;
      }
      //*****************************************************************************
      Comme ce cas de figure est très répandu dans X-Plane (plusieurs variantes d'un même type d'équipement), pourquoi ne pas prendre ce cas pour apprendre à un nouveau comme moi toutes les démarches à suivre et respectés pour partir du bon pied et faire les choses dans les règles de l'Art !

      Vous, comment et quelles étapes feriez-vous pour programmer pour votre cockpit maison avec seulement deux boutons "switch" sur votre tableau de bord pour géré l'ensemble des types de boutons Ignition, qui ont de 1 à 4 options selon l'avion ?

      Dernier point, je constate que la commande « sim/starters/engage_start_run » pour la position « START » du bouton Ignition ne fonctionne pas. Après de multiples recherches dans le fichier « Commands.txt » et « DataRefs.txt », je ne trouve pas d'alternative, vous auriez une idée ou c'est un bogue ?

      Merci d'avance pour votre aide !

      L'ami René
      Tous pour un et un pour tous !
      L'ami René
      Tous pour un et un pour tous !

      Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
      Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

      Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
      Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

      Commentaire


      • #1
        Envoyé par PhM Voir le message
        Pas fait le test, j'essaye ce soir.
        ...
        PhM
        Bonjour PhM,

        À ce soir donc, ou quand cela te sera possible...

        Merci d'avance !

        L'ami René
        Tous pour un et un pour tous !
        L'ami René
        Tous pour un et un pour tous !

        Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
        Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

        Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
        Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

        Commentaire


        • #1
          J'oubliais Phm,

          Pour information, j'ai trouvé plus orthodoxe pour le bouton « Baro » :

          Code:
                  EnvoyerCommandeX_Plane ("sim/instruments/barometer_2992");
          //        EnvoyerDonneesX_Plane ("sim/cockpit/misc/barometer_setting[0]", float (29.92));
          L'ami René
          Tous pour un et un pour tous !
          L'ami René
          Tous pour un et un pour tous !

          Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
          Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

          Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
          Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

          Commentaire


          • #1
            Je suppose que tu souhaites gérer la clé" de démarrage
            avec
            sim/cockpit2/engine/actuators/ignition_key int[8] y enum 0 = off, 1 = left, 2 = right, 3 = both, 4 = starting
            C'est une dateref de type "enum"
            donc peut-être commencer par ça
            ex :
            Code:
            enum IGN_KEY_POSITION {
              IGN_OFF = 0,
              IGN_LEFT = 1,
              IGN_RIGHT = 2,
              IGN_BOTH = 3,
              IGN_START = 4
            };
            X-Plane 10
            En attente d'un ordinateur...

            Commentaire


            • #1
              Bonjour Thierry,

              Merci pour ton aide !

              Je ne suis pas sûr de comprendre « C'est une dateref de type "enum", donc peut-être commencer par ça ».

              Disons que je définis :

              Code:
              enum IgnitionPositionChoix
              {
                IgnitionPosition_off      = 0,// sim/starters/shut_down
                IgnitionPosition_left     = 1,// ? 
                IgnitionPosition_right    = 2,// ?
                IgnitionPosition_both     = 3,// ? sim/magnetos/magnetos_both
                IgnitionPosition_starting = 4// sim/starters/engage_start_run
              };
              Quelle position prend la commande « sim/engines/engage_starters » ?

              Et quelle commande pour :

              Code:
                IgnitionPosition_left     = 1,// ? 
                IgnitionPosition_right    = 2,// ?
                IgnitionPosition_both     = 3,// ? sim/magnetos/magnetos_both
              Cela ne solution pas le cas ou par exemple de suis dans un Cirrus SF-50, les trois positions de Ignition sont (OFF, RUN et START).

              Il y a d'autres avions qui n'ont qu'une option « Starter », etc. Mes restons avec les cas de 3 ou 5 positions pour Ignition, comment gérer c'est deux cas ?

              L'ami René
              Tous pour un et un pour tous !
              L'ami René
              Tous pour un et un pour tous !

              Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
              Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

              Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
              Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

              Commentaire


              • #1
                J'avais trouvé ce code, mais impossible de savoir où, mais toujours pour "teensy"
                Si ça peut t'aider, j'ai pas trop décortiqué je t'avouerai.

                Code:
                #include "Bounce.h"
                
                enum IGN_KEY_POSITION {
                  IGN_OFF = 0,
                  IGN_LEFT = 1,
                  IGN_RIGHT = 2,
                  IGN_BOTH = 3,
                  IGN_START = 4
                };
                 
                // button input pins
                const int Pin_IgnOff = 1;
                const int Pin_IgnRight = 2;
                const int Pin_IgnLeft = 5;
                const int Pin_IgnBoth = 9;
                const int Pin_IgnStart = 12;
                 
                Bounce ignOff = Bounce (Pin_IgnOff, 5);
                Bounce ignRight = Bounce (Pin_IgnRight, 5);
                Bounce ignLeft = Bounce (Pin_IgnLeft, 5);
                Bounce ignBoth = Bounce (Pin_IgnBoth, 5);
                Bounce ignStart = Bounce (Pin_IgnStart, 5);
                 
                FlightSimInteger ignPosition;
                FlightSimCommand engineStart1;
                 
                void setup() {
                  pinMode (Pin_IgnOff, INPUT_PULLUP);
                  pinMode (Pin_IgnRight, INPUT_PULLUP);
                  pinMode (Pin_IgnLeft, INPUT_PULLUP);
                  pinMode (Pin_IgnBoth, INPUT_PULLUP);
                  pinMode (Pin_IgnStart, INPUT_PULLUP);
                 
                  ignPosition = XPlaneRef("sim/cockpit2/engine/actuators/ignition_on[0]");
                  engineStart1 = XPlaneRef("sim/starters/engage_starter_1");
                 
                  pinMode (LED_BUILTIN, OUTPUT);
                }
                 
                void loop() {
                  FlightSim.update();
                 
                  ignOff.update();
                  ignRight.update();
                  ignLeft.update();
                  ignBoth.update();
                  ignStart.update();
                 
                
                  if (ignOff.fallingEdge()) ignPosition = IGN_OFF;
                  if (ignLeft.fallingEdge()) ignPosition = IGN_LEFT;
                  if (ignRight.fallingEdge()) ignPosition = IGN_RIGHT;
                  if (ignBoth.fallingEdge()) ignPosition = IGN_BOTH;
                  // engage starter using command as well as by moving key
                  if (ignStart.fallingEdge()) {
                    ignPosition = IGN_START;
                    engineStart1.begin();
                    digitalWrite (LED_BUILTIN, HIGH);
                  }
                  if (ignStart.risingEdge()) {
                    engineStart1.end();
                    digitalWrite (LED_BUILTIN, LOW);
                  }
                }
                X-Plane 10
                En attente d'un ordinateur...

                Commentaire


                • #1
                  En attendant des pistes et des conseils, voici pour les intéressés les sources et documents connexes en fichiers joints de ma version sans bogue la plus fonctionnelle.

                  Ou si cela peux vous inspirez ou vous aidez à m'aider !

                  L'ami René
                  Tous pour un et un pour tous !
                  TelecURC600Mega3.zip
                  Motorola-URC600 (avec texte 3).pdf
                  L'ami René
                  Tous pour un et un pour tous !

                  Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                  Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                  Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                  Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                  Commentaire


                  • #1
                    Envoyé par thierryhl Voir le message
                    J'avais trouvé ce code, mais impossible de savoir où, mais toujours pour "teensy"
                    Si ça peut t'aider, j'ai pas trop décortiqué je t'avouerai.
                    ...
                    Bonjour Thierry,

                    Je regarde ça avec attention.

                    Je t'en donne des nouvelles dès que j'ai fini d'analyser.

                    Merci !


                    L'ami René
                    Tous pour un et un pour tous !
                    L'ami René
                    Tous pour un et un pour tous !

                    Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                    Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                    Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                    Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                    Commentaire


                    • #1
                      Envoyé par Lami Voir le message
                      ...À ce soir donc, ou quand cela te sera possible...
                      Testé ce soir, dans un plugin en C++, ça fonctionne comme ça doit fonctionner. Donc si il y a problème celà vient de la version arduino des accès aux datarefs.

                      PhM
                      X-Plane 9.70 & 11.5r1 / W10 / AMD Ryzen 7 2700 / 8Go RAM / Sapphire R9 390 Nitro 8Go / Sapphire HD7870 GHz 2Go / Samsung LN40C530 / Oculus DK2 / LeapMotion / Saitek X56 / Thrustmaster Pendular Rudder

                      Commentaire


                      • #1
                        Bonjour PhM,

                        Merci pour la démarche et l'information ! Bizarre, je présume pourtant que le code utilise les procédures standard de X-Plane, car il n'y a pas d'utilisation de bibliothèque spécifique et intermédiaire entre X-Plane et l'Arduino, rien d'ésotérique, c'est uniquement des bibliothèques standards qui sont utilisées dans le code :

                        Code:
                        #include <Ethernet.h>
                        #include <EthernetUdp.h>
                        #include <SPI.h>
                        Est-ce que tu as trouvé une autre ligne dans le « DataRefs.txt » qui permet l'utilisation du « barometer_setting[0] » ?

                        Pour ce qui est du code source lui-même, il y a ce que j'appelle le tordage de bits, don je connaît et comprend le principe de fonctionnement, mais je ne maîtrise pas du tout cette technique, genre :

                        ...
                        char PaquetUDP_Donnees [501];
                        // Size of received packet.
                        int PaquetUDP_Taille;

                        // Unions permettent le même emplacement de mémoire auquel on doit accéder en
                        // tant que types de données différents.
                        // Dans ce cas-ci, comme des byte et lire comme float. Voir plus à :
                        // http://b58.svglobe.com/data.html
                        union
                        {
                        char ValeurFormat4Byte [4];
                        float ValeurFormat1Float;
                        } TemponComUDP;
                        ...
                        Et voici tout le code qui permet la communication Ethernet UDP (pas plus, pas moins) :

                        //************************************************** ***************************
                        // Déclaration des autres constantes de travail.
                        //************************************************** ***************************
                        // Constante pour la communication Ethernet adresses et ports :
                        // Adresse MAC de la carte Ethernet Arduino. À personnaliser.
                        byte ADRESSE_MAC [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE};
                        // Adresse IP de la carte Ethernet Arduino. Personnalisez la pour ne pas avoir
                        // à la modifier fréquemment dans l'onglet « Données » de X-Plane.
                        IPAddress ARDUINO_ADRESSE_IP (192, 168, 2, 14);
                        // Adresse IP de l'ordinateur maître qui exécute X-Plane. Vous la trouverez
                        // dans X-Plane - Paramètres - Connexions réseau, dans la troisième ligne.
                        IPAddress X_PLANE_ADRESSE_IP (192, 168, 2, 3);
                        // Port pour recevoir des données de X-Plane.
                        unsigned int ARDUINO_ADRESSE_UDP = 49001;
                        // Port pour envoyer des données a X-Plane.
                        unsigned int X_PLANE_ADRESSE_UDP = 49000;
                        //************************************************** ***************************
                        ...
                        //************************************************** ***************************
                        // Création en mémoire des objets pour les interfaces des périphériques.
                        //************************************************** ***************************
                        // Objet EthernetUDP pour envoyer et recevoir des paquets UDP.
                        EthernetUDP CarteEthernetUDP;
                        //************************************************** ***************************
                        ...
                        //************************************************** ***************************
                        // FONCTION EnvoyerCommandeX_Plane
                        //************************************************** ***************************
                        void EnvoyerDonneesX_Plane (char DonneesDeReference[], float Donnees_A_Communiquer)
                        // Send PaquetUDP_Donnees ( PaquetUDP_Donnees and ValeurFormat1Float)
                        {
                        int n = 0;
                        while (DonneesDeReference [n])
                        {
                        PaquetUDP_Donnees [n] = DonneesDeReference [n];
                        n++;
                        }
                        for (int i = n; i < 500; i++)
                        {
                        PaquetUDP_Donnees [i] = char (32);
                        }
                        CarteEthernetUDP.beginPacket (X_PLANE_ADRESSE_IP, X_PLANE_ADRESSE_UDP);
                        CarteEthernetUDP.write ("DREF0");
                        TemponComUDP.ValeurFormat1Float = Donnees_A_Communiquer;
                        for (int i = 0; i < 4; i++)
                        {
                        CarteEthernetUDP.write (TemponComUDP.ValeurFormat4Byte [i]);
                        }
                        CarteEthernetUDP.write (PaquetUDP_Donnees);
                        CarteEthernetUDP.endPacket ();
                        }
                        //************************************************** ***************************
                        // FONCTION EnvoyerCommandeX_Plane
                        //************************************************** ***************************
                        void EnvoyerCommandeX_Plane (char Donnees_A_Communiquer [])
                        {
                        CodeSituation = 50;
                        CarteEthernetUDP.beginPacket (X_PLANE_ADRESSE_IP, X_PLANE_ADRESSE_UDP);
                        CarteEthernetUDP.write ("CMND<");
                        CarteEthernetUDP.write (Donnees_A_Communiquer);
                        CarteEthernetUDP.endPacket ();
                        }
                        //************************************************** ***************************
                        ...
                        //************************************************** ***************************
                        // FONCTION SETUP = Code d'initialisation.
                        //************************************************** ***************************
                        void setup ()
                        ...
                        // Identification IP (par DHCP)
                        // Lancer la connexion Ethernet : DHCP
                        Ethernet.begin (ADRESSE_MAC);
                        Ethernet.begin (ADRESSE_MAC, ARDUINO_ADRESSE_IP);
                        CarteEthernetUDP.begin (ARDUINO_ADRESSE_UDP);
                        ...
                        Et l'utilisation de ce qui précède avec des lignes du genre :

                        Code:
                        EnvoyerCommandeX_Plane ("sim/instruments/barometer_2992");
                        EnvoyerDonneesX_Plane ("sim/cockpit/misc/barometer_setting[0]", float (29.92));
                        Tout cela me semble relativement "clean" et simple !

                        Évidemment, comment ces chaînes de texte sont traitées dans X-Plane me reste totalement opaque, mais je m'en suis qu'à ma deuxième semaine de programmation avec X-plane, alors ça peut se comprendre.

                        Mais pour toi, ce code doit te sembler simple ?

                        L'ami René
                        Tous pour un et un pour tous !
                        Dernière modification par Lami, 18 juillet 2014, 16h39. Motif: Correction de faute de frappe.
                        L'ami René
                        Tous pour un et un pour tous !

                        Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                        Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                        Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                        Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                        Commentaire


                        • #1
                          Envoyé par thierryhl Voir le message
                          J'avais trouvé ce code, mais impossible de savoir où, mais toujours pour "teensy"
                          Si ça peut t'aider, j'ai pas trop décortiqué je t'avouerai.
                          ...
                          Bonjour Thierry,

                          J'ai regardé ça avec attention.

                          Mon d'analyser me porte à penser que ce code est pour un unique modèle d'avion et cockpit maison, et je n'y trouve rien pour ce qui nous intéresse.

                          Mais ça lecture ne fut pas inutile et il n'y a pas de hasard, le mot anglais « fallingEdge » m'a fait penser au mot « fêlure » et cela m'a mi sur une piste.

                          Est-ce que dans X-Plane il y aurait une fonction de retour d'information en cas d'absence d'un objet dans un cockpit. Est-ce que je pourrais interroger X-Plane pour connaître le type ou le nombre d'options pour d'une composante de cockpit ?

                          La question est posée !

                          Autre question, mais connexe; je ne maîtrise pas la récupération des données de X-Plane par l'Ethernet UDP. Alors est-ce que tu connais une personne francophone qui travaille avec la communication Ethernet UDP et X-Plane, et idéalement Arduino ?

                          C'est que je m’apprête à reproduire l'affichage avec l'Arduino sur écran LCD, GLCD ou TFT de par exemple les fréquences radios (NAV1, NAV2, COM1, COM2, ADF1, ADF2), les paramètres du FMS (vitesse air, altitude cible, la V/S, le cap, etc.).

                          L'objectif est de ne plus avoir à afficher le fouillis des « Données entrée/Sorties » de X-Plane (dans le coin supérieur gauche de l'écran) ou de constamment devoir modifier notre point de vue dans le cockpit pour faire le tour des paramètres de vol et du FMS, etc.

                          En passant, les questions sont posées à tout le monde !

                          Merci d'avance !

                          L'ami René
                          Tous pour un et un pour tous !
                          L'ami René
                          Tous pour un et un pour tous !

                          Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                          Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                          Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                          Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                          Commentaire


                          • #1
                            Bonjour,

                            Est-ce que vous pourriez m'expliquer dans vos mots ce que veux dire « PULLUP for setting "High" when pin open (LOW when on the GND). », et dans ce contexte, est-ce qu'il y a une différence pour la carte Arduino entre GND (mise à la terre) et courant négatif ? En électricité, il y a bien une différence entre le fils négatif et le fils de la mise à la terre, non ?

                            Merci d'avance !

                            L'ami René
                            Tous pour un et un pour tous !
                            L'ami René
                            Tous pour un et un pour tous !

                            Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                            Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                            Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                            Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                            Commentaire


                            • #1
                              Bonjour,

                              Je viens de voir où se trouve le problème avec les données UDP qui peuvent changer sans préavis. J'en perçois maintenant la problématique et la complexité ! J'ai eu de la chance, jusqu'à maintenant je ne passais pas parte le tordage de ****s.

                              Cela m'amène à la question de savoir s'il existe un module d'extension "plug-in" pour avoir accès en claire (lecture/écriture) aux données de X-Plane avec les cartes Arduino (par port USD ou par carte Ethernet) et qui utiliserait les mêmes désignations des données que l'on retrouve dans le fichier « DataRefs.txt » ?

                              Avez-vous une solution a offrir ?

                              L'ami René
                              Tous pour un et un pour tous !
                              L'ami René
                              Tous pour un et un pour tous !

                              Ordi-1 : Intel i7-12700K 5GHz, RAM 128 Go, nVidia RTX 3080 10G, Téléviseur 55" 3840x2160, 3 écrans 1920x1080, Manettes Saitek X56.
                              Linux Debian 13, X11, X-Plane 12.4.4-b2, Little NavMap v3.0.18, pilote nVidia 550.163.1.

                              Ordi-2 : Intel i7-12700KF 5GHz, RAM 48 Go, Asus GeForce STRIX-GTX 1060 6G, 2 x Écran 1920x1080.
                              Linux Kubuntu 26.04, XHSI 2.0 Beta 12 Alfa 5, pilote nVidia 535.309.

                              Commentaire


                              • #1
                                Envoyé par Lami Voir le message
                                Bonjour,

                                Cela m'amène à la question de savoir s'il existe un module d'extension "plug-in" pour avoir accès en claire (lecture/écriture) aux données de X-Plane avec les cartes Arduino (par port USD ou par carte Ethernet) et qui utiliserait les mêmes désignations des données que l'on retrouve dans le fichier « DataRefs.txt » ?

                                Avez-vous une solution a offrir ?

                                L'ami René
                                Tous pour un et un pour tous !
                                C'est pour ça que je me suis tourné vers la carte teensy...
                                Sinon, pour toutes tes questions, ça dépasse un peu mes compétences...

                                en électricité, il y a le fil noir (masse ou -) et le fil rouge (+)
                                HIGH = ouvert donc reçoit du courant
                                LOW = fermé

                                Après "Low when on the ground) c'est dans quel contexte ?

                                Meilleur compréhension du falling ou rising edge en image.
                                Cliquez sur l'image pour la voir en taille réelle 

Nom : 		15-Debounce-falling-and-rising-edge.jpg 
Affichages :	1 
Taille :		52,1 Ko 
ID : 			457895
                                Dernière modification par thierryhl, 17 juillet 2014, 21h54.
                                X-Plane 10
                                En attente d'un ordinateur...

                                Commentaire

                                Chargement...
                                X