MPU6050 library using i2c interface on LPC1768 - Complementary filter is added. Now program can calculate pitch and roll angles.

Dependents:   Q2_Stabi

Fork of MPU6050 by Baser Kandehir

Revision:
7:4e799f8ec792
Parent:
5:5bff0edcdff8
--- a/MPU6050.h	Wed Aug 05 13:15:07 2015 +0000
+++ b/MPU6050.h	Mon May 30 08:11:07 2016 +0000
@@ -30,16 +30,16 @@
 #include "math.h"
 #include "MPU6050RegDef.h"
 
-#define PI 3.14159265359    // This value will be used when calculating angles
-#define dt 0.005            // 200 Hz sampling period
+//#define PI 3.14159265359    // This value will be used when calculating angles
+//#define dt 0.005            // 200 Hz sampling period
 
 extern float aRes, gRes; 
 
 /* whoAmI func uses this func, variables etc */
-extern Ticker toggler1;  
-extern Serial pc;   
-extern DigitalOut led2;
-extern void toggle_led1();
+//extern Ticker toggler1;  
+//extern Serial pc;   
+//extern DigitalOut led2;
+//extern void toggle_led1();
 
 /* Sensor datas to be used in program */
 extern float ax,ay,az;
@@ -48,10 +48,10 @@
 extern float accelBias[3], gyroBias[3];
  
 /* Function Prototypes */
-class MPU6050 
-{
-    protected:
+class MPU6050 {
     public: 
+    MPU6050(PinName p_sda, PinName p_scl);
+         
     void getAres();
     void getGres();
     void writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
@@ -60,11 +60,17 @@
     void whoAmI();
     void init();
     void reset();
-    void readAccelData(int16_t* dest);
-    void readGyroData(int16_t* dest);
+    void getAccelRaw(int16_t* dest);
+    void getGyroRaw(int16_t* dest);
+    void getGyro(float* dest);
     int16_t readTempData();
     void calibrate(float* dest1, float* dest2);
-    void complementaryFilter(float* pitch, float* roll);
+    //void complementaryFilter(float* pitch, float* roll);
+
+    protected:
+    I2C i2c;
+    char currentAcceleroRange;
+    char currentGyroRange;    
 };
 
 #endif
\ No newline at end of file