Example of reading and magnetometer sensor (HMC5883L)

Dependencies:   MODSERIAL mbed-rtos mbed

Fork of ReadingMag_HMC5883L by José Claudio

Committer:
Maor_T
Date:
Tue May 24 12:08:14 2016 +0000
Revision:
1:aea254b39529
Parent:
0:6bc5f85ca6fa
amir

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jose_claudiojr 0:6bc5f85ca6fa 1 #ifndef HMC5883L_H
jose_claudiojr 0:6bc5f85ca6fa 2 #define HMC5883L_H
jose_claudiojr 0:6bc5f85ca6fa 3
jose_claudiojr 0:6bc5f85ca6fa 4 #include "mbed.h"
jose_claudiojr 0:6bc5f85ca6fa 5
jose_claudiojr 0:6bc5f85ca6fa 6 #define HMC5883L_IDENT_A 0x0A // In this case the identification register A is used to identify the devide. ASCII value H
jose_claudiojr 0:6bc5f85ca6fa 7 #define HMC5883L_I2C 0x1E // 7-bit address. 0x3C write, 0x3D read.
jose_claudiojr 0:6bc5f85ca6fa 8 #define HMC5883L_I2C_WRITE 0x3C // Same as (& 0xFE), ensure that the MSB bit is being set to zero (RW=0 -> Writing)
jose_claudiojr 0:6bc5f85ca6fa 9 #define HMC5883L_I2C_READ 0x3D // Same as (| 0x01), ensure that the MSB bit is being set to one (RW=1 -> Reading)
jose_claudiojr 0:6bc5f85ca6fa 10
jose_claudiojr 0:6bc5f85ca6fa 11 #define HMC5883L_CONFIG_A 0x00
jose_claudiojr 0:6bc5f85ca6fa 12 #define HMC5883L_CONFIG_B 0x01
jose_claudiojr 0:6bc5f85ca6fa 13 #define HMC5883L_MODE 0x02
jose_claudiojr 0:6bc5f85ca6fa 14 #define HMC5883L_STATUS 0x09
jose_claudiojr 0:6bc5f85ca6fa 15
jose_claudiojr 0:6bc5f85ca6fa 16 #define HMC5883L_X_MSB 0x03
jose_claudiojr 0:6bc5f85ca6fa 17 #define HMC5883L_X_LSB 0x04
jose_claudiojr 0:6bc5f85ca6fa 18 #define HMC5883L_Z_MSB 0x05
jose_claudiojr 0:6bc5f85ca6fa 19 #define HMC5883L_Z_LSB 0x06
jose_claudiojr 0:6bc5f85ca6fa 20 #define HMC5883L_Y_MSB 0x07
jose_claudiojr 0:6bc5f85ca6fa 21 #define HMC5883L_Y_LSB 0x08
jose_claudiojr 0:6bc5f85ca6fa 22
jose_claudiojr 0:6bc5f85ca6fa 23
jose_claudiojr 0:6bc5f85ca6fa 24 class HMC5883L
jose_claudiojr 0:6bc5f85ca6fa 25 {
jose_claudiojr 0:6bc5f85ca6fa 26
jose_claudiojr 0:6bc5f85ca6fa 27 public:
jose_claudiojr 0:6bc5f85ca6fa 28
jose_claudiojr 0:6bc5f85ca6fa 29 HMC5883L(PinName sda, PinName scl);
jose_claudiojr 0:6bc5f85ca6fa 30 float getMx();
jose_claudiojr 0:6bc5f85ca6fa 31 float getMy();
jose_claudiojr 0:6bc5f85ca6fa 32 float getMz();
Maor_T 1:aea254b39529 33 void Write(char reg_address, char data);
jose_claudiojr 0:6bc5f85ca6fa 34 private:
Maor_T 1:aea254b39529 35
jose_claudiojr 0:6bc5f85ca6fa 36 char Read(char data);
jose_claudiojr 0:6bc5f85ca6fa 37 void MultiByteRead(char address, char* output, int size);
jose_claudiojr 0:6bc5f85ca6fa 38 I2C i2c;
jose_claudiojr 0:6bc5f85ca6fa 39
jose_claudiojr 0:6bc5f85ca6fa 40 };
jose_claudiojr 0:6bc5f85ca6fa 41
jose_claudiojr 0:6bc5f85ca6fa 42 #endif /* HMC5883L_H */