Interfacer Arduino et P3D

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

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Lun 10 Déc 2018 10:57

Bonjour,
Merci Jacques pour ta réponse. Je vais ajouter un event pour maintenir les guard ouverts en permanence. Merci pour le conseil, je n'y avais même pas pensé.
Vous êtes supers !
Hadrien
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Mar 11 Déc 2018 22:17

hadrien a écrit:Bonjour,
Merci Jacques pour ta réponse. Je vais ajouter un event pour maintenir les guard ouverts en permanence. Merci pour le conseil, je n'y avais même pas pensé.
Vous êtes supers !
Hadrien


Merci Jacques, ça fonctionne nickel. Par contre, j'ai un autre soucis. Voici le code du même bouton. J'utilise en hardware un switch on-off-on. Le jeu prend bien en compte mon if et mon elseif, qui correspondent aux 2 on de mon switch hardware. Par contre, quand je passe sur la position du milieu, qui est mon off (et qui en principe devrait être pris en compte comme le else), il ne se passe rien et p3d ne change pas la position du bouton d'emergency lights pour le passer sur "armed" (qui est la position centrale). J'ai testé les lignes une par une et je suis sûr des chiffres de mes positions.
Je n'arrive pas à comprendre pourquoi il ne prend pas en compte le fait que les deux signaux sont coupés pour faire une action. D'autant plus qu'avec un switch à deux positions, avec une seule branchée sur une pin de l'arduino et la masse sur le ground, p3d place le switch du jeu sur off quand je passe sur la pin non reliée.

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


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

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

fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_GUARD",1)


hw_switch_add("ARDUINO_MEGA2560_P_D2", "ARDUINO_MEGA2560_P_D3", callback_emer_exit_lights)


Je ne sais pas si je me suis exprimé correctement, car je ne suis pas familier des termes techniques spécifiques en informatique.

Bonne soirée,

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

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Mer 12 Déc 2018 01:28

Ben là, faut debugger, cad savoir exactement ce que retourne le callback à chaque position de l’inter.
Donc rajouter une ligne
Code: Tout sélectionner
print(“Pos:”..position)

Au tout début de la fonction callback pour vérifier ce qui est retourné pour chaque position du switch.

Est ce que tu as vérifié que chaque évent pris individuellement fait bien ce qui est prévu, en créant un instrument de test?
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 » Mer 12 Déc 2018 22:13

Ok je vais essayer ça.
J'ai vérifié les valeurs de l'event PMDG et je sais exactement ce que font le 0, le 1 et le 2. Le 0 passe les emergency lights sur off, le 1 sur armed, et le 2 sur on (je les ai testé avec une commande déclarée en-dehors de la fonction, pour l'obliger à l'exécuter dès le programme se lance et voir ce qu'il se passe ; exactement comme je le fais pour le light guard). Les deux positions extrêmes de mon switch hardware, qui correspondent aux conditions if et elseif marchent nickel. C'est juste quand je mets mon switch sur la position centrale que le jeu ne réagit pas.

Maintenant, un collègue m'a évoqué l'idée de ne pas utiliser la commande else, mais de plutôt la remplacer par ceci.

elseif position ~= 1 and position ~= 0 then
fsx_event("PMDG 737NGX:EVT_OH_EMER_EXIT_LIGHT_SWITCH",1)


Mais je n'ai pas encore eu le temps de tester cette option.

J'ai toutefois une question Jacques, quand j'utilise la fonction print, les éléments s'affichent où ? Dans le jeu ? Dans Air Manager ?

Merci encore,

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

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Jeu 13 Déc 2018 00:12

Il faut voir ce que retourne la valeur position pour chaque position du switch. Pour le print, elles s’affichent dans la console en bas dans l’onglet create/Edit d’AM
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 » Jeu 13 Déc 2018 17:06

J'ai testé avec le print. En fait, quand je place le switch sur la position off du centre, il ne renvoie aucune position. Il n'envoie quelque chose que quand je suis sur les positions on au-dessus (0) et en-dessous (1). Comment faire donc pour que le programme effectue une action quand aucune position n'est renvoyée? J'ai essayé avec le esleif position différente de 1 et 0, mais cela n'agit pas non plus. Je sèche là.

Penses-tu que je vais devoir changer le hardware ? J'ai des switch 3 positions à 3 pins en-dessous. Mais j'a vu qu'il existe des 3 positions à 6 pins. Quelle différence entre les 2 sortes ?


J'ai une autre question, concernant la programmation des potentiomètres. Voici mon code. L'ajout de hardware semble correct puisque Air Manager me revoie bien des valeur entre 0.0 et 1.0 lorsque je tourne le potentiomètre. Toutefois, je ne parviens pas à trouver la valeur que je dois mettre dans l'event fsx. Quelqu'un sait-il où je peux trouver ça et ce que je dois mettre ?

Voici mon bout de code :
function adc_input_change(value)
print("new value= " .. tostring(value) )
fsx_event("PMDG 737NGX:EVT_OH_PANEL_LIGHT_CONTROL")
end

hw_adc_input_add("ARDUINO_MEGA2560_C_A0", adc_input_change)


Enfin, j'ai une dernière question. Pour la programmation des leds de l'OVHD panel, comment faites-vous pour trouver les events qui correspondent à l'allumage ou l'extinction des leds ? Il n'y en a pas alors on triche avec des timers ? Ou il y a moyen de trouver les évènements d'ouverture des valves ou autres pour caler les réactions des leds dessus ?

Merci encore à tous,

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

Re: Interfacer switch Arduino et P3D

Messagede hadrien » Sam 22 Déc 2018 22:42

Bonsoir,
Quelqu'un a une idée pour ces quelques questions?
Merci d'avance,
Hadrien
hadrien
 
Messages: 95
Inscription: 30/10/18
Localisation: Seilles, Belgique

Re: Interfacer switch Arduino et P3D

Messagede JacquesZ » Dim 23 Déc 2018 12:13

Juste avec des bouts de code, ça va être compliqué.
De plus c’est un instrument qui nécessite 1 Arduino configuré de la même manière que toi pour fonctionner. Pas simple.
Zippes ton instrument en entier (le dossier complet avec ses sous dossiers avec un ID à rallonge) et postes le ici s’il te plaît.

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 » Dim 23 Déc 2018 12:27

Pour afficher sur des leds les états de voyants PMDG, il faut pouvoir lire des états du simu PMDG, ce ne sont plus des « Events », mais des LVars. On utilise fsx_variable_subscribe et fsx_variable_write si nécessaire
http://siminnovations.com/wiki/index.php?title=Fsx_variable_subscribe

http://siminnovations.com/wiki/index.php?title=Fsx_variable_write
Pour la liste des Lvars PMDG:
http://siminnovations.com/wiki/index.php?title=PMDG_737NGX_variables

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 » Dim 23 Déc 2018 20:58

Bonsoir,

Voici les fichiers demandés, à cette adresse (https://uptobox.com/e7r1f9lgva2v). Les potentiomètres se trouvent dans la partie "Niveau 5", en fin de code, juste avant les déclarations des différents éléments hardware. J'ai laissé leur code dans l'état où j'en suis. A savoir que les branchements sont correct, je ne sais juste pas quoi mettre comme valeur dans le fsx_event.

Merci d'avance,

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

PrécédenteSuivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

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