2 Joysticks sur X-Plane

Oui sur Airbus les deux valeurs side stick s’additionnent (pas la moyenne) mais dans ce cas on a aussi un message audio « Dual input ».
Et il y a possibilité de désactiver le manche du voisin en appuyant sur le bouton rouge PA disconnect et en laissant appuyé plus de 3 secondes, avec un message audio « priority left/right » et les voyants de priorité sur le glare shield.

Si on laisse appuyé sur le bouton plus de 20 secondes (de mémoire), le sidestick opposé est désactivé jusqu’à la fin du vol.
Je regarde mon FCOM pour plus d’infos.

Jacques

Note: Attention le bouton rouge du stick sert aussi à déconnecter le PA et désactiver l’alarme associée, d’où le délai de 3 secondes nécessaire pour le changement de priorité. Pas simple à implémenter...
 
Dernière édition:
Bon j’ai vérifié.
- Somme algébrique des inputs si déflection de plus de 2 degrés (full left + full right=neutral) d’un sidestick. Dans la limite de déflexion Max d’un seul sidestick évidemment.
- le bouton rouge sert à donner « priority left/right » si maintenu plus de 3 secondes
- cette condition de priorité est maintenue si le bouton est pressé plus de 40 secondes (et pas 20 comme je le pensais) et on peut relâcher le bouton ensuite, l’autre stick est désactivé.
- Pour libérer la priorité et/ou reprendre la main de l’autre côté il faut ré-appuyer sur le bouton de n’importe quel sidestick.
- Le bouton rouge déconnecte au passage le PA dès qu’il est appuyé dans tous les cas.

Donc par défaut: somme algébrique, si l’autre pilote ne touche à rien tout va bien.
Pour le reste donc un timer à activer quelque part, pour les délais 3sec /40 sec

Jacques
 
Dernière édition:
Merci beaucoup pour ces précisions !

En cas d'urgence, si tu veux prendre les commandes, 3 secondes c'est super long !

Je garde la simplicité de la prise ce contrôle par appui sur un push préconisé par @JP31
 
Merci beaucoup pour ces précisions !

En cas d'urgence, si tu veux prendre les commandes, 3 secondes c'est super long !

Je garde la simplicité de la prise ce contrôle par appui sur un push préconisé par @JP31
Pas de soucis, par contre il faudra mettre cet inter push « planqué » quelque part sur le piédestal, puisque ça ne peut être le problème rouge dans ce cas, qui sert surtout à déconnecter le PA en temps normal.

Le plus simple est la somme algébrique permanente, car aucun besoin de problème dédié, mais plus complexe à implémenter, j’imagine.

A noter que c’est également la somme algébrique des commandes Tiller qui est utilisée pour le NWS mais j’ai pas vu de Take Over problème dans ce cas.

Pour le rudder et les pédales de freins, comme ils sont normalement connectés mécaniquement, c’est l’un OU l’autre, on va dire que le plus fort l’emporte comme tu l’as déjà implémenté par ailleurs.

Jacques
 
Dernière édition:
C'est vrai, je jeux ajouter un timer de 3 secondes avant basculement ... @JP31 me dira ce qu'il en pense ...
 
C'est vrai, je jeux ajouter un timer de 3 secondes avant basculement ... @JP31 me dira ce qu'il en pense ...
Il faut surtout que ça déconnecte le PA! Et dans ce cas de figure (transfert permanent), le délai devrait être de 40 secondes pour suivre la logique Airbus.
 
Dernière édition:
Cela restera un bouton de joystick exploitable dans Windows et assignable à ce que l'on veut .

Il faut voir dans ce cas si le retour d'information doit refléter le stick en fonction et resté enclenché ou simplement voir le bouton appuyé ?

Dans l'état, pour garder l'indication du basculement et savoir si le bouton est appuyé, il suffit de mettre 2 entrées boutons de la carte ensemble, l'un indiquant l'état du push, l'autre le stick en fonction ...
 
Le délai de 3 secondes peut paraître long, mais c’est dans le cas de « bat'aille » pour avoir les commandes.
Normalement il suffit pour le PM de dire « j’ai les commandes » pour que le PF relâche les commandes.
 
Cela restera un bouton de joystick exploitable dans Windows et assignable à ce que l'on veut .

Il faut voir dans ce cas si le retour d'information doit refléter le stick en fonction et resté enclenché ou simplement voir le bouton appuyé ?

