// includiamo la libreria I2C #include float _x; float _y; float _z; int i; float B; float Bx; float By; float Bz; void setup() { // configuriamo il sensore affinche' faccia misure continue // usiamo il pin 9 sul quale abbiamo collegato un LED Serial.begin(9600); Wire.begin(); Wire.beginTransmission(0x1E); Wire.write(0x02); Wire.write(0x00); Wire.endTransmission(); pinMode(9,OUTPUT); } void loop() { // eseguiamo 100 misure di campo e ne facciamo la media B=0.; Bx=0.; By=0.; Bz=0.; for(i=1; i<100; i++){ Wire.beginTransmission(0x1E); Wire.write(0x03); Wire.endTransmission(); Wire.requestFrom(0x1E,6); if (Wire.available()) { _x = Wire.read()*256; _x += Wire.read(); _z = Wire.read()*256; _z += Wire.read(); _y =Wire.read()*256; _y += Wire.read(); B += sqrt(_x*_x+_y*_y+_z*_z); Bx += _x; By += _y; Bz += _z; } } B=B/100; Bx=Bx/100; By=By/100; Bz=Bz/100; Serial.println(); Serial.print("La media e' "); Serial.print(B); Serial.println(); Serial.print("Il vettore ha componenti: "); Serial.print(" Bx= "); Serial.print(Bx); Serial.print(" By= "); Serial.print(By); Serial.print(" Bz= "); Serial.print(Bz); Serial.println(B); // secondo il valore di B accendiamo o spegniamo il LED if (B < 450) { digitalWrite(9, HIGH); } else { digitalWrite(9, LOW); } }