Example of reading and magnetometer sensor (HMC5883L)

Dependencies:   MODSERIAL mbed-rtos mbed

Fork of ReadingMag_HMC5883L by José Claudio

HMC5883L.h

Committer:
Maor_T
Date:
2016-05-24
Revision:
1:aea254b39529
Parent:
0:6bc5f85ca6fa

File content as of revision 1:aea254b39529:

#ifndef HMC5883L_H
#define HMC5883L_H

#include "mbed.h"

#define HMC5883L_IDENT_A        0x0A // In this case the identification register A is used to identify the devide. ASCII value H
#define HMC5883L_I2C            0x1E // 7-bit address. 0x3C write, 0x3D read.
#define HMC5883L_I2C_WRITE      0x3C // Same as (& 0xFE), ensure that the MSB bit is being set to zero (RW=0 -> Writing)
#define HMC5883L_I2C_READ       0x3D // Same as (| 0x01), ensure that the MSB bit is being set to one  (RW=1 -> Reading)

#define HMC5883L_CONFIG_A       0x00
#define HMC5883L_CONFIG_B       0x01
#define HMC5883L_MODE           0x02
#define HMC5883L_STATUS         0x09

#define HMC5883L_X_MSB          0x03
#define HMC5883L_X_LSB          0x04
#define HMC5883L_Z_MSB          0x05
#define HMC5883L_Z_LSB          0x06
#define HMC5883L_Y_MSB          0x07
#define HMC5883L_Y_LSB          0x08


class HMC5883L 
{

public:

    HMC5883L(PinName sda, PinName scl);
    float getMx();
    float getMy();
    float getMz();
    void Write(char reg_address, char data);
private:
    
    char Read(char data);
    void MultiByteRead(char address, char* output, int size); 
    I2C i2c;
    
};

#endif /* HMC5883L_H */