biggil:
Si le résultat de x*x n'est pas égal à pow(x,2), tu as un problème de dimensionnement de tes variables !
tu utilises quoi, des floats ? des ints ? des longs ?
#include <Wire.h>
#define adresse 0x0E
int xyz_initial = -1;
int xyz;
unsigned int donnees [6];
int xMag;
int yMag;
int zMag;
void setup()
{
Wire.begin ();
Serial.begin (9600);
Wire.beginTransmission (adresse);
Wire.write (0x10);
Wire.write (0x01);
Wire.endTransmission ();
delay(300);
}
void loop ()
{
Wire.beginTransmission (adresse);
Wire.write (0x01);
Wire.endTransmission ();
Wire.requestFrom (adresse, 6);
if (Wire.available () == 6)
{
donnees [0] = Wire.read ();
donnees [1] = Wire.read ();
donnees [2] = Wire.read ();
donnees [3] = Wire.read ();
donnees [4] = Wire.read ();
donnees [5] = Wire.read ();
xMag = ((donnees [1] * 256) + donnees [0]);
yMag = ((donnees [3] * 256) + donnees [2]);
zMag = ((donnees [5] * 256) + donnees [4]);
Serial.print( "Champ magnetique Dans l'axe X:");
Serial.println(xMag);
Serial.print( "Champ magnetique Dans l'axe Y:");
Serial.println(yMag);
Serial.print( "Champ magnetique Dans l'axe Z:");
Serial.println(zMag);
xyz = sqrt(pow(xMag, 2)+pow(yMag, 2)+pow(zMag, 2));
Serial.println(xyz);
if(xyz_initial == -1)
xyz_initial = xyz;
if(xyz_initial * 1.1 <xyz)
Serial.println( "voiture presente");
else
Serial.println( "voiture non présent");
}
delay(1000);
}