[DCS World] Personnaliser ses commandes (pitbuilders)

Fabrication de cockpit et divers ( palonnier , panels ..) c est ICI
Avatar de l’utilisateur

Topic author
ergo
Webmaster
Webmaster
Messages : 14518
Inscription : 27 avril 2008

[DCS World] Personnaliser ses commandes (pitbuilders)

#1

Message par ergo »

Problématique

Avec les interrupteurs 3 positions un problème de taille réside dans le fait que la position central ne correspond à rien.

Avant tout regardons comment est faire un interrupteur 3 positions. Ils sont généralement composé de 3 pattes AC, A1 et A2.

[L’extension « bmp » a été désactivée et ne peut plus être affichée.]

[/align]

En position "haute", AC et A1 sont reliées, en position basse AC et A2 sont reliées et en position médiane AC, A1 et A2 sont ouverts.

Comment faire alors pour "câbler" une commande sur la position médiane de l'interrupteur 3 positions alors que l'on a aucun signal ?

De même, dans le cas des interrupteurs stable (le levier reste en position) le circuit 1 ou 2 est actionné en continu, il ne faudrait pas que le simulateur interprète ça comme une répétition.

Ils existent milles façons de s'y prendre, mais je vais m'intéresser à la solution LeoBodnar et au simulateur DCS World.

Avec La carte LeoBodnar, les circuits sont simplement relier à la carte, et l'ordinateur ne connait que l'état d'un bouton, rien de plus.

Ici, je cherche à m'affranchir d'un logiciel de programmation supplémentaire, je souhaite exploiter directement les entrées de la carte. Ce que permet DCS, alors profitons en.

La théorie

En théorie, la solution est de détecter le changement d'état d'un circuit (d'ailleurs le circuit s'appel un "bouton" au sens de directX ... donc je parlerai de bouton). On parle alors d'activation sur front. le front montant c'est quand le bouton passe de l'état "non-pressé" à l'état "pressé" et inversement pour le front descendant.

Et sur DCS World il est possible de lancer une action sur front (montant ou descendant).

Il suffit donc de considérer l'action "Haut", "Milieu" et "Bas" de mon interrupteur 3 positions, puis de dire :
Sur front montant du bouton 1, j'actionne "Haut", sur front descendant, j'action "Milieu"
Sur front montant du bouton 2, j'actionne "Bas", sur front descendant, j'action "Milieu"

C'est simple, non ?

Et le tour est joué. Regardons en Pratique :

La pratique

Dans DCS, il faut utiliser les configurations des "inputs", il y a un fichier par périphérique, et un dossier "inputs" par module.
Prenons ici le module A-10C et concentrons nous sur le Master-Arm. (ARM-SAFE-SIMU)

J'ai branché ma carte LeoBodnar de façon à avoir : Bouton 1 de DirectX pour la position ARM et le Bouton 2 de DirectX pour la position SIMU.

Je vais créer un nouveau profil input. Pour ca, je vais dans le répertoire :
DCS World\Mods\aircrafts\A-10C\Input\A-10C\joystick\ (on change A-10C par le nom du module ... bien entendu)
et je crée un nouveau fichier texte, que je renomme Panel_Demo_C6.lua

Par défaut dans le fichier on va avoir :

Code : Tout sélectionner

function layout() return { -- Gestion du retour de force forceFeedback = { trimmer = 1.0, shake = 0.5, swapAxes = false, }, -- Synchronisation des interrupteur fullSync = true, -- Les commandes keyCommands = { }, -- Les axes axisCommands = { }, } end
Rapidement,

La gestion du retour de force, ne nous sert à rien, mais on laisse par defaut, pour éviter d'avoir une erreur de script (si le bloc n'est pas présent DCS pourrait ne pas aimer, dans le doute)

"fullSync" permet de définir si le periphérique prend en compte la synchronisation des positions au début du jeu. Lors que vous lachez la pause, et que vous avez activé l'option dans les paramètres de DCS, les périphériques qui ont le fullSync à true seront synchronisé. (les interrupteurs dans la simulation prendront la position des interrupteurs de vos panels).

Enfin "keyCommands" est LE bloc qui nous intéresse ici. Chaque ligne va définir l'action associé à un bouton. Pour ce faire, la ligne est de type :

Code : Tout sélectionner

{key1 = value1 , key2 = value2 },
vous pouvez répéter autant de fois que désiré le coupe "key = value". Sachant que certaine clé sont obligatoire et d'autre non.

