PLANET-Q ADXL375 Library

Committer:
tanahashi
Date:
Tue Dec 17 13:43:21 2019 +0000
Revision:
2:b5fd8584fd83
Parent:
0:83a20280ea3a
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tanahashi 0:83a20280ea3a 1 #include "mbed.h"
tanahashi 0:83a20280ea3a 2 #include "PQADXL375.h"
tanahashi 0:83a20280ea3a 3
tanahashi 0:83a20280ea3a 4 ADXL375 :: ADXL375(I2C &i2c, ALT_ADDRESS_t ALT_ADDRESS)
tanahashi 0:83a20280ea3a 5 {
tanahashi 0:83a20280ea3a 6 _addr = ALT_ADDRESS;
tanahashi 0:83a20280ea3a 7 _i2c = &i2c;
tanahashi 0:83a20280ea3a 8 _i2c->frequency(400000);
tanahashi 0:83a20280ea3a 9 }
tanahashi 0:83a20280ea3a 10
tanahashi 0:83a20280ea3a 11 void ADXL375 :: begin()
tanahashi 0:83a20280ea3a 12 {
tanahashi 0:83a20280ea3a 13 cmd[0] = ADXL375_BW_RATE;
tanahashi 0:83a20280ea3a 14 cmd[1] = 0x0F;
tanahashi 0:83a20280ea3a 15 _i2c->write(_addr, cmd, 2);
tanahashi 2:b5fd8584fd83 16
tanahashi 0:83a20280ea3a 17 cmd[0] = ADXL375_POWER_CTL;
tanahashi 0:83a20280ea3a 18 cmd[1] = 0x08;
tanahashi 0:83a20280ea3a 19 _i2c->write(_addr, cmd, 2);
tanahashi 0:83a20280ea3a 20 }
tanahashi 0:83a20280ea3a 21
tanahashi 0:83a20280ea3a 22 bool ADXL375 :: test()
tanahashi 0:83a20280ea3a 23 {
tanahashi 0:83a20280ea3a 24 cmd[0] = ADXL375_DEVID;
tanahashi 0:83a20280ea3a 25 _i2c->write(_addr, cmd, 1);
tanahashi 0:83a20280ea3a 26 _i2c->read(_addr, buff, 1);
tanahashi 0:83a20280ea3a 27 if (buff[0] == 0xE5) {
tanahashi 0:83a20280ea3a 28 return true;
tanahashi 0:83a20280ea3a 29 } else {
tanahashi 0:83a20280ea3a 30 return false;
tanahashi 0:83a20280ea3a 31 }
tanahashi 0:83a20280ea3a 32 }
tanahashi 0:83a20280ea3a 33
tanahashi 0:83a20280ea3a 34 void ADXL375 :: offset(float *high_accel)
tanahashi 0:83a20280ea3a 35 {
tanahashi 0:83a20280ea3a 36 for(int i = 0; i < 3; i++) {
tanahashi 0:83a20280ea3a 37 high_accel_offset[i] = high_accel[i];
tanahashi 0:83a20280ea3a 38 }
tanahashi 0:83a20280ea3a 39 }
tanahashi 0:83a20280ea3a 40
tanahashi 0:83a20280ea3a 41 void ADXL375 :: read(float *high_accel)
tanahashi 0:83a20280ea3a 42 {
tanahashi 0:83a20280ea3a 43 cmd[0] = ADXL375_DATAX0;
tanahashi 0:83a20280ea3a 44 _i2c->write(_addr, cmd, 1);
tanahashi 0:83a20280ea3a 45 _i2c->read(_addr, buff, 6);
tanahashi 0:83a20280ea3a 46 high_accel[0] = (short)(buff[1] << 8 | buff[0]) * ADXL375_LSB - high_accel_offset[0];
tanahashi 0:83a20280ea3a 47 high_accel[1] = (short)(buff[3] << 8 | buff[2]) * ADXL375_LSB - high_accel_offset[1];
tanahashi 0:83a20280ea3a 48 high_accel[2] = (short)(buff[5] << 8 | buff[4]) * ADXL375_LSB - high_accel_offset[2];
tanahashi 0:83a20280ea3a 49 }