Bonjour,
Dans une routine en C je dois faire quelques opérations simple , enfin que je croyais simple.
En fait afin de calculer une hauteur par rapport à un angle qui mes rapporter via un capteur, je fait une successions d'opérations pour arriver au résultat tel que:
//ICS330.angle=(((ICS330.codeur)*360)/8192);
ICS330.angle=(ICS330.codeur)*(360);
ICS330.hauteur=(long_segment1*(sin(((ICS330.angle)*pi)/180)))+(long_segment2*(sin(((ICS330.angle)*pi)/180)))+hauteur_axe_chassi+ICS330.hauteur_chassi;
Pour commencer, le simple resultat donné par la multiplication en gras est juste pour une certaine valeur de ICS330.codeur et dépasser cette valeur le resultat devient faux , j'ai l'impression qu'au bout d'un certain resultat on repart sur zero pour recommencer ??
Les declarations des variables sont :
j'ai donc pris en compte la capacité d'octet des variable que j'utilise car certaine sont très grandes comme justement cette multiplication qui peux aller de 0 à 2 949 120, seulement j'arrive à environ 65800 pour repartir sur zero.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #define long_segment1 50 // #define long_segment2 50 //valeur en cm #define hauteur_axe_chassi 450 // #define pi 3.141592653589793238462 struct sGLCD { int ValMini; int ValMaxi; unsigned int Adc1; unsigned int Adc2; unsigned char Defaut; int ligne; int trame; int hauteur; unsigned int codeur; unsigned long angle; int hauteur_chassi; };
MERCI pour vos réponses
Partager