Interfacer Arduino et P3D

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

Re: Interfacer Arduino et P3D

Messagede JacquesZ » Mer 11 Sep 2019 17:54

Tu as bien mis à jour le plugin AM et tout ce qui va avec? Je veux dire le firmware de l’arduino?
https://siminnovations.com/wiki/index.php?title=Arduino#Installer

Jacques
Ma chaîne YouTube sur l’A320: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
i7 4770K, 16Go, 1To/SSD 500Go, GTX970,Win7, FSX
3 x 22" + 2 x TV 32"
Tdb:1x17" + 1x19",GNS430 Emuteq,FFB Yoke Brunner
Arduino MEGA+LeoBodnar
Avatar de l’utilisateur
JacquesZ
 
Messages: 2432
Inscription: 24/11/10

Re: Interfacer Arduino et P3D

Messagede hadrien » Mer 11 Sep 2019 18:15

J'ai mis à jour le plugin, qui en fait l'était déjà et j'ai réinstallé chaque arduino avec l'intaller.exe fourni sur le wiki de siminnovation. Il y a autre chose à faire ?

Merci pour la formule. Toutefois, mes aiguilles ne tombent pas juste, comme si la progression des servo n'était pas linéaire car quand je rentre manuellement la valeur 0 dans la console AM, l'aiguille va sur 0. Quand je rentre 80, elle va sur le 80. Mais quand je rentre 20 par exemple, elle n'avance que jusque sur le 10... Etrange...

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

Re: Interfacer Arduino et P3D

Messagede fab » Mer 11 Sep 2019 18:28

et quand tu rentres 40, l'aiguille va à mi-course ou pas ?
Avatar de l’utilisateur
fab
 
Messages: 3345
Inscription: 26/12/12

Re: Interfacer Arduino et P3D

Messagede hadrien » Ven 13 Sep 2019 09:47

Bonjour Fab,

Lorsque je rentre 40, l'aiguille tombe presque juste (elle doit pointer sur +- 38 sur ma jauge au lieu de 40), mais c'est bcp plus proche qu'un 20 qui s'arrête entre 10 et 15 sur la jauge... Tu as une idée de ce que ça peut être ?

Je viens également de tester la formule avec mes servo pour mes jauges de flaps. Je ne parviens pas à avoir une course régulière du moteur. Quand j'enclenche un niveau de flaps, l'aiguille bouge progressivement vers le stade suivant de la jauge mais de manière irrégulière. En fait, elle fait souvent d'abord un grand bond en avant puis finit sa course lentement jusqu'à s'arrêter à la bonne position. Voici le code utilisé pour les flaps :

Code: Tout sélectionner
function R_flaps_callback (Val)
   
   if Val == 0.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, 0.01)
   end
   
   if Val > 0.0 and Val <= 1.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.016-0.01)/1)*Val)+0.01)
   -- Flaps 1 = dutycycle 0.016
   end
   
   if Val > 1.0 and Val <= 2.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.0192-0.016)/2)*Val)+0.016)
   -- Flaps 2 = dutycycle 0.0192
   end
   
   if Val > 2.0 and Val <= 5.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.0232-0.0192)/5)*Val)+0.0192)
   -- Flaps 5 = dutycycle 0.0232
   end
   
   if Val > 5.0 and Val <= 10.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.027-0.0232)/10)*Val)+0.0232)
   -- Flaps 10 = dutycycle 0.027
   end
   
   if Val > 10.0 and Val <= 15.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.0313-0.027)/15)*Val)+0.027)
   -- Flaps 15 = dutycycle 0.0313
   end
   
   if Val > 15.0 and Val <= 25.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.0345-0.0313)/25)*Val)+0.0313)
   -- Flaps 25 = dutycycle 0.0345
   end
   
   if Val > 25.0 and Val <= 30.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.038-0.0345)/30)*Val)+0.0345)
   -- Flaps 30 = dutycycle 0.038
   end
   
   if Val > 30.0 and Val <= 40.0   then
   hw_output_pwm_duty_cycle(R_flaps_gauge, (((0.0415-0.038)/40)*Val)+0.038)
   -- Flaps 40 = dutycycle 0.0415
   end
end

R_flaps_gauge = hw_output_pwm_add("Flaps_R", 50, 0.01) -- Arduino mega I D5
fsx_variable_subscribe("PMDG 737NGX:MAIN_TEFlapsNeedle:2", "NUMBER", R_flaps_callback)


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

Re: Interfacer Arduino et P3D

Messagede fab » Ven 13 Sep 2019 11:01

Je n'ai pas analysé ton code, mais il faudrait voir si ce n'est pas la communication avec AM et l'arduino qui pose problème, essais un servo avec un arduino seul avec un bout de code test pour servo en t'inspirant de code sur internet comme ici :
https://projetsdiy.fr/piloter-servomoteur-arduino/

ou celui-ci

Code: Tout sélectionner
#define SERVO_PWM 9
#define SERVO_PERIOD (20000)

int pwm = 1500;

void setup() {
  Serial.begin(115200);
  pinMode(SERVO_PWM, OUTPUT);
}

void loop() {
  if (Serial.available()) {
    pwm = Serial.parseInt();
  }
  digitalWrite(SERVO_PWM, HIGH);
  delayMicroseconds(pwm);
  digitalWrite(SERVO_PWM, LOW);
  delayMicroseconds(SERVO_PERIOD - pwm);
}
Avatar de l’utilisateur
fab
 
Messages: 3345
Inscription: 26/12/12

Re: Interfacer Arduino et P3D