name (obligatoire) : définie le nom de la commande, si ce nom n'existe pas par défaut, il est créé dans DCS au chargement du profil
categorie (obligatoire) : définie le nom de la catégorie associé à la commande, si ce nom n'existe pas par défaut, il est créé dans DCS au chargement du profil
combos : défini la combinaison de boutons/touches à détecter
up : action a déclencher au moment ou l'on relâche le bouton (front descendant)
down : action a déclencher au moment ou l'on appuie sur le bouton (front montant)
pressed : action a déclencher quand le bouton est en position basse (appuyé)

La liste des actions se retrouve dans le fichier de profil par défaut (qui est utilisé pour générer le tableau d'option de DCS) :
\DCS World\Mods\aircrafts\A-10C\Input\A-10C\joystick\default.lua
Il faut fouiller un peu dedans, mais on retrouve tous.

La liste des boutons c'est assez simple :
JOY_BTN1 à JOY_BTN32 pour les 32 boutons
JOY_BTN_POV1_L, JOY_BTN_POV1_R, JOY_BTN_POV1_U, JOY_BTN_POV1_D, JOY_BTN_POV1_UL, JOY_BTN_POV1_DL, JOY_BTN_POV1_UR, JOY_BTN_POV1_DR pour le controleur de point de vue (U : haut, D : bas, L : gauche, R : droite)

Ce qui donne pour mon interrupteur :

Code : Tout sélectionner

-- Position Master ARM { combos = {{key = 'JOY_BTN1'}} , down = iCommandPlaneAHCPMasterArm, up = iCommandPlaneAHCPMasterSafe, name = 'Master switch ARM/SAFE', category = 'Panel Demo C6' }, -- Position Master SIMU { combos = {{key = 'JOY_BTN2'}} , down = iCommandPlaneAHCPMasterTrain, up = iCommandPlaneAHCPMasterSafe, name = 'Master switch TRAIN/SAFE', category = 'Panel Demo C6' },
J'obtiens alors ce fichier là :

Code : Tout sélectionner

function layout() return { -- Gestion du retour de force forceFeedback = { trimmer = 1.0, shake = 0.5, swapAxes = false, }, -- Synchronisation des interrupteur fullSync = true, -- Les commandes keyCommands = { -- Position Master ARM { combos = {{key = 'JOY_BTN1'}} , down = iCommandPlaneAHCPMasterArm, up = iCommandPlaneAHCPMasterSafe, name = 'Master switch ARM/SAFE', category = 'Panel Demo C6' }, -- Position Master SIMU { combos = {{key = 'JOY_BTN2'}} , down = iCommandPlaneAHCPMasterTrain, up = iCommandPlaneAHCPMasterSafe, name = 'Master switch TRAIN/SAFE', category = 'Panel Demo C6' }, }, -- Les axes axisCommands = { }, } end
Il me reste à le charger dans DCS World, pour ca :

Je branche son périphérique avant de lancer DCS,
Je lance DCS
Je vais dans OPTIONS, puis CONTROLS.

Je me place dans la colonne qui correspond à mon périphérique (ici "BU....") puis je fais "LOAD PROFILE"
Screen_120831_153325.png
[/align]

Je sélectionne mon profil ... ca charge.
Screen_120831_153304.jpg
[/align]

Et là j'ai mon profil, bien chargé que je peux retrouver rapidement dans la liste :
Screen_120831_153320.png
Screen_120831_152750.png
[/align]


Bonne et longue configuration :)

