aaa

Dependencies:   ArduinoSerial I2Cdev2

Dependents:   AutoFlight2017_now2 AutoFlight2018_Control sbus_test_2018 Autoflight2018_sbusread ... more

MPU6050_DMP6.h

Committer:
TUATBM
Date:
2018-08-28
Revision:
0:c3af3416e383
Child:
2:ff025b9c6c7c

File content as of revision 0:c3af3416e383:

#ifndef _MPU6050_DMP_6_H_
#define _MPU6050_DMP_6_H_

#include "MPU6050.h"
#include "mbed.h"
#include "I2Cdev.h"

#define MPU6050_INCLUDE_DMP_MOTIONAPPS20

class MPU6050DMP6 {
public:
    MPU6050DMP6(PinName intpin, RawSerial* serial_p);
    ~MPU6050DMP6();

  int setup();
  void loop();
  void getRollPitchYaw_Skipper(float RPY[3]);


private:
    RawSerial* pc_p;
    InterruptIn *checkpin_p;
    InterruptIn &checkpin;

    MPU6050 mpu;
//MPU6050 mpu(0x69); // <-- use for AD0 high


// MPU control/status vars
    bool dmpReady;  // set true if DMP init was successful
    uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
    uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
    uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
    uint16_t fifoCount;     // count of all bytes currently in FIFO
    uint8_t fifoBuffer[64]; // FIFO storage buffer

// orientation/motion vars
    Quaternion q,q2;           // [w, x, y, z]         quaternion container
    VectorInt16 aa;         // [x, y, z]            accel sensor measurements
    VectorInt16 aaReal;     // [x, y, z]            gravity-free accel sensor measurements
    VectorInt16 aaWorld;    // [x, y, z]            world-frame accel sensor measurements
    VectorFloat gravity;    // [x, y, z]            gravity vector
    float euler[3];         // [psi, theta, phi]    Euler angle container
    float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector

// packet structure for InvenSense teapot demo
    uint8_t teapotPacket[14];

// ================================================================
// ===               INTERRUPT DETECTION ROUTINE                ===
// ================================================================

    volatile bool mpuInterrupt;     // indicates whether MPU interrupt pin has gone high

    void dmpDataReady();
    void transformeCoordinate_Skipper(Quaternion* q1, Quaternion* q2);
    int loopstarting();
    void initializeValue();

};

#endif /* _MPU6050_DMP_6_H_ */