succes

Dependencies:   microbit

BNO055.h

Committer:
mk1
Date:
2017-02-11
Revision:
0:c15430f1895f

File content as of revision 0:c15430f1895f:

#ifndef _BNO055_h_
#define _BNO055_h_

#include "MicroBit.h"

// Registers
#define CHIP_ID_REGISTER          0x00
#define PAGE_ID_REGISTER          0x07
#define OPR_MODE_REGISTER         0x3d
#define UNIT_SELECTION_REGISTER   0x3b
#define EULER_H_REGISTER_LSB      0x1a
#define EULER_H_REGISTER_MSB      0x1b
#define CALIBRATION_STATUS        0x35


// IDs
#define BNO055_CHIP_ID        0xa0    
#define BNO055_ACC_ID         0xfb    
#define BNO055_MAG_ID         0x32    
#define BNO055_GYRO_ID         0x0f    

// Units
#define UNIT_ACC_MSS            0x00 
#define UNIT_GYR_DPS            0x00 
#define UNIT_EULER_DEG          0x00 
#define UNIT_TEMP_C             0x00 
#define UNIT_ORI_WIN            0x00 


#define NDOF_FUSION_MODE 0x0C
#define IMU_FUSION_MODE 0x08


namespace BNO055
{


class Sensor
{
    public:
        Sensor(MicroBit & bit);
        void Calibrate();

        void ReadEulerAngles(double & heading, double & roll, double & pitch);
 
    private:
        MicroBit & _bit;
        char _buffer[12];
        uint8_t _I2CAddress;
        
        void LogDeviceId();
        void SelectPage(uint8_t page);
        void SelectNDOFFusion();
        void SelectUnits();
        void Init();
        void CheckID();
        uint8_t CalibrationStatus(void);
        
        uint8_t _currentPage;
};

}
    
#endif