Dans l'état, pour garder l'indication du basculement et savoir si le bouton est appuyé, il suffit de mettre 2 entrées boutons de la carte ensemble, l'un indiquant l'état du push, l'autre le stick en fonction ...
La logique du timer est aussi liée aux messages audio « dual input » et « priority left/right » plus aux voyants qui clignotent vert et rouge sur le glareshield. Je ne sais pas si c’est implémenté dans PROSIM, peut-être FMGS?
Probablement pas non plus dans FFA ou les autres simus Aerosoft, Toliss ou FSLABS.
 
Avec Prosim, pas besoin de ma carte il me semble, les 2 sticks sont pris en charge, le cas qui nous intérresse ici est pour l'utilisation avec Xplane

Petite question envoyée à la volée, est ce que quelqu'un à déjà branché 2 joysticks et 2 palonniers sur X-plane 11 ?
Je commence la partie droite du cockpit et cela m’embêterais de devoir repasser sur P3D........
Individuellement ils fonctionnent tous les deux mais les deux ne fonctionnent pas ensemble :poop: (chacun de son côté)
 
Ah ok
dans ce cas de figure, le plus générique serait probablement de faire une somme algébrique sur les axes deux par deux, sans se prendre la tête avec les problème, pour émuler aussi le tiller tant qu’on y est. Ce serait transparent pour XPlane, et fonctionnerait sur les addons précités, car je doute fort que le takeover soit implémenté chez eux.
Et transfert vocal des commandes!

Jacques
 
Ouhaaaaaa !!! c'est quoi ce forum de fous !!! avec des gens complètement dingues !!!! :oops::D:love:
Je pars quelques jours en déplacement en envoyant une "petite question" à la volée et en rentrant je trouve une carte faite rien que pour répondre à ma "petite question" à la volée (voir en mieux!) !!! un truc de dingue !!!
En tout cas merci à tous et surtout à toi Fab !!! :):):)
Je vais te commander ta carte même si cela me fais peur de démonter mes sticks :
- pour le côté gauche cela devrait aller c'est un A320 ACC il suffira de désouder la carte mais sur cette carte j'ai également branché un autre axe (celui du tiller et un poussoir (le Pedal Disconnect)......qui marche sur x-plane en plus !
-et pour mon côté droit cela me fais un peu plus peur, pour l'instant c'est un Hotas Warthog Thrustmaster et là cela me semble plus compliqué a adpter sur la carte de Fab
 
LoL ! De rien !

C'est vrai qu'il n'y a qu'a récupérer les fils qui vont aux potentiomètres, tu devrais y accéder facilement, ils sont souvent a la base du stick ...

Note que, si tu as des USB de libre, tu peux faire fonctionner toutes les cartes joystick en même temps, c'est juste une attribution d'axe différente à faire,

Je me pose une question : faut-il basculer l'axe de gouverne (rudder) de la même façon ?

Il reste 2 axes de libres sur la carte ... je pourrais les regrouper de la même façon ... qu'en penses-tu ?
 
Et quelle chose dans le genre "le plus fort des débattement des deux rudders gagne"est-il envisageable ?
 
Pour les freins, c'est ce que j'ai fait car ceux-ci vont dans un sens, pour les rudders c'est pas la meme chose. Le plus fort c'est celui qui appuiera a droite ou a gauche ?
Le plus simple c'est de faire comme pour le stick
 
Ca y est !!! après modif le j'ai réussi à faire fonctionner le script !
Un bouton sur chaque stick (ou sur un seul, ou ailleurs.....) pour basculer du CPT au FO et vis et versa (quand l'un est actif, lautre ne l'est pas). Il suffit de rajouter une ligne pour les rudders, une autre pour les freins droits, une autre pour le freins gauches,....)

Code:
-- numéros d'axe pour CPT (propre à chaque config)

L_axisPitch = 1

L_axisRoll  = 2



-- numéros d'axe pour le FO (propre à chaque config)

R_axisPitch = 50

R_axisRoll  = 51



