MPU6050 module library

All credit to kriswiner @https://github.com/kriswiner. Just changed some code for my own purposes

MPU6050.h

Committer:
kohlerba
Date:
2017-11-21
Revision:
1:ca4d8c044898
Parent:
0:8a2cac9ba89e

File content as of revision 1:ca4d8c044898:

#ifndef MPU6050_H
#define MPU6050_H

#include "mpu6050_reg.h"
#include "mbed.h"

enum Ascale {
  AFS_2G = 0,
  AFS_4G,
  AFS_8G,
  AFS_16G
};

enum Gscale {
  GFS_250DPS = 0,
  GFS_500DPS,
  GFS_1000DPS,
  GFS_2000DPS
};

class mpu6050 {
protected:

public:
    //wire.h functions
    void writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
    char readByte(uint8_t address, uint8_t subAddress);
    void readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest);
    //mpu6050 functions
    void getGres();
    void getAres();
    void readAccelData(int16_t * destination);
    void readGyroData(int16_t * destination);
    int16_t readTempData();
    void lowPowerAccelOnly();
    void reset();
    void init();
    void calibrate(float * dest1, float * dest2);
    void selfTest(float * destination); // Should return percent deviation from factory trim values, +/- 14 or less deviation is a pass
    void MadgwickQuaternionUpdate(float ax, float ay, float az, float gx, float gy, float gz);
};

#endif