calcul math avec arduino

bonjour a tous

j'ai un projet en cours et je bloque sur un truc bête je reçoit les valeurs du jauge a vide ( TPR 280 ) et je doit afficher le vide présent

sur le pdf de la jauge il est marquer p = 10(U-5,5) ma jauge sort une valeur entre +2.2Vdc +8.5Vdc

pas de problème particulier je pense mais ça ne veut pas faire ce que je veut

actuellement en sortie de jauge j'ai un diviseur 0 10V vers 0 5V en entrer de pont je suis a 8.5V ( jauge à l'air ) et en sortie de pont 4.25V

c'est la que ça ce gatte je n'arrive pas a faire la conversion avec la formule du fabriquant

actuellement j'ai ça comme code pour la conversion

valjauge = analogRead(jauge);
  
  map(valjauge, 0, 1024, 0, 10);

 valjaugeok = 10E(valjauge-5.5);

mais j'ai une erreur error: exponent has no digits j'ai donc présumer que l'on ne peut pas faire passer de variable dans un exposant

avez vous une idée de comment faire ?

merci beaucoup

La fonction map ne modifie pas valjauge, elle retourne une nouvelle valeur, il faut l'utiliser sous la forme

y= map(valjauge, 0, 1024, 0, 10);

merci Christian pour les infos sur map car je l'utilise sur d'autre programme ( qui ont l'air de marcher ) mais en mettant direct map(valjauge, 0, 1024, 0, 10); et j'ai bien ma valeur qui est mapper comme il faut

merci pepe effectivement l'exposant je l'avais vu en 10e ou 10E je comprends mieux l'utilisation de pow

seul petite chose pourquoi mettre pow(10., alors que pow(10, devrais passer je comprends pas l'utilité du . dans ce morceaux

je viens de tester avec mon montage ça m'affiche pas ce que je veut mais je pense ma jauge est morte donc je vais tester avec un potar

merci beaucoup

10 = constante entière 10.0 = constante flottante

merci de l’explication fdufnews

avec potar le calcul ce fait mais avec des valeur bizarre

float y;
y = map(valjauge, 0, 1024, 2.2, 8.5);
  valjaugeok = pow(10., (y-5.5));

j’ai sur mon affichage la valeur de vide et la valeur de y
y varie entre 2 et 7 alors que map doit le mettre entre 2.2 et 8.5
ensuite la valeur de vide va de 0.00 et 31.62
je pense qu’il me manque des chiffre après la virgule et que le calcule est erronée mais
habituellement les doc des jauge sont sans erreur

je fournit la doc si quelqu’un comprends mieux que moi

merci beaucoup

EDIT: j’ai trouver pour afficher plus de de chiffre après la virgule
par contre mon map doit buguer car lui ne donne aucun chiffre après la virgule

il faut mettre (y, 4) , 4 correspond au nombre de chiffre après la virgule

tpr280.pdf (340 KB)

merci beaucoup

maintenant que mon code fonctionne a peu prés ( le 5.5 doit être modifier je pense car je suis un peu bas en mbar )

avez vous une idée pour qu'au lieu d'un affichage 0.000038mbar celui ci soit marquer 3.8x10e-5 par exemple merci beaucoup

Bonjour,

La fonction map retourne un int, pas un float.

Tu peux y remédier en faisant par exemple ça:

y = map(valjauge, 0, 1024, 22, 85) / 10.0;

Ou alors faire une fonction similaire à map:

float mapf(float x, float in_min, float in_max, float out_min, float out_max)
{
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Pour la notation en exposant, utilise sprintf (voir ici pour les paramètres), ou tu peux aussi utiliser dtostre.

merci guix pour la fonction map mais je bloque toujours sur ma valeur de sortie de mon map qui est entre 2 et 8 au lieu de 2.2 et 8.5 ( affichage entre 2 et 8 alors que la virgule et les quatre zéro derrière y sont )

ainsi que sur l'affichage 4x10e-2 avec ton sprintf ( sur ecran lcd i2c )

merci beaucoup