function toggle_yoke()

    if(yoke_active~=1)

    then

        yoke_active=1

        -- activation CPT

        set_axis_assignment(L_axisPitch, "pitch", "reverse" ) --"normal" or "reverse"

        set_axis_assignment(L_axisRoll,  "roll", "reverse" )

        -- désactivation FO

        set_axis_assignment(R_axisPitch, "none", "normal" ) --"normal" or "reverse"

        set_axis_assignment(R_axisRoll,  "none", "normal" )

    else

        yoke_active=2

        -- activation FO

        set_axis_assignment(R_axisPitch, "pitch", "normal" ) --"normal" or "reverse"

        set_axis_assignment(R_axisRoll,  "roll", "normal" )

        -- désactivation CPT

        set_axis_assignment(L_axisPitch, "none", "reverse" ) --"normal" or "reverse"

        set_axis_assignment(L_axisRoll,  "none", "reverse" )

    end

end



-- stick actif préréglé avec 2 ...

yoke_active=2

-- ... appel de la fonction bascule, elle passera donc à Yoke 1 lorsque le script sera chargé initialement

toggle_yoke()



-- création de la commande

create_command("Mes commandes/bascule_yoke", "bascule entre yoke 1 et 2", "", "", "toggle_yoke()" )
 
Voilà voilà, entre les explications de Jackz, la carte de Fabien et le script je pense que l'on a fait le tour et que le sujet est clos...... :)
 
Parfait, je pense que c'est mieux ainsi, tu n'auras pas à démonter tes sticks !
 
Bon j'ai regardé avec FlywithLua pour sommer les deux valeurs d'input, le secret c'était bien d'utiliser le Dataref "joystick_override", et denvoyer les nouvelles valeurs de joystick voulues directement à XPlane avec les datarefs "yoke_pitch_ratio" et "yoke_roll_ratio".

Comme je n'ai pas 2 joysticks dans ma chambre d'hôtel, j'ai testé en additionnant la valeur du throttle et ça a l'air de fonctionner. Peux-tu essayer ce script avec tes deux sticks, s'il te plaît JP31?

Code:
-- Script d'addition des valeurs de 2 joysticks à la "Airbus FBW"
-- axis numbers for left yoke
L_axisPitch = 0
L_axisRoll  = 1
L_axisPedal = 3

-- axis numbers for right yoke
R_axisPitch = 50
R_axisRoll  = 51
R_axisPedal = 53


-- numéros d'axe pour CPT (propre à chaque config)
L_axisPitch = 1
L_axisRoll = 2

-- numéros d'axe pour le FO (propre à chaque config)
R_axisPitch = 50
R_axisRoll = 51
----------------------------------------------------------------------------
--Variable d'état: addition des deux joysticks
sum_up=1 -- par défaut

-- Override du Joystick en Roll et Pitch
dataref("pitch_override","sim/operation/override/override_joystick_pitch")
pitch_override=1
dataref("roll_override","sim/operation/override/override_joystick_roll")
roll_override=1
-- recupération des valeurs des deux joysticks
joystick_axis=dataref_table("sim/joystick/joystick_axis_values")-- Valeurs joystick lues par XPLANE (0-1.0)
-- Datarefs en écriture des nouvelles valeurs sommées (ce sont des ratios, donc conversion à faire).
dataref("Sum_pitch","sim/joystick/yoke_pitch_ratio","writable") -- valeurs remplacées (-1.0-1.0)
dataref("Sum_roll","sim/joystick/yoke_roll_ratio","writable")

function sum_inputs()-- addition des valeurs des deux joysticks
if sum_up then
    temp_Sum_pitch=(joystick_axis[R_axisPitch]+joystick_axis[L_axisPitch])
    if temp_Sum_pitch>0.99 then temp_Sum_pitch=1.0 end
    if temp_Sum_pitch<0.01 then temp_Sum_pitch=0.0 end
    Sum_pitch=temp_Sum_pitch*2-1 -- Conversion de 0-1.0 à ratio -1.0-1.0

    temp_Sum_roll=(joystick_axis[R_axisRoll]+joystick_axis[L_axisRoll])
    if temp_Sum_roll>0.99 then temp_Sum_roll=1.0 end
    if temp_Sum_roll<0.01 then temp_Sum_roll=0.0 end
    Sum_roll=temp_Sum_roll*2-1 -- Conversion de 0-1.0 à ratio -1.0-1.0
    end
end

do_every_frame("sum_inputs()")
Si ça fonctionne, je regarderai comment implementer les priorités droite/gauche avec un timer.
Merci

Jacques
 