Messagede hadrien » Ven 13 Sep 2019 11:15

OK Fab merci pour le conseil. Je verrai ça quand j'aurais du temps car je ne connais rien au langage arduino d'origine (j'ai directement attaqué avec AM comme intermédiaire entre mes cartes et P3D) et n'étant pas informaticien, ça va me demander pas mal de temps et d'énergie, ce qu'on a peu avec un petit bout de 2 ans...

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

Re: Interfacer Arduino et P3D

Messagede tabar57 » Ven 13 Sep 2019 13:08

Eh oui Hadrien, le problème c'est le temps et c'est vrai que notre passion est terriblement chronophage.
Si je peux me permettre un conseil de Papi, privilégie ton bout de chou ton simu ne grandira jamais aussi vite que lui

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.1 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 2979
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Interfacer Arduino et P3D

Messagede hadrien » Ven 20 Sep 2019 10:35

Bonjour à tous,

J'ai une nouvelle question, de programmation sur AM cette fois. Je vous explique mon soucis. Lorsque j'ai commandé mon kit EFIS, le fournisseur m'a fourni des boutons poussoirs avec, sauf que ce sont des momentané et non des maintenus (ce sont les petit carré gris, bouton noir et 4 pattes mais bipôles). Je voudrais donc savoir s'il y a une entourloupe logicielle pour en faire des maintenus, car la rangée de poussoirs en bas de l'EFIS fonctionne comme cela. Par exemple, une pression sur "TERR" active la vue du relief, et une nouvelle pression la déactive. Or, dans mon montage, pour garder la fonction "TERR" active, je suis obligé de maintenir le bouton appuyé. Y aurait-il une solution logicielle qui consisterait à dir à AM que quand le bouton renvoi 1, il regarde la position précédente et lance l'inverse. Ainsi, s'il reçoit 1 et que le "TERR" est inactif, alors il l'active. Et si jamais il reçoit 1 du bouton et que "TERR" est actif,alors il le désactive.

J'ai déjà un peu réfléchi à ça mais je parviens pas à demander à AM de lire le statut d'un event. J'arrive à demander à AM d'écrire une nouvelle valeur pour un event mais pas en lire une.

Merci pour votre aide,

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

Re: Interfacer Arduino et P3D

Messagede tabar57 » Ven 20 Sep 2019 11:30

Bonjour Hadrien,

AM ne lit pas le statut d'un event, il faut comprendre que c'est un event qui déclenche quelque chose (une fonction ) et cette fonction peut faire ce qu'on veut, lire , écrire, faire un calcul, ouvrir ou fermer un fichier etc.
Donc dans ton cas , un event va guetter l'appui sur le bouton et lancer une fonction qui basculera une variable d'un état On à un état Off à chaque appui.
Je ne me rappelle plus si tu utilise aussi Sioc ?

Voilà ....

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.1 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 2979
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Interfacer Arduino et P3D

Messagede JacquesZ » Ven 20 Sep 2019 12:13

hadrien a écrit:Bonjour à tous,

J'ai une nouvelle question, de programmation sur AM cette fois. Je vous explique mon soucis. Lorsque j'ai commandé mon kit EFIS, le fournisseur m'a fourni des boutons poussoirs avec, sauf que ce sont des momentané et non des maintenus (ce sont les petit carré gris, bouton noir et 4 pattes mais bipôles). Je voudrais donc savoir s'il y a une entourloupe logicielle pour en faire des maintenus, car la rangée de poussoirs en bas de l'EFIS fonctionne comme cela. Par exemple, une pression sur "TERR" active la vue du relief, et une nouvelle pression la déactive. Or, dans mon montage, pour garder la fonction "TERR" active, je suis obligé de maintenir le bouton appuyé. Y aurait-il une solution logicielle qui consisterait à dir à AM que quand le bouton renvoi 1, il regarde la position précédente et lance l'inverse. Ainsi, s'il reçoit 1 et que le "TERR" est inactif, alors il l'active. Et si jamais il reçoit 1 du bouton et que "TERR" est actif,alors il le désactive.

J'ai déjà un peu réfléchi à ça mais je parviens pas à demander à AM de lire le statut d'un event. J'arrive à demander à AM d'écrire une nouvelle valeur pour un event mais pas en lire une.

Merci pour votre aide,

Hadrien

Ben à priori, il te suffit de créer des variables booléennes à toi qui vont conserver le statut de chaque bouton. Exemple:

Code: Tout sélectionner
terr_switch_active=false

Pour le statut initial, il te faut consulter le dataref(et pas l’event) correspondant et le mettre a false ou true en fonction de l’etat du simu.

Ensuite lorsque tu capte un event button pressed(), dans ta routine de traitement tu utilisera les propriétés des booléens.
L’avantage d’un booléen c’est que c’est très facile à inverser avec la fonction not: not(true)=false et not (false)=true!
Code: Tout sélectionner
terr_switch_active=not terr_switch_active


Et voilà la variable est automatiquement inversée et ensuite tu gères en fonction de son nouvel état

Code: Tout sélectionner
if terr_switch_active==true then
...
else
..
end


J’espere que c’est clair

Jacques
Ma chaîne YouTube sur l’A320: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
i7 4770K, 16Go, 1To/SSD 500Go, GTX970,Win7, FSX
3 x 22" + 2 x TV 32"
Tdb:1x17" + 1x19",GNS430 Emuteq,FFB Yoke Brunner
Arduino MEGA+LeoBodnar
Avatar de l’utilisateur
JacquesZ
 
Messages: 2432
Inscription: 24/11/10

PrécédenteSuivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

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