NOT FINISHED YET!!! My first try to get a self built fully working Quadrocopter based on an mbed, a self built frame and some other more or less cheap parts.

Dependencies:   mbed MODI2C

Sensors/Comp/HMC5883.h

Committer:
maetugr
Date:
2012-10-27
Revision:
14:cf260677ecde
Parent:
12:67a06c9b69d5
Child:
17:e096e85f6c36

File content as of revision 14:cf260677ecde:

#ifndef HMC5883_H
#define HMC5883_H

#define HMC5883_CONF_REG_A      0x00
#define HMC5883_CONF_REG_B      0x01
#define HMC5883_MODE_REG        0x02
#define HMC5883_DATA_OUT_X_MSB  0x03

// I2C addresses
#define HMC5883_ADDRESS 0x1E
#define I2CADR_W(ADR)           (ADR << 1&0xFE) // ADR & 1111 1110
#define I2CADR_R(ADR)           (ADR << 1|0x01) // ADR | 0000 0001

class HMC5883
{           
    public:
        HMC5883(PinName sda, PinName scl);
        
        float data[3];
        void read();
        void calibrate(int s);
        float get_angle();
         
    private:
        I2C i2c;
        
        // raw data and function to measure it
        int raw[3];
        void readraw();
        
        // I2C functions
        void writeReg(char address, char data);
        void readMultiReg(char address, char* output, int size);
        
        // calibration parameters and their saving
        int Min[3];
        int Max[3];
        float scale[3];
        float offset[3];
        LocalFileSystem local;
};

#endif