Interfacer Arduino et P3D

Programmation LUA, Macros FSUIPC, logiciel LINDA
et codage en LUA des gauges Air Manager

Interfacer Arduino et P3D

Messagede hadrien » Sam 3 Nov 2018 12:18

Bonjour à tous,

Je ne sais pas si ce sujet a déjà été abordé, mais si oui, pourriez-vous me dire où et je supprime ma question.

J'ai pour projet de réaliser une partie d'une overhead panel pour mon PMDG 737. Je compte le matérialiser avec des cartes arduino et l'interfacer via Air Manager. J'ai tenté un test pour le switch des taxi lights mais je n'arrive pas à le faire fonctionner. Après plusieurs questions à Ralph de Sim Innovations (qui m'a orienté vers des tuto), je suis parvenu à un code lua sans bug mais qui ne fonctionne pas dans le jeu. Je vous poste ici trois images : la première comprend le texte de mon code, les autres sont deux photos de ma carte et du raccordement au switch. Quelqu'un voit-il où se trouve l'erreur ?

Je précise d'avance que je ne suis pas informaticien et un vrai débutant en électronique, donc pas très sûr de mes branchements. J'ai eu quelques cours de programmation pendant mes études, mais c'était sur le langage Perl.

Image 1 : script
[img][img]https://zupimages.net/up/18/44/wwt1.jpg[/img][/img]

Image 2 : montage (1)
[img][img]https://zupimages.net/up/18/44/67o8.jpg[/img][/img]

Image 2 : montage (2)
[img][img]https://zupimages.net/up/18/44/4snj.jpg[/img][/img]

Merci d'avance pour vos conseils,

Hadrien
Dernière édition par hadrien le Sam 16 Fév 2019 11:28, édité 1 fois.
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Sam 3 Nov 2018 21:36

Bonjour et bienvenue Hadrien

Première question bête: as tu activé l’option Enable broadcast dans PMDG?

Il faut rajouter la ligne suivante dans le fichier 737NGX_Options.ini
Sous la section SDK, à créer si elle n’existe pas.
Code: Tout sélectionner
[SDK]
EnableDataBroadcast=1


Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Sam 3 Nov 2018 22:34

Quelques remarques vite fait en regardant ton code:
Tu ne PEUX PAS configurer la position d’un switch hardware a partir d’une variable quelle qu’elle soit, comme tu essaies de le faire dans ta fonction dataref_callback(). Ça ne marche que dans dans un seul sens, tu lis la position du switch via l’Arduino et tu envoies une commande à FSX/PMDG.

Donc dans ton code la fonction callback() est fonctionnelle, l’autre datatef_callback() et le fsx_subscribe() sont inutiles.
En revanche dans la fonction fsx_event(), il faut envoyer une valeur 0 ou 1 en plus de l’événement.
Et l’appel à la la fonction callback par l’Arduino ne renvoie qu’un seul argument, pas deux... lunettesnoires

Au niveau hardware, la deuxième broche de ton inter doit être connectée a la pin D3 de l’arduino, celle du milieu est bien à la masse. Il manque donc un fil!
A noter également que tu utilises une Arduino Mega 2560, donc le hardwareId est différent.

Donc tu devrais avoir plutôt quelquechose comme ça :
Code: Tout sélectionner
function callback_taxi_lights(position)
If position==1 then
    fsx_event(“PMDG 737NGX:EVT_OH_LIGHTS_TAXI”,1)
else
    fsx_event(“PMDG 737NGX:EVT_OH_LIGHTS_TAXI”,0)
end
end

