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 :

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;
};
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.

MERCI pour vos réponses