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 8 Mai 2019 22:39

hadrien a écrit:Merci pour l'info !

J'ai encore deux questions :

1) Pour le MCP, pour la vertical speed, l'altitude et l'ias/mach, je vais avoir besoin d'écrans digitaux à 7 chiffres. J'ai vu qu'il existait des écrans surtout à 1, 2, 3, 4 ou 6 chiffres. Les autres étant plus durs à trouver. Je voulais savoir si je pouvais arriver à avoir 7 chiffres sr je combine un système à 4 chiffres assemblés et un autre à 3 chiffres ?

2) J'ai vu qu'il existe aussi des "petites cartes électroniques" (désolé, je ne connais pas le terme exact) sur lesquels on peut monter ces fameux écrans à chiffres. J'imagine qu'il est possible de combiner des écrans de 4 chiffres et 3 chiffres, à condition de les installer sur la même "carte" ? Et comment s'appelle exactement ce produit, histoire de savoir quoi chercher sur Aliexpress pour effectuer mon achat de matériel ?

En gros, que me faut-il pour pouvoir monter et faire fonctionner les écrans pour mon MCP ? Désolé pour ces questions peut-être idiotes ou basiques, mais je débute complètement sur Arduino et l'ajout d'écran digitaux est une première pour moi.

Merci d'avance,

Hadrien

Grosso modo pour les cartes 7 segment/8 digits toutes faites, il existe des cartes avec interface SPI et avec interface de type I2C pour connection avec Arduino. Mais une de tes contraintes est que si tu veux les piloter avec Air Manager (ce qui est une bonne idée) il te faut je pense uniquement des cartes à base de puce MAX7219.
Les cartes à base d’interface MAX7219 sont peu chères, Interface SPI assez simple (3fils+5V et GND), et tu peux en chaîner jusqu’a 8 avec la dernière version 3.5 d’AM. Prévoir une alim en 5V qui soit séparée de celle de l’Arduino pour piloter tes modules, mais avec une masse commune.
https://www.ebay.com/sch/i.html?_odkw=8+digit+led+display&_sop=12&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR0.TRC0.H0.X8+digit+led+display+max7219.TRS0&_nkw=8+digit+led+display+max7219&_sacat=0&ul_ref=https%253A%252F%252Frover.ebay.com%252Frover%252F1%252F711-53200-19255-0%252F1%253Fff3%253D4%2526toolid%253D11800%2526pub%253D5575287150%2526campid%253D5338067808%2526mpre%253Dhttp%25253A%25252F%25252Fwww.ebay.com%25252Fsch%25252Fi.html%25253F_odkw%25253D8%25252Bdigit%25252Bled%25252Bdisplay%252526_sop%25253D12%252526_osacat%25253D0%252526_from%25253DR40%252526_trksid%25253Dp2045573.m570.l1313.TR0.TRC0.H0.X8%25252Bdigit%25252Bled%25252Bdisplay%25252Bmax7219.TRS0%252526_nkw%25253D8%25252Bdigit%25252Bled%25252Bdisplay%25252Bmax7219%252526_sacat%25253D0%2526srcrot%253D711-53200-19255-0%2526rvr_id%253D1963979340610%2526rvr_ts%253D9944a77616a0a9c454147363ffcdd3e8

Seule contrainte, je pense que ces modules ont tous 8 digits au minimum.
Mais tu peux toujours cacher les digits inutilisés. Ou combiner les deux solutions (modules MAX et 8 digits), sachant qu’il te faudra 9 fils par digit individuel contre 3 fils seulement pour un module complet MAX7219 qui gère 8 digits (voire plus si tu chaînes plusieurs modules MAX entre eux)

L’interface directe avec des modules 8 segments va rapidement te bouffer toutes tes broches Arduino.

Une fois les connections faites, l’interface avec AM est l’histoire de deux/trois lignes de code seulement.
https://siminnovations.com/wiki/index.php?title=Hw_chr_display_add

Tu as aussi la solution à base de module HD44780, mais là c’est plus un écran LCD retroeclairé. L’avantage est que dans ce cas tu n’est pas limité aux chiffres tu peux aussi afficher des caractères, mais l’aspect de l’afficheur est différent de celui du vrai MCP.

