PLANET-Q ADXL375 Library

Committer:
tanahashi
Date:
Tue Dec 17 13:43:21 2019 +0000
Revision:
2:b5fd8584fd83
Parent:
1:7fdf6d2e8a9b
fix

Who changed what in which revision?

UserRevisionLine numberNew 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