Arduino et P3Dv4

Tout sur les cartes et la programmation des modules ARDUINO

Arduino et P3Dv4

Messagede A320 hérétique » Mar 7 Aoû 2018 18:04

Bonjour,

j'avais l'intention de piloter le trim de mon nouveau throttle (http://www.aircockpit.com/viewtopic.php?f=99&t=6175) avec un arduino et link2fs, mais je constate peurefrayé que link2fs et P3Dv4 (donc 64 bits), ça ne fait pas bon ménage ...

Je me trompe, ou y a-t-il moyen de contourner la chose ? j'ai juste besoin de récupérer la position du cône de trim, pour le reste pas de pb.

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Arduino et P3Dv4

Messagede PapaLima » Jeu 9 Aoû 2018 15:19

Bonjour

A l'époque de link2fs, çà n'existait pas mais maintenant on a AirManager (SimInnovations) qui permet de piloter une Arduino et de l'interfacer avec P3D4

Pour te faire une idée la doc est ici: https://siminnovations.com/wiki/index.php?title=Arduino

byeaffiche
Avatar de l’utilisateur
PapaLima
 
Messages: 814
Inscription: 14/04/16
Localisation: LFPG

Re: Arduino et P3Dv4

Messagede JacquesZ » Jeu 9 Aoû 2018 17:25

Il me semble avoir vu quelquepart une version 64bits de Link2Fs. Je vais chercher

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: Arduino et P3Dv4

Messagede JacquesZ » Jeu 9 Aoû 2018 17:37

Ah il me semblait bien aussi:
Link2Fs re-fonctionne semble-t-il maintenant avec P3Dv4.1 et FSUIPC5
Il faut installer la version «  RTM » de Simconnect qu’on trouve dans le répertoire Redist/Lib de P3D et lancer le fichier MSI.
Pas testé personnellement, mais validé par Jim, le créateur de Link2FS.

Source:
http://www.mycockpit.org/forums/archive/index.php/t-31624.html


Sinon la solution AM est prometteuse, j’ai fait quelques tests et ça marche bien, mais pas d’acces aux variables FSUIPC.
Seul l’accès aux LVars et commandes/variables Simconnect ou Datarefs XPlane est possible via AM, et ils n’ont absolument pas prévu d’interfacer Fsuipc dans l’avenir.

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: Arduino et P3Dv4

Messagede A320 hérétique » Jeu 9 Aoû 2018 17:51

Merçi à tous les 2.

Je viens de me plonger dans les bibliothèques LUA pour FSUIPC - je ne connais pas LUA mais j'ai l'impression que c'est à la fois pas compliqué, et une chose à connaitre - et je vois un "event.offset(offset, "type", "function name") ; si ce machin exécute bien "function-name" quand un changement affecte la variable derrière offset, y compris pour un offset de Jean-Luc (en l'occurrence 73AE), alors ça devrait le faire : transmission de la nouvelle valeur à Arduino, qui par ailleurs connait la position physique du trim, plus qu'à actionner le moteur pàp qui le fait tourner.

Bon, ça fait beaucoup de si, mais ça serait une formule un peu moins "usine à gaz" qu'en passant par link2fs ...

Je vous tiens au courant ...

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Arduino et P3Dv4

Messagede JacquesZ » Jeu 9 Aoû 2018 19:32

Il est certain qu’avec un programme Lua dans FSUIPC ce sera plus direct et plus rapide en termes d’execution, et prendra moins de ressources, mais ce sera plus complexe, car il faut tout réécrire, y compris l’interfacage avec l’Arduino. Il existe néanmoins plein de ressources et au pire Pete Dawson le créateur de FSUIPC ou d’autres te fileront un coup de main sur le forum FSUIPC.

Voici un exemple de code Lua Fsuipc qui récupère un script Link2FS chargé sur une Arduino
Pas simple.
Code: Tout sélectionner
----------------------------------------------------------------
----------------------------------------------------------------

Aircraft = "Radio"
ComPort = "COM3"
ConnectSpeed = 115200
HandShake = 0

MyComPort = com.open(ComPort, ConnectSpeed, HandShake)

