Compass Working

Dependencies:   mbed

Committer:
pstephens18
Date:
Tue Jan 19 18:51:56 2016 +0000
Revision:
5:f6762034b4c0
Parent:
2:ef6778c2438e
Second
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pstephens18 0:1acd78600f46 1 #include "Compass.h"
pstephens18 0:1acd78600f46 2
pstephens18 0:1acd78600f46 3 I2C i2c_port(p9,p10);
pstephens18 0:1acd78600f46 4 char rawBytes[6];
pstephens18 0:1acd78600f46 5 short data[6];
pstephens18 0:1acd78600f46 6 short magComponents[3];
pstephens18 0:1acd78600f46 7 double heading;
pstephens18 2:ef6778c2438e 8 const int addr1 = (0x1E << 1);
pstephens18 0:1acd78600f46 9 char config[2];
pstephens18 0:1acd78600f46 10 char init[2];
pstephens18 0:1acd78600f46 11 double Compass()
pstephens18 0:1acd78600f46 12 {
pstephens18 0:1acd78600f46 13 config[0]= 0x02;
pstephens18 0:1acd78600f46 14 config[1] = 0x00;
pstephens18 2:ef6778c2438e 15 i2c_port.write(addr1, config,2);
pstephens18 0:1acd78600f46 16 init[0]=0x03;
pstephens18 0:1acd78600f46 17 while(1)
pstephens18 0:1acd78600f46 18 {
pstephens18 2:ef6778c2438e 19 i2c_port.write(addr1,init,1);
pstephens18 2:ef6778c2438e 20 i2c_port.read(addr1,rawBytes,6);
pstephens18 0:1acd78600f46 21
pstephens18 0:1acd78600f46 22
pstephens18 0:1acd78600f46 23 for (int i = 0; i<6; i++)
pstephens18 0:1acd78600f46 24 {
pstephens18 0:1acd78600f46 25 data[i] = rawBytes[i];
pstephens18 0:1acd78600f46 26 }
pstephens18 0:1acd78600f46 27
pstephens18 0:1acd78600f46 28 magComponents[0] = data[0]<<8 | data[1];
pstephens18 0:1acd78600f46 29 magComponents[1] = data[4]<<8 | data[5];
pstephens18 0:1acd78600f46 30 magComponents[2] = data[2]<<8 | data[3];
pstephens18 0:1acd78600f46 31
pstephens18 0:1acd78600f46 32 heading = atan2((double)magComponents[1],(double)magComponents[0]); // Angle in Radians
pstephens18 0:1acd78600f46 33 heading = (heading*180)/3.14159; // Convert to Degrees
pstephens18 0:1acd78600f46 34 heading = heading + 14.85; // Find True North
pstephens18 0:1acd78600f46 35 if(heading > 180)
pstephens18 0:1acd78600f46 36 {
pstephens18 0:1acd78600f46 37 heading -= 360;
pstephens18 0:1acd78600f46 38 }
pstephens18 2:ef6778c2438e 39
pstephens18 0:1acd78600f46 40 return heading;
pstephens18 0:1acd78600f46 41 }
pstephens18 0:1acd78600f46 42 }
pstephens18 0:1acd78600f46 43
pstephens18 0:1acd78600f46 44