Comme je suis aussi en pleine recherche pour mon FCU, j’etudie la question, mais perso je vais aller plus vers des petits écrans OLED pour avoir également l’affichage des symboles (mode managé) et des légendes spécifiques à l’Airbus. Mais là c’est plus compliqué puisque ces modules ne sont pas supportés en natif avec AM, il faut bricoler avec les fonctions message_port et utiliser des librairies dédiées et programmer l’Arduino avec l’IDE. J’en suis qu’au tout début.

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 Arduino et P3D

Messagede hadrien » Dim 19 Mai 2019 21:30

Bonsoir,

Je suis tombé sur ceci comme affichage led 7 segments https://fr.aliexpress.com/item/20pcs-0-36-0-36in-white-LED-Display-7-Segment-Digit-5bit-5-bit-Common-ANODE/32644502731.html?spm=a2g0w.search0104.3.336.17f51ac2PrO7av&transAbTest=ae803_4&ws_ab_test=searchweb0_0%2Csearchweb201602_8_10065_10068_319_317_10696_10084_453_10083_454_10618_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_321_322_10103%2Csearchweb201603_53%2CppcSwitch_0&algo_pvid=786a5129-31b6-4989-9fe9-d6aae9572114&algo_expid=786a5129-31b6-4989-9fe9-d6aae9572114-47

Mais je ne comprends pas tout au schéma de branchement. Vous pouvez sans doute mieux le comprendre que moi. Je voudrais savoir combien de ports Arduino je dois prévoir pour faire fonctionner cet affichage. Car il m'en faudrait 3 pour mon MCP. Pensez-vous que ce soit possible ? Et n'y a-t-il pas moyen de le coupler à ceci ?https://fr.aliexpress.com/item/10-pcs-lot-M74HC595B1-DIP16-IC-REGISTRE-D-CALAGE-8BIT-16-DIP-M74HC595B1R-M74HC595BI-M-74HC595/33011820939.html?spm=a2g0w.search0104.3.15.fcd4562fpecnBj&transAbTest=ae803_4&ws_ab_test=searchweb0_0%2Csearchweb201602_8_10065_10068_319_317_10696_10084_453_10083_454_10618_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_321_322_10103%2Csearchweb201603_53%2CppcSwitch_0&algo_pvid=c0453e97-5adc-4ae2-9e37-b256eb0d75ea&algo_expid=c0453e97-5adc-4ae2-9e37-b256eb0d75ea-2

Combien de ports Arduino pris par ce M74HC595 ? Est-ce facile à brancher et à programmer avec Air Manager ?

Merci pour vos éclaircissements,

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

Re: Interfacer Arduino et P3D

Messagede JacquesZ » Dim 19 Mai 2019 21:47

14 broches sur l’afficheur (7 et 7)=14 broches sur l’arduino. Ou plus exactement 13 broches, la #7 n’étant pas raccordée .
Chaque segment d’un 8 est contrôlé individuellement (7 segments numérotés de « a » à « g », plus le point décimal « dp »), soit 8 positions en tout, plus une broche pour indiquer quel des 5 chiffres de l’afficheur tu veux atteindre. Donc 8 +5=13 broches