hw_switch_add("ARDUINO_MEGA2560_A_D2”,”ARDUINO_MEGA2560_A_D3”,callback_taxi_lights)


Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Interfacer switch Arduino et P3D

Messagede lolosimule » Sam 3 Nov 2018 23:35

hadrien a écrit:raccordement au switch. Quelqu'un voit-il où se trouve l'erreur ?

bonsoir, Hadrien

pour moi . . . le branchement et correct
il y a deux solutions
1- il faut juste activer par "soft" la resistance (pull/up) interne de l'Arduino.
de l'entrée que tu veux lire . . . ici D3 !
2- si non, il te manque une résistance de charge entre le +5v et l'entrée D3
pour que ton niveau passe de +5v à 0v
Avatar de l’utilisateur
lolosimule
 
Messages: 1177
Inscription: 1/05/16

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Dim 4 Nov 2018 10:44

Bonjour,

Je viens de tester la solution proposée par JacquesZ. Tout fonctionne à merveille, merci JacquesZ ! Je vais pouvoir bricoler mes switchs.

J'ai encore une question. Si je veux construire mon overhead. Dans AirManager, il vaut mieux faire 1 script par bouton ou je dois faire 1 script pour tout l'overhead, en mettant tous les boutons et toutes les Arduino dans le même script de code ? En gros, il vaut mieux un seul énorme script ou tout plein de petits, avec par exemple un pour les taxi lights, un autre pour les landing lights, un autre pour les logo lights, ...

Merci encore pour votre aide précieuse, j'y serais pas arrivé seul.

Hadrien
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Lun 5 Nov 2018 00:29

Content que ca aie marche du premier coup, car j’avais pas teste, étant loin de mon PC.
Pour ta question, j’ai pas trop de recul car l’Arduono sous AM est une fonction récente, mais j’imagine qu’un gros script sera plus facile à maintenir qu’une multitude de petits.A toi d’utiliser les commentaires en Lua pour bien structurer tout ça.

De plus il te faudra intégrer le fait que certains switches sont dépendants de la position d’autres (a commencer par la batterie et/ou la gêne électrique), donc ce sera plus facile d’avoir des variables d’etat Communes dans un script unique, plutôt que des scripts séparés qui devraient communiquer entre eux(ce qui est possible via les variables d’intercommunicatiob)

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Lun 5 Nov 2018 22:07

Merci JacquesZ pour tous tes conseils. J'essaierai ça la prochaine fois que je serai en congé.
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Mar 4 Déc 2018 21:53

Bonsoir à tous,
Je reviens vers vous car j'ai un autre soucis de programmation. Je souhaite réaliser l'interrupteur des exit emergency lights. J'ai un switch on-off-on. Je souhaite programmer pour pouvoir ouvrir et fermer le light guard et actionner l'interrupteur en même temps. Voici mon code lua mais je n'ai que la commande d'ouverture et de fermeture du guard qui s'actionne dans P3D. Il n'exécute pas celle qui correspond à l'interrupteur des emergency lights. Pouvez-vous m'aider ? En gros, ne sont exécutées que les premières lignes du if et du elseif. Le reste est inactif.

function callback_emer_exit_lights (position)
if position == 1 then
fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_GUARD",1)
fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_SWITCH",0)

elseif position == 2 then
fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_GUARD",1)
fsx_event("MDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_SWITCH",2)

else
fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_GUARD",0)
fsx_event("MDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_SWITCH",1)
end
end

hw_switch_add ("ARDUINO_MEGA2560_A_D2", "ARDUINO_MEGA2560_A_D3", callback_emer_exit_lights)
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Dim 9 Déc 2018 21:35

Bonsoir,
Personne n'a une petite idée pour mon programme ? Car je patauge un peu là. Je ne suis pas informaticien.
Merci d'avance,
Hadrien
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Lun 10 Déc 2018 10:30

Les deux événements à la suite, ça doit peut-être être trop rapide et sûrement bloquer quelquepart.
Faire faire deux actions quasi simultanées liées au même switch n’est peut-être pas une bonne idée.
Si ton instrument est hardware seul, laisses tomber la première partie et maintiens le switch guard ouvert en permanence.

Essaies de faire des instruments tests avec chaque événement pris individuellement pour voir si ça fonctionne bien déjà.
Si oui, peut-être rajouter une temporisation avec un timer?
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Suivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron