(多分)全部+フライトピン+新しい加速度
Dependencies: mbed
HMC5883L.h@10:280a25bcc8bb, 2018-11-05 (annotated)
- 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?
User | Revision | Line number | New 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 |