PLANET-Q ADXL375 Library
PQADXL375.h@2:b5fd8584fd83, 2019-12-17 (annotated)
- Committer:
- tanahashi
- Date:
- Tue Dec 17 13:43:21 2019 +0000
- Revision:
- 2:b5fd8584fd83
- Parent:
- 1:7fdf6d2e8a9b
fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tanahashi | 0:83a20280ea3a | 1 | #ifndef PQADXL375_H |
tanahashi | 0:83a20280ea3a | 2 | #define PQADXL375_H |
tanahashi | 0:83a20280ea3a | 3 | |
tanahashi | 0:83a20280ea3a | 4 | #define ADXL375_ADDR_HIGH 0b0011101<<1 |
tanahashi | 0:83a20280ea3a | 5 | #define ADXL375_ADDR_LOW 0b1010011<<1 |
tanahashi | 0:83a20280ea3a | 6 | |
tanahashi | 0:83a20280ea3a | 7 | #define ADXL375_DEVID 0x00 |
tanahashi | 0:83a20280ea3a | 8 | #define ADXL375_BW_RATE 0x2C |
tanahashi | 0:83a20280ea3a | 9 | #define ADXL375_POWER_CTL 0x2D |
tanahashi | 0:83a20280ea3a | 10 | #define ADXL375_DATAX0 0x32 |
tanahashi | 0:83a20280ea3a | 11 | #define ADXL375_LSB 0.049 |
tanahashi | 0:83a20280ea3a | 12 | |
tanahashi | 1:7fdf6d2e8a9b | 13 | /** |
tanahashi | 1:7fdf6d2e8a9b | 14 | * 3軸高加速度センサADXL375のライブラリ |
tanahashi | 1:7fdf6d2e8a9b | 15 | * @code |
tanahashi | 1:7fdf6d2e8a9b | 16 | #include "mbed.h" |
tanahashi | 1:7fdf6d2e8a9b | 17 | #include "PQADXL375.h" |
tanahashi | 1:7fdf6d2e8a9b | 18 | |
tanahashi | 1:7fdf6d2e8a9b | 19 | Serial pc(USBTX, USBRX, 115200); |
tanahashi | 1:7fdf6d2e8a9b | 20 | I2C i2c(p9, p10); |
tanahashi | 1:7fdf6d2e8a9b | 21 | |
tanahashi | 1:7fdf6d2e8a9b | 22 | ADXL375 adxl(i2c, ADXL375::ALT_ADDRESS_HIGH); |
tanahashi | 1:7fdf6d2e8a9b | 23 | |
tanahashi | 1:7fdf6d2e8a9b | 24 | float high_accel_offset[] = {0, 0, 0}; |
tanahashi | 1:7fdf6d2e8a9b | 25 | float high_accel[3]; |
tanahashi | 1:7fdf6d2e8a9b | 26 | |
tanahashi | 1:7fdf6d2e8a9b | 27 | int main() { |
tanahashi | 1:7fdf6d2e8a9b | 28 | adxl.begin(); |
tanahashi | 1:7fdf6d2e8a9b | 29 | adxl.offset(high_accel); |
tanahashi | 1:7fdf6d2e8a9b | 30 | if(adxl.test()){ |
tanahashi | 1:7fdf6d2e8a9b | 31 | adxl.read(high_accel); |
tanahashi | 1:7fdf6d2e8a9b | 32 | pc.printf("%f\t%f\t%f\r\n", high_accel[0], high_accel[1], high_accel[2]); |
tanahashi | 1:7fdf6d2e8a9b | 33 | } |
tanahashi | 1:7fdf6d2e8a9b | 34 | else{ |
tanahashi | 1:7fdf6d2e8a9b | 35 | pc.printf("[ FAIL ] ADXL375 cannot be reached.\r\n"); |
tanahashi | 1:7fdf6d2e8a9b | 36 | } |
tanahashi | 1:7fdf6d2e8a9b | 37 | } |
tanahashi | 1:7fdf6d2e8a9b | 38 | * @endcode |
tanahashi | 1:7fdf6d2e8a9b | 39 | */ |
tanahashi | 0:83a20280ea3a | 40 | class ADXL375 |
tanahashi | 0:83a20280ea3a | 41 | { |
tanahashi | 0:83a20280ea3a | 42 | public: |
tanahashi | 0:83a20280ea3a | 43 | typedef enum { |
tanahashi | 0:83a20280ea3a | 44 | ALT_ADDRESS_HIGH = ADXL375_ADDR_HIGH, |
tanahashi | 0:83a20280ea3a | 45 | ALT_ADDRESS_LOW = ADXL375_ADDR_LOW |
tanahashi | 0:83a20280ea3a | 46 | } ALT_ADDRESS_t; |
tanahashi | 2:b5fd8584fd83 | 47 | |
tanahashi | 0:83a20280ea3a | 48 | private: |
tanahashi | 0:83a20280ea3a | 49 | I2C *_i2c; |
tanahashi | 0:83a20280ea3a | 50 | int _addr; |
tanahashi | 0:83a20280ea3a | 51 | char cmd[2]; |
tanahashi | 0:83a20280ea3a | 52 | char buff[6]; |
tanahashi | 0:83a20280ea3a | 53 | float high_accel_offset[3]; |
tanahashi | 2:b5fd8584fd83 | 54 | |
tanahashi | 2:b5fd8584fd83 | 55 | public: |
tanahashi | 1:7fdf6d2e8a9b | 56 | /** |
tanahashi | 1:7fdf6d2e8a9b | 57 | * @param i2c I2Cのインスタンスへの参照 |
tanahashi | 1:7fdf6d2e8a9b | 58 | * @param ALT_ADDRESS_t ALT_ADDRESSピンのH/Lレベル |
tanahashi | 1:7fdf6d2e8a9b | 59 | */ |
tanahashi | 0:83a20280ea3a | 60 | ADXL375(I2C &i2c, ALT_ADDRESS_t ALT_ADDRESS); |
tanahashi | 2:b5fd8584fd83 | 61 | |
tanahashi | 1:7fdf6d2e8a9b | 62 | /** |
tanahashi | 1:7fdf6d2e8a9b | 63 | * センサ動作開始 |
tanahashi | 1:7fdf6d2e8a9b | 64 | */ |
tanahashi | 0:83a20280ea3a | 65 | void begin(); |
tanahashi | 2:b5fd8584fd83 | 66 | |
tanahashi | 1:7fdf6d2e8a9b | 67 | /** |
tanahashi | 1:7fdf6d2e8a9b | 68 | * センサ通信テスト |
tanahashi | 1:7fdf6d2e8a9b | 69 | * @retval true 通信成功 |
tanahashi | 1:7fdf6d2e8a9b | 70 | * @retval false 通信失敗 |
tanahashi | 1:7fdf6d2e8a9b | 71 | */ |
tanahashi | 0:83a20280ea3a | 72 | bool test(); |
tanahashi | 2:b5fd8584fd83 | 73 | |
tanahashi | 1:7fdf6d2e8a9b | 74 | /** |
tanahashi | 1:7fdf6d2e8a9b | 75 | * ゼロ点補正 |
tanahashi | 1:7fdf6d2e8a9b | 76 | * @param high_accel 高加速度のオフセット配列 |
tanahashi | 1:7fdf6d2e8a9b | 77 | */ |
tanahashi | 0:83a20280ea3a | 78 | void offset(float *high_accel); |
tanahashi | 2:b5fd8584fd83 | 79 | |
tanahashi | 1:7fdf6d2e8a9b | 80 | /** |
tanahashi | 1:7fdf6d2e8a9b | 81 | * 測定値の読み取り |
tanahashi | 1:7fdf6d2e8a9b | 82 | * @param high_accel 高加速度を格納する配列 |
tanahashi | 1:7fdf6d2e8a9b | 83 | */ |
tanahashi | 0:83a20280ea3a | 84 | void read(float *high_accel); |
tanahashi | 0:83a20280ea3a | 85 | }; |
tanahashi | 0:83a20280ea3a | 86 | |
tanahashi | 0:83a20280ea3a | 87 | #endif |