détection d'objet avec un magnétomètre

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); 

}