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.
Fork of ADXL345_I2C by
main.cpp@2:c2067856a052, 2017-10-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |