This library enables users to communicate with the ADXL345 accelerometer through the I2C bus on the mbed. The API names are similar and work nearly the same way as those made in the SPI libraries for the ADXL345.

Dependencies:   mbed

Fork of ADXL345_I2C by Peter Swanson

Committer:
ledonger
Date:
Mon Oct 02 08:28:52 2017 +0000
Revision:
2:c2067856a052
Parent:
0:d0adb548714f
ADXL345_data_recovery

Who changed what in which revision?

UserRevisionLine numberNew contents of line
peterswanson87 0:d0adb548714f 1 #include "ADXL345_I2C.h"
peterswanson87 0:d0adb548714f 2
ledonger 2:c2067856a052 3 ADXL345_I2C accelerometer(D14, D15);
peterswanson87 0:d0adb548714f 4 Serial pc(USBTX, USBRX);
ledonger 2:c2067856a052 5
ledonger 2:c2067856a052 6 DigitalIn button(USER_BUTTON);
peterswanson87 0:d0adb548714f 7
peterswanson87 0:d0adb548714f 8 int main() {
peterswanson87 0:d0adb548714f 9 pc.baud(115200);
ledonger 2:c2067856a052 10 int16_t readings[3] = {0, 0, 0};
peterswanson87 0:d0adb548714f 11
peterswanson87 0:d0adb548714f 12 pc.printf("Starting ADXL345 test...\n");
peterswanson87 0:d0adb548714f 13 wait(.001);
peterswanson87 0:d0adb548714f 14 pc.printf("Device ID is: 0x%02x\n", accelerometer.getDeviceID());
peterswanson87 0:d0adb548714f 15 wait(.001);
peterswanson87 0:d0adb548714f 16
peterswanson87 0:d0adb548714f 17 // These are here to test whether any of the initialization fails. It will print the failure
peterswanson87 0:d0adb548714f 18 if (accelerometer.setPowerControl(0x00)){
peterswanson87 0:d0adb548714f 19 pc.printf("didn't intitialize power control\n");
peterswanson87 0:d0adb548714f 20 return 0; }
peterswanson87 0:d0adb548714f 21 //Full resolution, +/-16g, 4mg/LSB.
peterswanson87 0:d0adb548714f 22 wait(.001);
peterswanson87 0:d0adb548714f 23
peterswanson87 0:d0adb548714f 24 if(accelerometer.setDataFormatControl(0x0B)){
peterswanson87 0:d0adb548714f 25 pc.printf("didn't set data format\n");
peterswanson87 0:d0adb548714f 26 return 0; }
peterswanson87 0:d0adb548714f 27 wait(.001);
peterswanson87 0:d0adb548714f 28
peterswanson87 0:d0adb548714f 29 //3.2kHz data rate.
peterswanson87 0:d0adb548714f 30 if(accelerometer.setDataRate(ADXL345_3200HZ)){
peterswanson87 0:d0adb548714f 31 pc.printf("didn't set data rate\n");
peterswanson87 0:d0adb548714f 32 return 0; }
peterswanson87 0:d0adb548714f 33 wait(.001);
peterswanson87 0:d0adb548714f 34
peterswanson87 0:d0adb548714f 35 //Measurement mode.
peterswanson87 0:d0adb548714f 36
peterswanson87 0:d0adb548714f 37 if(accelerometer.setPowerControl(MeasurementMode)) {
peterswanson87 0:d0adb548714f 38 pc.printf("didn't set the power control to measurement\n");
peterswanson87 0:d0adb548714f 39 return 0; }
ledonger 2:c2067856a052 40 int nbPoints = 0;
peterswanson87 0:d0adb548714f 41 while (1) {
ledonger 2:c2067856a052 42
ledonger 2:c2067856a052 43
ledonger 2:c2067856a052 44 if(button != 0){
ledonger 2:c2067856a052 45 while(nbPoints < 3*10){
ledonger 2:c2067856a052 46 wait(0.1);
ledonger 2:c2067856a052 47 accelerometer.getOutput(readings);
ledonger 2:c2067856a052 48 pc.printf("%d,%d,%d,\n",readings[0],readings[1],readings[2]);
ledonger 2:c2067856a052 49 //pc.printf("%f,%f,%f,", (float)((int16_t)readings[0]+1000)/2000.0, (float)((int16_t)readings[1]+1000)/2000.0, (float)((int16_t)readings[2]+1000)/2000.0);
ledonger 2:c2067856a052 50
ledonger 2:c2067856a052 51 nbPoints += 3;
ledonger 2:c2067856a052 52 }
ledonger 2:c2067856a052 53 nbPoints = 0;
ledonger 2:c2067856a052 54 printf("\n");
ledonger 2:c2067856a052 55 }
peterswanson87 0:d0adb548714f 56 }
peterswanson87 0:d0adb548714f 57
peterswanson87 0:d0adb548714f 58 }