Dernière édition:
Je viens de tester, alors:
-pas de conflit entre les 2 sticks dans le menu "joystick" de x-plane
-pas de mise en quarant'aine du script
- mais aucune influence du second (R_FO) sur le premier (L_CPT), en gros seul le (L_CPT) fonctionne...? et je ne vois paspourquoi, ton script à l'air d'avoir tout ce qu'il faut pour le calcul !
 
Oui c’est bizarre.
Tu es sûr des bons numéros de joystick et d’axe pour R & L?
Pour éviter toute ambiguïté tu peux supprimer cette partie-ci du script, prise sur ton code:

-- axis numbers for left yoke
L_axisPitch = 0
L_axisRoll = 1
L_axisPedal = 3

-- axis numbers for right yoke
R_axisPitch = 50
R_axisRoll = 51
R_axisPedal = 53

Right: full left et Left: full right devrait donner joystick centré normalement. A tester sur la page FCTL de l’ECAM SD

modifier aussi:
if sum_up then
Par :
if sum_up==1 then

Tu es sur quoi? FFA320?

Jacques
 
Dernière édition:
toujours pas plus avec if sum_up==1 then
par contre dès que j'enlève:
-- axis numbers for left yoke
L_axisPitch = 0
L_axisRoll = 1
L_axisPedal = 3

-- axis numbers for right yoke
R_axisPitch = 50
R_axisRoll = 51
R_axisPedal = 53

j'ai le message suivant qui apparait "attemp to perform arithmetic on a nil value" en rechargeant le script
 
toujours pas plus avec if sum_up==1 then
par contre dès que j'enlève:
-- axis numbers for left yoke
L_axisPitch = 0
L_axisRoll = 1
L_axisPedal = 3

-- axis numbers for right yoke
R_axisPitch = 50
R_axisRoll = 51
R_axisPedal = 53

j'ai le message suivant qui apparait "attemp to perform arithmetic on a nil value" en rechargeant le script
T'a pas enlevé les lignes qui suivent?
Code:
-- numéros d'axe pour CPT (propre à chaque config)
L_axisPitch = 1
L_axisRoll = 2

-- numéros d'axe pour le FO (propre à chaque config)
R_axisPitch = 50
R_axisRoll = 51
Ces dernières faut les garder!
 
Si mais je les ai remise..........
mais toujours rien de plus avec if sum_up==1 then au lieu de sum_up then
 
Ben si les numéros d’axes de joystick sont bon, je vois pas...
 
Pour avoir les numéros de Joystick précis, ils sont dans le fichier initial_assignements.txt situé dans le dossier racine de FlyWithLua

Code:
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --  FlyWithLua: SaveInitialAssignments.ini version 2.7.4 build 2018-10-04  -- --
-- --  The initial assignments are stored in this file. -- --- -- -- -- -- -- -- --
-- -- 8<  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

clear_all_axis_assignments()
set_axis_assignment( 0, "roll", "normal" )
set_axis_assignment( 50, "roll", "normal" )
set_axis_assignment( 51, "pitch", "normal" )
set_axis_assignment( 53, "yaw", "normal" )
set_axis_assignment( 76, "reverse 1", "normal" )
set_axis_assignment( 77, "speedbrakes", "normal" )
set_axis_assignment( 100, "flaps", "normal" )
set_axis_assignment( 101, "reverse 2", "normal" )
set_axis_assignment( 102, "throttle 2", "normal" )
set_axis_assignment( 150, "yaw", "normal" )
set_axis_assignment( 151, "right toe brake", "normal" )
set_axis_assignment( 152, "left toe brake", "normal" )
set_axis_assignment( 175, "yaw", "normal" )
set_axis_assignment( 176, "left toe brake", "reverse" )
set_axis_assignment( 177, "right toe brake", "reverse" )
etc...
 
Bon du coup j'ai testé le script avec Dataref editor et j'ai trouvé le bug, je pense:
override n'était pas déclaré en writable donc du coup le joystick n'était pas desactivé et FlywithLua ne prenait pas la main!
Désolé...
Code:
-- Override du Joystick en Roll et Pitch
dataref("pitch_override","sim/operation/override/override_joystick_pitch","writable")
pitch_override=1
dataref("roll_override","sim/operation/override/override_joystick_roll","writable")
roll_override=1

Ca devrait mieux marcher ce coup-ci!
 
Retour
Haut