Ergo.
Dernière modification par ergo le lun. janv. 25, 2016 2:19 pm, modifié 1 fois.
Tout travail mérite son dû, n'est-ce pas "Oui Oui" ?
(Vainqueur de la Boulet's Cup Démo Team C6 en 2011 et 2013)
[F.A.Q.] Bien paramètrer ses forums Checksix
Avatar de l’utilisateur

Cat
Pilote Philanthrope
Pilote Philanthrope
Messages : 10678
Inscription : 30 juin 2008

#2

Message par Cat »

Tu sais qu'il existe des interrupteurs ON ON ON ? :)
Image

Core i5-4690K @ 3.5 GHz - 8Go RAM - Carte graphique GTX 970 - (Cougar + FSSB) - TPR - W10 64bits sur SSD - EdTracker - Un pit
Avatar de l’utilisateur

Topic author
ergo
Webmaster
Webmaster
Messages : 14518
Inscription : 27 avril 2008

#3

Message par ergo »

Oui, mais j'ai pas réussi à en trouver à pas trop cher. Et comme le Warthog utilise des interrupteur ON-OFF-ON ou (ON)-OFF-ON je me suis dit que c'était faisable de faire avec.

Puis ca peut servir aussi pour faire sa config perso sur DCS ;)
Tout travail mérite son dû, n'est-ce pas "Oui Oui" ?
(Vainqueur de la Boulet's Cup Démo Team C6 en 2011 et 2013)
[F.A.Q.] Bien paramètrer ses forums Checksix
Avatar de l’utilisateur

icemaker
Gardien du temple
Gardien du temple
Messages : 4106
Inscription : 04 août 2001

#4

Message par icemaker »

Ergo as tu travaillé sur les encodeurs rotatifs?
Je galère avec la carte bodnar sur les encodeurs car dans DCS c'est la durée de l'impulsion qui détermine la valeur de la modification, du coup la précision est pas top.
Je voudrais modifier le script pour que ce soit une impulsion fixe pour plus de facilité
Image
Image
Image
Avatar de l’utilisateur

Topic author
ergo
Webmaster
Webmaster
Messages : 14518
Inscription : 27 avril 2008

#5

Message par ergo »

icemaker a écrit :Ergo as tu travaillé sur les encodeurs rotatifs?
Je galère avec la carte bodnar sur les encodeurs car dans DCS c'est la durée de l'impulsion qui détermine la valeur de la modification, du coup la précision est pas top.
Je voudrais modifier le script pour que ce soit une impulsion fixe pour plus de facilité
Faudrait que je me penche sur le système des encodeurs. Aujourd'hui j'en ai pas sur mon panel.

Une question quand même, tu les as brancher comment tes encodeurs ? (Je comprend pas l'histoire de durer d'impulsion)
Tout travail mérite son dû, n'est-ce pas "Oui Oui" ?
(Vainqueur de la Boulet's Cup Démo Team C6 en 2011 et 2013)
[F.A.Q.] Bien paramètrer ses forums Checksix
Avatar de l’utilisateur

icemaker
Gardien du temple
Gardien du temple
Messages : 4106
Inscription : 04 août 2001

#6

Message par icemaker »

En faite c'est tout simple, sur la carte leo bodnar tu branches l'encodeur (3 pattes) en branchant celle du mileu (commun) sur le GND de ta première entrée ensuite tu branches la première patte sur le B1 (pa'r exemple) de ta carte et la dernière patte sur le B2, les boutons doivent impérativement se suivre. ensuite dans le configurateur de la carte bodnar tu indiques que les boutons B1 et B2 sont branchés à un encodeur et tu donnes en bas du configurateur la durée de l'impulsion.
Le soucis dans DCS c'est que l'action sur le bouton rotatif dépend de la durée de l'impulsion. du coup si je baisse trop la valeur DCS ne voit pas toutes les impulsions mais si je monte un peu trop les valeur, mes actions sur le rotary sont imprécises sur le simu.
Image
Image
Image

Ruahatu
Nouvelle Recrue
Nouvelle Recrue
Messages : 93
Inscription : 10 janvier 2008

#7

Message par Ruahatu »

Salut,

Je remonte le topic étant donné que je suis occupé de configurer quelques interrupteurs pour le UH notamment pour les Nav Light.

La syntaxe pour le UH est différente et ajoute des valeurs 0.0 ; 1.0 et -1.0

Code : Tout sélectionner

-- Ins Overhead panel (Верхняя панель) {down = device_commands.Button_13, cockpit_device_id = devices.NAVLIGHT_SYSTEM, value_down = 1.0, name = 'Nav Lights Dim/Bright', category = 'Ins Overhead panel'}, {down = device_commands.Button_2, cockpit_device_id = devices.NAVLIGHT_SYSTEM, value_down = 0.0, name = 'Nav Lights Off', category = 'Ins Overhead panel'}, {down = device_commands.Button_2, cockpit_device_id = devices.NAVLIGHT_SYSTEM, value_down = 1.0, name = 'Nav Lights Steady', category = 'Ins Overhead panel'}, {down = device_commands.Button_2, cockpit_device_id = devices.NAVLIGHT_SYSTEM, value_down = -1.0, name = 'Nav Lights Flash', category = 'Ins Overhead panel'}, {down = device_commands.Button_14, cockpit_device_id = devices.NAVLIGHT_SYSTEM, value_down = 1.0, name = 'Anti Collision Light On/Off', category = 'Ins Overhead panel'},
Comment transformer cela selon l'exemple d'Ergo.

Merci de votre aide, je suis nul en Lua :notworthy
Image Image Image
Avatar de l’utilisateur

FAB83
Nouvelle Recrue
Nouvelle Recrue
Messages : 3
Inscription : 23 août 2018

Re: [DCS World] Personnaliser ses commandes (pitbuilders)

#8

Message par FAB83 »

bonsoir, aujourd'hui le fichier defaut.lua n'a plus du tout la même structure. Y-t-il parmis vous des connaisseurs pour nous informer sur la procédure à appliquer pour permettre à un switch 2 positions de fonctionner avec la carte leo bodnar comme sur le cockpit ? merci de votre aide et bons vols...
Répondre

Revenir à « Cockpit & mod perso »