123123123123123123123123123

Dependencies:   mbed

Committer:
TonyYI
Date:
Tue Jul 01 10:59:33 2014 +0000
Revision:
0:3417ca0a36c0
Child:
1:cbec1283a16a
2014

Who changed what in which revision?

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