Final

Dependencies:   TextLCD mbed

Committer:
pstephens18
Date:
Wed Jan 20 02:15:26 2016 +0000
Revision:
0:5fd3f73db34f
final

Who changed what in which revision?

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