if MyComPort == 0 then
ipc.display("Could not open Com Port ".. ComPort .. ": for ARDUINO",0,5)
ipc.sleep(2000)
ipc.exit()
else
ConnectText = "Using " .. Aircraft .." Module on " .. ComPort .. ": - " .. ConnectSpeed .. " - " .. " Locked and Loaded..."
ipc.display(ConnectText,1,10)
ipc.sleep(2000)
end
----------------------------------------------------------------
----------------------------------------------------------------

-- ## Functions

function BCDtoComStr (ComStr) -- COM frequency, 4 digits in BCD format.
ComStr = string.format("%04X", ComStr) -- A frequency of 123.45 is represented by 0x2345. Convert 0x2345 to a string "2345"
ComStr = "1" .. ComStr -- The leading 1 is assumed. So lets put it in
ComStr = string.sub(ComStr, 1, 3) .. "." .. string.sub(ComStr, 4, 5) -- Get the point

if string.sub(ComStr, 6, 6) == "0" or string.sub(ComStr, 6, 6) == "5" then
-- If ComStr ends in a 0 or a 5 then put an extra 0 on the end
-- eg: 123.45 = 123.450
ComStr = ComStr .. "0"
else
-- If ComStr ends in a 2 or a 7 then put an extra 5 on the end
-- eg: 123.47 = 123.475
ComStr = ComStr .. "5"
end
return ComStr -- Returns "123.450"
end

-- $$ Serial input

function GetSerialData(MyComPort, InputString, length)
InputString = string.sub(InputString, 0, string.len(InputString)-2) -- Drop cr & lf

--Radio

--Com1
if InputString == "A01" then -- COM_RADIO_WHOLE_DEC
ipc.control(65636,0)
end

if InputString == "A02" then -- COM_RADIO_WHOLE_INC
ipc.control(65637,0)
end

if InputString == "A03" then -- COM_RADIO_FRACT_DEC
ipc.control(65638,0)
end

if InputString == "A04" then -- COM_RADIO_FRACT_INC
ipc.control(65639,0)
end

if InputString == "A06" then -- COM_STBY_RADIO_SWAP
ipc.control(66372,0)
end
end


-- $$ Display Radio

function DisplayCom1 () -- Need to send '=x123.450'
Com1 = BCDtoComStr (ipc.readUW(0x034E)) -- COM1 frequency, 4 digits in BCD format. A frequency of 123.45 is represented by 0x2345. The leading 1 is assumed.
Com1sb = BCDtoComStr (ipc.readUW(0x311A)) -- COM1 standby frequency, 4 digits in BCD format. A frequency of 123.45 is represented by 0x2345. The leading 1 is assumed.
com.write(MyComPort, "=A" .. Com1)
com.write(MyComPort, "=B" .. Com1sb)
end


-- ## Events List

-- (handle, max, min, term, "function name")
event.com (MyComPort, 10, 0, 10, "GetSerialData") -- Com Port

--Radio
event.offset(0x034E, "UW", "DisplayCom1") -- Com1
event.offset(0x311A, "UW", "DisplayCom1") -- Com1 StandBy


Je pensais que tu utilisais déjà Link2FS d’où ma remarque...
La solution AM n’est pas utile pour toi si ce n’est que pour opérer le trim.

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: Arduino et P3Dv4

Messagede A320 hérétique » Jeu 9 Aoû 2018 21:05

Merci Jacques,
pour le coup, pas de soucis, c'est du simple, ma seule interrogation concerne la capture de l'évènement "changement de la position trim" ; je suis bien à l'aise avec les com arduino, , pas de mérite, ç'est du très basique (encore qu'un protocole de com, èlèmentairement, ça l'est aussi !), donc de ce côté je n'attends pas de difficultés (sur mon tour, j'ai 2 arduinos qui se causent façon commères du Sud ecroulerire ).

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Arduino et P3Dv4

Messagede gardan » Sam 11 Aoû 2018 10:51

Effectivement Michel un des avantages de Lua est de pouvoir intercepter un changement d'état ( offset ou LVars) provenant de l'avion. Donc la boucle est bouclé.
Michel
Avatar de l’utilisateur
gardan
 
Messages: 161
Inscription: 17/05/09
Localisation: TRETS (13)


Retourner vers Interface & logiciel ARDUINO





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité