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

) 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!
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.
- 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.htmlPlus complet, mais en anglais:
https://www.gammon.com.au/scripts/doc.php?lua=string.formatJacques