leggere output da un giroscopio LISY300AL

Ciao a tutti, io e Vanni stiamo impazzendo per interpretare il valore di questo giroscopio, in teoria dovrebbe dare come output velocità angolare e noi stiamo cercando di spiegare ad arduino come fare un integrale...
Davvero complesso!

Il codice piu' o meno da il valore in gradi MA! si perde almeno 3 gradi ogni 90 di rotazione....non so davvero qualcuno sa darci qualche info?
Ecco il codice:

int sensorPin = 2;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
float angularVelocity = 0;  // variable to store the value coming from the sensor
float previousAngularVelocity = 0;
double orientation = 9000;
double previousOrientation = 9000;
long previousTime = 0;
unsigned long time;

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);  
  pinMode(sensorPin, INPUT);  
  Serial.begin(9600);
}

void loop() {
  //orientation = previousOrientation;
  for ( int i = 0; i < 11 ; i++) {
   long treshold = 320.999;
   angularVelocity = (analogRead(sensorPin) - treshold) + angularVelocity;
   if (i == 10) {
     angularVelocity = (angularVelocity / 10) * 0.75;
     break;
   }
  }
  if (angularVelocity - previousAngularVelocity > - 1 && angularVelocity - previousAngularVelocity < 1) {
    angularVelocity = previousAngularVelocity;
  }
  time = millis() - previousTime;
  previousTime = millis();  
  orientation = orientation + (angularVelocity * time);   
  if (orientation - previousOrientation > - 1 && orientation - previousOrientation < 1 ) {
    orientation = previousOrientation; 
  } 
  
  Serial.println(orientation / 100); 
}

come vedete con questo pezzo:
if (orientation - previousOrientation > - 1 && orientation - previousOrientation < 1 ) {
orientation = previousOrientation;
}
abbiamo cercato di limitare il moto oscillatorio e impreciso del valore output. Altro problema con il valore treshold cerchiamo di calibrare il valore in modo che sia 90 ma il valore cambia in rapporto al voltaggio a cui si alimenta arduino, quindi sarebbe da pensare a un codice che auto-calibra il valore treshold nei primi 5 secondi dopo l'accensione in modo che il valore in gradi sia preciso e che non guadagni ne perda.

qualcuno conosce sti cosi e puo' darci una mano?