otamesi

Dependencies:   mbed

Committer:
394
Date:
Mon Nov 05 12:46:14 2018 +0000
Revision:
10:280a25bcc8bb
Parent:
5:f630dbbae44e
11/5; 21:46

Who changed what in which revision?

UserRevisionLine numberNew contents of line
seangshim 5:f630dbbae44e 1 #ifndef HMC5883L_H
seangshim 5:f630dbbae44e 2 #define HMC5883L_H
seangshim 5:f630dbbae44e 3
seangshim 5:f630dbbae44e 4 #include "mbed.h"
seangshim 5:f630dbbae44e 5
seangshim 5:f630dbbae44e 6 #define CONFIG_A_REG 0x00
seangshim 5:f630dbbae44e 7 #define CONFIG_B_REG 0x01
seangshim 5:f630dbbae44e 8 #define MODE_REG 0x02
seangshim 5:f630dbbae44e 9 #define OUTPUT_REG 0x03
seangshim 5:f630dbbae44e 10 #define STATUS_REG 0x09
seangshim 5:f630dbbae44e 11 // configuration register a
seangshim 5:f630dbbae44e 12 #define AVG1_SAMPLES 0x00
seangshim 5:f630dbbae44e 13 #define AVG2_SAMPLES 0x20
seangshim 5:f630dbbae44e 14 #define AVG4_SAMPLES 0x80
seangshim 5:f630dbbae44e 15 #define AVG8_SAMPLES 0xC0
seangshim 5:f630dbbae44e 16
seangshim 5:f630dbbae44e 17 #define OUTPUT_RATE_0_75 0x00
seangshim 5:f630dbbae44e 18 #define OUTPUT_RATE_1_5 0x04
seangshim 5:f630dbbae44e 19 #define OUTPUT_RATE_3 0x08
seangshim 5:f630dbbae44e 20 #define OUTPUT_RATE_7_5 0x0C
seangshim 5:f630dbbae44e 21 #define OUTPUT_RATE_15 0x10
seangshim 5:f630dbbae44e 22 #define OUTPUT_RATE_30 0x14
seangshim 5:f630dbbae44e 23 #define OUTPUT_RATE_75 0x18
seangshim 5:f630dbbae44e 24
seangshim 5:f630dbbae44e 25 #define NORMAL_MEASUREMENT 0x00
seangshim 5:f630dbbae44e 26 #define POSITIVE_BIAS 0x01
seangshim 5:f630dbbae44e 27 #define NEGATIVE_BIAS 0x02
seangshim 5:f630dbbae44e 28 // mode register
seangshim 5:f630dbbae44e 29 #define CONTINUOUS_MODE 0x00
seangshim 5:f630dbbae44e 30 #define SINGLE_MODE 0x01
seangshim 5:f630dbbae44e 31 #define IDLE_MODE 0x02
seangshim 5:f630dbbae44e 32 // status register
seangshim 5:f630dbbae44e 33 #define STATUS_LOCK 0x02
seangshim 5:f630dbbae44e 34 #define STATUS_READY 0x01
seangshim 5:f630dbbae44e 35 // Utility
seangshim 5:f630dbbae44e 36 #ifndef M_PI
seangshim 5:f630dbbae44e 37 #define M_PI 3.1415926535897932384626433832795
seangshim 5:f630dbbae44e 38 #endif
seangshim 5:f630dbbae44e 39
seangshim 5:f630dbbae44e 40 #define PI2 (2*M_PI)
seangshim 5:f630dbbae44e 41 #define RAD_TO_DEG (180.0/M_PI)
seangshim 5:f630dbbae44e 42 #define DEG_TO_RAD (M_PI/180.0)
seangshim 5:f630dbbae44e 43
seangshim 5:f630dbbae44e 44 class HMC5883L
seangshim 5:f630dbbae44e 45 {
seangshim 5:f630dbbae44e 46
seangshim 5:f630dbbae44e 47 public:
seangshim 5:f630dbbae44e 48 static const int I2C_ADDRESS = 0x3D;//地磁気センサのアドレス
394 10:280a25bcc8bb 49 HMC5883L(PinName p9, PinName p10);
seangshim 5:f630dbbae44e 50 HMC5883L(I2C &i2c) : i2c_(i2c) {
seangshim 5:f630dbbae44e 51 init();
seangshim 5:f630dbbae44e 52 }
seangshim 5:f630dbbae44e 53 ~HMC5883L();
seangshim 5:f630dbbae44e 54 void init();
seangshim 5:f630dbbae44e 55 void setConfigurationA(char);
seangshim 5:f630dbbae44e 56 char getConfigurationA();
seangshim 5:f630dbbae44e 57 void setConfigurationB(char);
seangshim 5:f630dbbae44e 58 char getConfigurationB();
seangshim 5:f630dbbae44e 59 void setMode(char);
seangshim 5:f630dbbae44e 60 char getMode();
seangshim 5:f630dbbae44e 61 void getXYZ(int16_t raw[3]);
seangshim 5:f630dbbae44e 62 char getStatus();
seangshim 5:f630dbbae44e 63 double getHeadingXY();
seangshim 5:f630dbbae44e 64 double getHeadingXYDeg() {
seangshim 5:f630dbbae44e 65 return (getHeadingXY() * RAD_TO_DEG);//radianからdegreeへ変換
seangshim 5:f630dbbae44e 66 }
seangshim 5:f630dbbae44e 67
seangshim 5:f630dbbae44e 68 private:
seangshim 5:f630dbbae44e 69 I2C &i2c_;
seangshim 5:f630dbbae44e 70 /**
seangshim 5:f630dbbae44e 71 * The raw buffer for allocating I2C object in its own without heap memory.
seangshim 5:f630dbbae44e 72 */
seangshim 5:f630dbbae44e 73 char i2cRaw[sizeof(I2C)];
seangshim 5:f630dbbae44e 74 };
seangshim 5:f630dbbae44e 75 #endif // HMC5883L