Tony YI
/
ESDC2014
123123123123123123123123123
compass.h@0:3417ca0a36c0, 2014-07-01 (annotated)
- Committer:
- TonyYI
- Date:
- Tue Jul 01 10:59:33 2014 +0000
- Revision:
- 0:3417ca0a36c0
- Child:
- 1:cbec1283a16a
2014
Who changed what in which revision?
User | Revision | Line number | New 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 */ |