MPU6050 library using i2c interface on LPC1768 - Complementary filter is added. Now program can calculate pitch and roll angles.
Fork of MPU6050 by
Diff: MPU6050.h
- Revision:
- 7:4e799f8ec792
- Parent:
- 5:5bff0edcdff8
diff -r 5b90f2b5e6d9 -r 4e799f8ec792 MPU6050.h --- 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