Sur AM il y a possibilité d’attaquer des afficheurs individuels à anode commune, donc la réponse à ta première question est oui, tu l’utilisera de la même manière, seule la déclaration du circuit est différente par rapport à l’exemple du WIKI puisqu’ici tu as un afficheur à 5 digits au lieu de 4 (d’où le chiffre 5 et la broche en plus soit 13 au total dans l’exemple suivant)
Code: Tout sélectionner
display_chr_id = hw_chr_display_add("8SEGMENT", 5, "DIRECT_COMMON_ANODE", "ARDUINO_MEGA2560_A_D4", "ARDUINO_MEGA2560_A_D5", "ARDUINO_MEGA2560_A_D6", "ARDUINO_MEGA2560_A_D7",
                                    "ARDUINO_MEGA2560_A_D8", "ARDUINO_MEGA2560_A_D9", "ARDUINO_MEGA2560_A_D10", "ARDUINO_MEGA2560_A_D11", "ARDUINO_MEGA2560_A_D12", "ARDUINO_MEGA2560_A_D13", "ARDUINO_MEGA2560_A_D14", "ARDUINO_MEGA2560_A_D15","ARDUINO_MEGA2560_A_D16 »)

Avec une Arduino Mega, tu as encore de la marge pour au moins deux autres afficheurs de ce style, je pense.

Sinon tu as la solution d’afficheurs à base de MAX7219 qui va faire le multiplexage pour toi, tu va économiser grandement en fils pour le câblage et en prise de tête je pense.

https://siminnovations.com/wiki/index.php?title=Hw_chr_display_add
Pour ton 2e circuit, il n’est pas interfacable facilement sous AM, mais avec le message port, tu peux implémenter tes propres routines, mais c’est nettement plus compliqué.

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 Arduino et P3D

Messagede hadrien » Dim 19 Mai 2019 22:21

Ok merci Jacques. Le soucis avec le MAX7219, c'est que je ne trouve que dans une seule taille, qui est trop grande pour mon front panel que je viens de faire imprimer en 3D. Du coup je cherche des displays plus petit, plus proches de ceux de la réalité mais sans y mettre une fortune non plus. Si je n'y parviens pas, je pense que je vais redessiner le front panel via tinkercad puis le réimprimer. Plus j'y pense et plus je me dis que c'est finalement peut-être la moins mauvaise solution (et la moins coûteuse surtout). Qu'en penses-tu ?

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

Re: Interfacer Arduino et P3D

Messagede JacquesZ » Dim 19 Mai 2019 22:29

La j’ai vraiment pas d’avis tranché sur la question.
L’avantage du MAX7219 c’est que je crois que tu peux aussi gérer la luminosité, alors qu’avec des afficheurs 8 segments je ne sais pas si c’est possible sous AM

Comme indiqué précédemment perso je penche pour une solution à base d’afficheurs OLED miniatures en SPI, pour pouvoir afficher aussi les légendes et modes managed du FCU Airbus.

Mais j’ai pas commencé encore.


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 Arduino et P3D

Messagede hadrien » Sam 8 Juin 2019 22:51

Bonsoir,

J'ai finalement opté pour des max7219. J'utilise les cartes toutes faites avec les 8 digits. Le truc, c'est que j'ai disqué les digits à leds rouges, désoudés le reste et remplacé le tout par des digits blancs. Et cela fonctionne. Pour les 3 digits (heading et course sur le MCP), je vais souder directement sur une puce MAX7219 non montée sur une carte (que je n'ai pas trouvé à 3 digits). Ce sera peut-être un peu dégueu au niveau de câblage management mais bon, c'est pas visible...

Je reviens vers vous pour un soucis de code, je ne comprends pas ce qui ne va pas. Je cherche à récupérer la valeur de l'affichage de l'atltitude sur le MCP et la faire inscrire par mes digits hardware. Pour la première étape (la récupération de la variable), aucun soucis. Dans le code ci-dessous, je la stocke dans "value" et le print(value) me renvoie bien l'altitude en question. Le soucis est quand je dois passer à l'affichage. Dans mon code, j'indique value dans la commande d'affichae, mais AM renvoie un erreur en disant ceci : ERROR - logic.lua: Argument 'text(4)' in function 'hw_chr_display_set_text' is not a string, which is not allowed. Or, si je mets des guillemets autour de value, il tente de m'écrire "value" sur les display. Je suis un peu perdu car le wiki de siminnovation ne donne pas d'exemple pour l’inscription d'une variable, mais juste l’inscription d'un texte prédéfini avec des guillemets. Avez-vous une idée pour régler ce soucis ? Qu'est-ce que je n'ai pas vu ?

function altitude_display_callback (value)
print (value)
hw_chr_display_set_text(altitude_display, 0, 0, value)
end


altitude_display = hw_chr_display_add("MAX7219", 1, "ARDUINO_MEGA2560_P_D48", "ARDUINO_MEGA2560_P_D52", "ARDUINO_MEGA2560_P_D50")
fsx_variable_subscribe("PMDG 737NGX:MCP_Altitude", "NUMBER", altitude_display_callback)


Merci d'avance pour votre aide,

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

Re: Interfacer Arduino et P3D

Messagede JacquesZ » Dim 9 Juin 2019 00:09

Bonjour Hadrien

C’est simple, ce n’est pas lié à AM, mais plutôt à Lua, qui est très sympa et te l’explique (bon Ok, c’est en anglais grandsoleil ) dans son message d’erreur. Le 4e argument attendu par ta fonction d’affichage sur le 7219 est une chaîne de caractères (string). Non ce n’est pas un maillot de bain! chouettedoights

Or tu récupères un nombre (NUMBER) dans ton fsx_variable_subscribe(), nombre que tu transmets dans ta fonction dans la vriable locale « value », mais malheureusement hw_chr_display_set() attend une chaîne de caractères (string).

Donc il faut que tu convertisses ta valeur « value » en une chaîne de caractères pour pouvoir l’utiliser.
La fonction Lua string.format sert justement à ça.
Code: Tout sélectionner
str_value=string.format("%05i",value)

devrait faire le boulot en formattant ton nombre comme une chaîne de caractères selon le format qui va bien.

Le code de formatage "%05i"(les guillemets sont obligatoires) indique à Lua comment transformer le nombre stocké dans la variable « value »en une chaîne de caractères, qui sera présentée comme un nombre entier (un entier:i comme integer) d’exactement cinq caractères (cinq caractères:5), pour gérer des altitudes allant de 00000ft jusqu’a 99999ft, et de rajouter automatiquement des zéros devant si nécessaire (ainsi 1500ft devient 01500) (0:ajout de 0 de remplissage). Le % indique à Lua que les caractères qui suivent sont un code de formatage.

Il suffit d’utiliser ensuite la chaîne de caractère ainsi formatée « str_value » dans ta fonction hw_chr_display_set() pour que l’interpréteur Lua soit heureux, et que ton altitude soit toujours correctement formatée par la même occasion. lunettesnoires

Code: Tout sélectionner
function altitude_display_callback (value)
str_value=string.format("%05i",value)
print ( "Alt:"..str_value)
hw_chr_display_set_text(altitude_display, 0, 0, str_value)
end

altitude_display = hw_chr_display_add("MAX7219", 1, "ARDUINO_MEGA2560_P_D48", "ARDUINO_MEGA2560_P_D52", "ARDUINO_MEGA2560_P_D50")
fsx_variable_subscribe("PMDG 737NGX:MCP_Altitude", "NUMBER", altitude_display_callback)


Je te conseille de regarder la syntaxe de string.format en Lua qui est assez complexe et complète, mais très puissante, puisqu’inspiree du langage C. http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/LUA_Fonction_Chaine.html
Plus complet, mais en anglais:
https://www.gammon.com.au/scripts/doc.php?lua=string.format

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 Arduino et P3D

Messagede hadrien » Dim 9 Juin 2019 15:36

Bonjour Jacques,

Merci pour ta réponse rapide. J'avais bien compris que le soucis venait du fait que je ne renvoyait pas une chaîne de caractères, mais je ne savais pas comment faire la transformation. Pour des soucis esthétiques, j'ai toutefois enlevé les 0 de remplissage, je trouve ça moche ;-).

Un tout grand merci en tout cas, ça fonctionne nickel.

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

Re: Interfacer Arduino et P3D

Messagede hadrien » Jeu 13 Juin 2019 17:15

Bonjour à tous,

Dans le cadre de la réalisation de mes korries pour mon mcp, je suis confronté à un problème auquel je ne m'attendais pas et surtout que je ne comprends pas trop. Sans doute les cracs en informatique que vous êtes pourrez m'expliquer. Je cherche à brancher en parallèle deux leds de couleur, une blanche et un verte. Le branchement correct mais bizarrement, une seule led s'allume (sur mes 15 korries ce qui exclut l'erreur de soudure) au lieu des deux. Pourtant, je suis sûr d'avoir soudés les broches + ensemble et les - ensemble.

J'ai par ailleurs fait des test sur une breadboard et le résultat est le même. Toutefois, j'ai fait d'autres essais, et c'est là que les choses se compliquent au niveau de ma compréhension. Si je fais le même branchement avec deux leds blanches, ça fonctionne. Idem avec deux vertes. Je me suis donc dit que deux couleurs différentes ne sont pas compatibles (bien que ça me paraisse très étrange). J'ai donc testé avec une led jaune et une verte, et là, ça fonctionne aussi. N'y a-t-il que les blanches qui ne peuvent pas être "mélangées" à d'autres ?

Avez-vous déjà rencontré ce problème ? Et si oui, comment l'avez-vous réglé ? Car je suis en panne d'idée là.

Merci à vous,

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 7 invités