Obtengo datos de la brújula ( hmC5883L
) y trato de detectar el ángulo.
Bueno, realmente no me importan las compensaciones, solo quiero comprobar que si está plano en la mesa y hago una ronda de 90 grados, obtendré los números x-> 90+x
En lugar de para un giro de 90 grados obtengo valores como estos: (a partir de 13 grados)
13->180, jump right to 0, 0->180, 180->13
código para manipular datos:
float gScale = .92; // Scale factor for +1.3Ga setting
float adjx = x - xOffset; //set to 0 for testing
float adjy = y - yOffset;//set to 0 for testing
xs = adjx * gScale;
ys = adjy * gScale;
zs = z * gScale;
float heading = atan2(ys, xs);
heading += declination / 1000; // Declination for geo area
if (heading < 0);
heading += 2*PI;
if (heading > 2*PI)
heading -= 2*PI;
float angle = heading * 180/M_PI;
¿Qué estoy haciendo mal?