3軸加速度センサADXL375のI2Cライブラリ MPU9250では取れないような大きな加速度が取得できます データは粗目です

Dependents:   Hybrid_IZU2019 SWAN_IZU2019_v1 Shock_Alt_Logger_v2_1 ADXL375_Test

Committer:
Sigma884
Date:
Wed Nov 14 09:12:38 2018 +0000
Revision:
0:46fcf349bdca
3???????ADXL375???????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sigma884 0:46fcf349bdca 1 #ifndef ADXL375_I2C_H
Sigma884 0:46fcf349bdca 2 #define ADXL375_I2C_H
Sigma884 0:46fcf349bdca 3
Sigma884 0:46fcf349bdca 4 #include "mbed.h"
Sigma884 0:46fcf349bdca 5
Sigma884 0:46fcf349bdca 6 //Registers.
Sigma884 0:46fcf349bdca 7 #define ADXL375_DEVID_REG 0x00
Sigma884 0:46fcf349bdca 8 #define ADXL375_THRESH_TAP_REG 0x1D
Sigma884 0:46fcf349bdca 9 #define ADXL375_OFSX_REG 0x1E
Sigma884 0:46fcf349bdca 10 #define ADXL375_OFSY_REG 0x1F
Sigma884 0:46fcf349bdca 11 #define ADXL375_OFSZ_REG 0x20
Sigma884 0:46fcf349bdca 12 #define ADXL375_DUR_REG 0x21
Sigma884 0:46fcf349bdca 13 #define ADXL375_LATENT_REG 0x22
Sigma884 0:46fcf349bdca 14 #define ADXL375_WINDOW_REG 0x23
Sigma884 0:46fcf349bdca 15 #define ADXL375_THRESH_ACT_REG 0x24
Sigma884 0:46fcf349bdca 16 #define ADXL375_THRESH_INACT_REG 0x25
Sigma884 0:46fcf349bdca 17 #define ADXL375_TIME_INACT_REG 0x26
Sigma884 0:46fcf349bdca 18 #define ADXL375_ACT_INACT_CTL_REG 0x27
Sigma884 0:46fcf349bdca 19 #define ADXL375_THRESH_FF_REG 0x28
Sigma884 0:46fcf349bdca 20 #define ADXL375_TIME_FF_REG 0x29
Sigma884 0:46fcf349bdca 21 #define ADXL375_TAP_AXES_REG 0x2A
Sigma884 0:46fcf349bdca 22 #define ADXL375_ACT_TAP_STATUS_REG 0x2B
Sigma884 0:46fcf349bdca 23 #define ADXL375_BW_RATE_REG 0x2C
Sigma884 0:46fcf349bdca 24 #define ADXL375_POWER_CTL_REG 0x2D
Sigma884 0:46fcf349bdca 25 #define ADXL375_INT_ENABLE_REG 0x2E
Sigma884 0:46fcf349bdca 26 #define ADXL375_INT_MAP_REG 0x2F
Sigma884 0:46fcf349bdca 27 #define ADXL375_INT_SOURCE_REG 0x30
Sigma884 0:46fcf349bdca 28 #define ADXL375_DATA_FORMAT_REG 0x31
Sigma884 0:46fcf349bdca 29 #define ADXL375_DATAX0_REG 0x32
Sigma884 0:46fcf349bdca 30 #define ADXL375_DATAX1_REG 0x33
Sigma884 0:46fcf349bdca 31 #define ADXL375_DATAY0_REG 0x34
Sigma884 0:46fcf349bdca 32 #define ADXL375_DATAY1_REG 0x35
Sigma884 0:46fcf349bdca 33 #define ADXL375_DATAZ0_REG 0x36
Sigma884 0:46fcf349bdca 34 #define ADXL375_DATAZ1_REG 0x37
Sigma884 0:46fcf349bdca 35 #define ADXL375_FIFO_CTL 0x38
Sigma884 0:46fcf349bdca 36 #define ADXL375_FIFO_STATUS 0x39
Sigma884 0:46fcf349bdca 37
Sigma884 0:46fcf349bdca 38 //Data rate codes.
Sigma884 0:46fcf349bdca 39 #define ADXL375_3200HZ 0x0F
Sigma884 0:46fcf349bdca 40 #define ADXL375_1600HZ 0x0E
Sigma884 0:46fcf349bdca 41 #define ADXL375_800HZ 0x0D
Sigma884 0:46fcf349bdca 42 #define ADXL375_400HZ 0x0C
Sigma884 0:46fcf349bdca 43 #define ADXL375_200HZ 0x0B
Sigma884 0:46fcf349bdca 44 #define ADXL375_100HZ 0x0A
Sigma884 0:46fcf349bdca 45 #define ADXL375_50HZ 0x09
Sigma884 0:46fcf349bdca 46 #define ADXL375_25HZ 0x08
Sigma884 0:46fcf349bdca 47 #define ADXL375_12HZ5 0x07
Sigma884 0:46fcf349bdca 48 #define ADXL375_6HZ25 0x06
Sigma884 0:46fcf349bdca 49
Sigma884 0:46fcf349bdca 50 // when ALT ADDRESS pin is LOW
Sigma884 0:46fcf349bdca 51 #define ADXL375_I2C_LOW_READ 0xA7
Sigma884 0:46fcf349bdca 52 #define ADXL375_I2C_LOW_WRITE 0xA6
Sigma884 0:46fcf349bdca 53 #define ADXL375_I2C_LOW_ADDRESS 0x53
Sigma884 0:46fcf349bdca 54
Sigma884 0:46fcf349bdca 55 //when ALT ADDRESS pin is HIGH
Sigma884 0:46fcf349bdca 56 #define ADXL375_I2C_HIGH_READ 0x3B
Sigma884 0:46fcf349bdca 57 #define ADXL375_I2C_HIGH_WRITE 0x3A
Sigma884 0:46fcf349bdca 58 #define ADXL375_I2C_HIGH_ADDRESS 0x1D
Sigma884 0:46fcf349bdca 59
Sigma884 0:46fcf349bdca 60 #define ADXL375_X 0x00
Sigma884 0:46fcf349bdca 61 #define ADXL375_Y 0x01
Sigma884 0:46fcf349bdca 62 #define ADXL375_Z 0x02
Sigma884 0:46fcf349bdca 63
Sigma884 0:46fcf349bdca 64 // modes
Sigma884 0:46fcf349bdca 65 #define MeasurementMode 0x08
Sigma884 0:46fcf349bdca 66 class ADXL375_i2c
Sigma884 0:46fcf349bdca 67 {
Sigma884 0:46fcf349bdca 68
Sigma884 0:46fcf349bdca 69 public:
Sigma884 0:46fcf349bdca 70
Sigma884 0:46fcf349bdca 71 typedef enum{
Sigma884 0:46fcf349bdca 72 ALT_ADDRESS_LOW,
Sigma884 0:46fcf349bdca 73 ALT_ADDRESS_HIGH
Sigma884 0:46fcf349bdca 74 }ALT_ADDRESS;
Sigma884 0:46fcf349bdca 75
Sigma884 0:46fcf349bdca 76 ADXL375_i2c(I2C &userI2C, ALT_ADDRESS LOW_HIGH);
Sigma884 0:46fcf349bdca 77
Sigma884 0:46fcf349bdca 78 void getOutput(float* output);
Sigma884 0:46fcf349bdca 79
Sigma884 0:46fcf349bdca 80 int whoAmI();
Sigma884 0:46fcf349bdca 81
Sigma884 0:46fcf349bdca 82 void offset(float x, float y, float z);
Sigma884 0:46fcf349bdca 83
Sigma884 0:46fcf349bdca 84 void setDataRate(char rate);
Sigma884 0:46fcf349bdca 85
Sigma884 0:46fcf349bdca 86 private:
Sigma884 0:46fcf349bdca 87
Sigma884 0:46fcf349bdca 88 I2C *i2c;
Sigma884 0:46fcf349bdca 89 char ADXL375_I2C_READ;
Sigma884 0:46fcf349bdca 90 char ADXL375_I2C_WRITE;
Sigma884 0:46fcf349bdca 91 char ADXL375_I2C_ADDRESS;
Sigma884 0:46fcf349bdca 92
Sigma884 0:46fcf349bdca 93 float offset_x, offset_y, offset_z;
Sigma884 0:46fcf349bdca 94
Sigma884 0:46fcf349bdca 95 char singleByteRead(char address);
Sigma884 0:46fcf349bdca 96 void singleByteWrite(char address, char data);
Sigma884 0:46fcf349bdca 97 void multiByteRead(char startAddress, char* ptr_output, int size);
Sigma884 0:46fcf349bdca 98
Sigma884 0:46fcf349bdca 99 };
Sigma884 0:46fcf349bdca 100
Sigma884 0:46fcf349bdca 101 #endif