I am getting data from compass(
hmC5883L) and trying to detect angle.
Well, i dont really care about offsets, i just want to check that if its flat on the table and i make a 90 degrees round, i will get numbers
Instead for 90 degrees turn i get values like that : (starting from 13 degrees)
13->180, jump right to 0, 0->180, 180->13
code to manipulate data :
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;
What am i doing wrong ?