General IMU Library

Dependencies:   mbed LSM9DS1_Library

Files at this revision

API Documentation at this revision

Comitter:
simplyellow
Date:
Thu Feb 16 20:31:35 2017 +0000
Parent:
3:3b572eec3f20
Commit message:
fixed compile issues.

Changed in this revision

IMU.cpp Show annotated file Show diff for this revision Revisions of this file
IMU.h Show annotated file Show diff for this revision Revisions of this file
LSM9DS1_Library.lib Show annotated file Show diff for this revision Revisions of this file
--- a/IMU.cpp	Thu Feb 16 18:28:00 2017 +0000
+++ b/IMU.cpp	Thu Feb 16 20:31:35 2017 +0000
@@ -1,30 +1,24 @@
-#include "mbed.h"
-#include "LSM9DS1.h"
 #include "IMU.h"
 
-#define PI 3.1514
+#define PI 3.14159
 
 IMU::IMU() {
-
-    LSM9DS1 I(p9, p10, 0xD6, 0x3C);
-    I.begin();
-    if (!I.begin()) {
+    I = new LSM9DS1(p9, p10, 0xD6, 0x3C);
+    I->begin();
+    if (!I->begin()) {
         printf("Failed to communicate with LSM9DS1.\n");
     }
-    I.calibrate(1);
-    bool state;
-    float ax01 = I.calcAccel(I.ax);
-    float ay01 = I.calcAccel(I.ay);
-    float az01 = I.calcAccel(I.az);
-    float ax0 = ax01;
-    float ay0 = ay01;
-    float az0 = az01; 
-    float ax;
-    float ay;
-    float az;
-    float theta;
+    I->calibrate(1);
+    //bool state;
+    //Do we want to give state a starting value?
+    ax01 = I->calcAccel(I->ax);
+    ay01 = I->calcAccel(I->ay);
+    az01 = I->calcAccel(I->az);
+    ax0 = ax01;
+    ay0 = ay01;
+    az0 = az01;
 }
-    
+
 void IMU::trackBed()
 {
     if (state != 0) {
@@ -32,20 +26,19 @@
     }
     else {
         while(state == 0) {
-        
-            while(!I.accelAvailable());
-            I.readAccel();
-        
-             // current a = <ax,ay,az> 
-            ax = I.calcAccel(I.ax);
-            ay = I.calcAccel(I.ay);
-            az = I.calcAccel(I.az);
+            while(!I->accelAvailable());
+            I->readAccel();
+
+             // current a = <ax,ay,az>
+            ax = I->calcAccel(I->ax);
+            ay = I->calcAccel(I->ay);
+            az = I->calcAccel(I->az);
             // theta in degrees between a0 and a
             theta = acos((ax0*ax + ay0*ay + az0*az)/(sqrt(ax0*ax0+ay0*ay0+az0*az0)*sqrt(ax*ax+ay*ay+az*az)))*180/PI;
         }
     }
 }
-        
+
 void IMU::trackHeading()
 {
     if (state != 1) {
@@ -53,14 +46,13 @@
     }
     else {
         while (state == 1) {
-            
-            while(!I.accelAvailable());
-            
-            I.readAccel();
-            ax0 = I.calcAccel(I.ax);
-            ay0 = I.calcAccel(I.ay);
-            az0 = I.calcAccel(I.az);
+
+            while(!I->accelAvailable());
+
+            I->readAccel();
+            ax0 = I->calcAccel(I->ax);
+            ay0 = I->calcAccel(I->ay);
+            az0 = I->calcAccel(I->az);
         }
     }
 }
-            
\ No newline at end of file
--- a/IMU.h	Thu Feb 16 18:28:00 2017 +0000
+++ b/IMU.h	Thu Feb 16 20:31:35 2017 +0000
@@ -9,7 +9,7 @@
 
 #ifndef IMU_H
 #define IMU_H
- 
+
 #include "mbed.h"
 #include "LSM9DS1.h"
 
@@ -17,10 +17,8 @@
     public:
         /**
         *   Constructor for the IMU
-        *
-        *   @param[in] _state
         */
-        IMU() : _I(p9, p10, 0xD6, 0x3C){};
+        IMU();
         /**
         *   Track the angle of the truck bed
         */
@@ -29,20 +27,20 @@
         *   Track the angle of the truck as it moves
         */
         void trackHeading();
-        
+
     private:
+        LSM9DS1 *I;
         bool state;
         float ax01;
         float ay01;
         float az01;
         float ax0;
         float ay0;
-        float az0; 
+        float az0;
         float ax;
         float ay;
         float az;
         float theta;
-        LSM9DS1 _I;
 };
 
 #endif
\ No newline at end of file
--- a/LSM9DS1_Library.lib	Thu Feb 16 18:28:00 2017 +0000
+++ b/LSM9DS1_Library.lib	Thu Feb 16 20:31:35 2017 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/jmar7/code/LSM9DS1_Library/#93b89ce73b68
+http://developer.mbed.org/users/jmar7/code/LSM9DS1_Library/#17e3d44f490c