Premier panel
Re: Premier panel
#26Bonjour,
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!
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
#27Ca 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.
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.
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Site web http://wwii.lfdm.free.fr/
Re: Premier panel
#28Oui 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
Bon je vais travailler un peu ce week sur mon problème
Cdt
Re: Premier panel
#29J'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
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
#30c'est que tu as une salade au niveau de tes else if
ils correspondent à tous les cas possibles et ne se cascadent pas :
cas pour AoaPosChangeValue=2 :
c'est 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
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
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
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;}
cas 4538 a 65535
c'est
Code : Tout sélectionner
else if ( AoaPosChangeValue > 4537){firstDigit=0;secondDigit=7;}
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;}
Bon courage
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Site web http://wwii.lfdm.free.fr/
Re: Premier panel
#31Les 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?
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
#32Mes changements dans les else if avec les && ne fonctionne pas ?
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Site web http://wwii.lfdm.free.fr/