Page 2 sur 2

Re: Premier panel

Publié : jeu. mars 22, 2018 9:50 am
par Hombre
Bonjour,

En fait j'utilise une sortie traduite avec analogWrite en une échelle qui va de 0 à 5 V sur un barregraphe. De ce signal j'aimerais afficher une valeur de 0 à 100 avec des afficheurs 7 segments. Mais entre l'arduino et les afficheurs je ne trouve pas le type de décodeur ou les circuits pour la mise en oeuvre?
Comme pour un vumètre; mais une lecture pas sur un galva mais sur des afficheurs!

Ou bien alors travailler avec mon analogWrite et le travailler dans une table dans arduino de façon à l'utiliser avec un Max7219. Je crois que c'est faisable!

Re: Premier panel

Publié : ven. mars 23, 2018 6:23 pm
par Vmf214
Ca m'a l'air compliqué, j'ai jamais utilisé d'analogWrite hors d'une bibliothèque toute faite.
Tu as déjà un composant et il attend du PWM ? Il va te falloir un expert ou un module plus simple.

Sinon le Max7219 à l'air chouette.

Re: Premier panel

Publié : sam. mars 24, 2018 7:54 am
par Hombre
Oui le max 7219 est superbe pour les digits 7 segments ou matrices. Mais à toi de realiser ton programme pour les faire fonctionner. J'ai pu réaliser pas mal d'afficheurs pour le 2000, commme les radios, l'INS et d'autres choses.
Bon je vais travailler un peu ce week sur mon problème
Cdt

Re: Premier panel

Publié : dim. mars 25, 2018 3:11 pm
par Hombre
J'ai repris ma partie auquel j'ai affecté un bargraphe pour l'AOA qui elle fonctionne bien. Puis je reprends "AoaPosChangeValue " pour l'affecter sur des afficheurs 7 segments. Le problème c'est que lorsque j'arrive dans le jeu en vol, je suis à une valeur dans l'avion inférieur à 07 AOA. Sur mon afficheur il affiche 07, normal mais il ne varie pas du tout lorsque je modifie l'angle de l'avion.
Ce que j'ai écrit me semble bon mais pourquoi la valeur 07 reste afficher et ne varie pas? Elle reste figer???

Tu as une idée

Voici


Code : Tout sélectionner

void onAoaPosChange(unsigned int AoaPosChangeValue) { unsigned int firstDigit; unsigned int secondDigit; analogWrite(sortieAnalogique, AoaPosChangeValue/77); if (AoaPosChangeValue == 0){firstDigit=0;secondDigit=0;} else if ( AoaPosChangeValue > 4537){firstDigit=0;secondDigit=7;} else if ( AoaPosChangeValue < 5242){firstDigit=0;secondDigit=7;} else if ( AoaPosChangeValue > 5243){firstDigit=0;secondDigit=8;} else if ( AoaPosChangeValue < 5897){firstDigit=0;secondDigit=8;} else if ( AoaPosChangeValue > 5898){firstDigit=0;secondDigit=9;} else if ( AoaPosChangeValue < 6552){firstDigit=0;secondDigit=9;} else if ( AoaPosChangeValue > 6553){firstDigit=1;secondDigit=0;} else if ( AoaPosChangeValue < 7208){firstDigit=1;secondDigit=0;} lc.setDigit(5,1,firstDigit,false); lc.setDigit(5,0,secondDigit,false); } DcsBios::IntegerBuffer aoaPosBuffer(0x6024, 0xffff, 0, onAoaPosChange);

Re: Premier panel

Publié : dim. mars 25, 2018 5:48 pm
par Vmf214
c'est que tu as une salade au niveau de tes else if :yes:
ils correspondent à tous les cas possibles et ne se cascadent pas :

cas pour AoaPosChangeValue=2 :
c'est

Code : Tout sélectionner

else if ( AoaPosChangeValue < 5242){firstDigit=0;secondDigit=7;}
qui est pris en compte, les autres else if ne seront pas testés et donc pas exécutés.

cas 4538 a 65535
c'est

Code : Tout sélectionner

else if ( AoaPosChangeValue > 4537){firstDigit=0;secondDigit=7;}
En gros ton code ne gère que les cas affichage 0 et 7 tout le temps.

Il faudrait que tu fasses une division pour arriver de suite à ton secondDigit ou alors tu fais des 'et' logique

Code : Tout sélectionner

if (AoaPosChangeValue == 0){firstDigit=0;secondDigit=0;} else if ( AoaPosChangeValue > 4537 && AoaPosChangeValue < 5242 ){firstDigit=0;secondDigit=7;} else if ( AoaPosChangeValue > 5243 && AoaPosChangeValue < 5897){firstDigit=0;secondDigit=8;} else if ( AoaPosChangeValue > 5898 && AoaPosChangeValue < 6552){firstDigit=0;secondDigit=9;} else if ( AoaPosChangeValue > 6553 && AoaPosChangeValue < 7208){firstDigit=1;secondDigit=0;}
Par contre la doc indique un renvoi de valeur de 0 a 65535, tu es sûr de tes plages entre 5898 et 6552 c'est bien 09 ?

Bon courage

Re: Premier panel

Publié : dim. mars 25, 2018 7:02 pm
par Hombre
Les 2 digits fonctionnent bien. pas de soucis pour ça.
Les valeurs prisent sont justes. Mais le problème comme tu l'as dit c'est qu'il s’arrête à la première valeurs!
Ou bien la carte ne peut lire des valeurs qui fluctuent trop vite?

Re: Premier panel

Publié : dim. mars 25, 2018 8:46 pm
par Vmf214
Mes changements dans les else if avec les && ne fonctionne pas ?

Re: Premier panel

Publié : dim. mars 25, 2018 8:48 pm
par Hombre
trouvé....