The ADXL345 is well suited for mobile device applications. It measures the static acceleration of gravity in tilt-sensing applications, as well as dynamic acceleration resulting from motion or shock. Its high resolution (4 mg/LSB) enables measurement of inclination changes less than 1.0°.
Several special sensing functions are provided. Activity and inactivity sensing detect the presence or lack of motion and if the acceleration on any axis exceeds a user-set level. Tap sensing detects single and double taps. Free-fall sensing detects if the device is falling. These functions can be mapped to one of two interrupt output pins. An integrated, patent pending 32-level first in, first out (FIFO) buffer can be used to store data to minimize host processor intervention.
Connection
I used the following connection from the module above to my MBED 1768
MBED Connection | Module Connection |
3v3 – VOUT | VCC |
Gnd | Gnd |
SDA – Pin 28 | SDA |
SCL – Pin 27 | SCL |
This is a layout showing the connection
Code
This needs the following example – https://developer.mbed.org/users/peterswanson87/code/ADXL345_I2C/ – Add this to the MBed compiler
Here is the code
[codesyntax lang=”cpp”]
#include "ADXL345_I2C.h" ADXL345_I2C accelerometer(p28, p27); Serial pc(USBTX, USBRX); int main() { pc.baud(115200); int readings[3] = {0, 0, 0}; pc.printf("Starting ADXL345 test...\n"); wait(.001); pc.printf("Device ID is: 0x%02x\n", accelerometer.getDeviceID()); wait(.001); // These are here to test whether any of the initialization fails. It will print the failure if (accelerometer.setPowerControl(0x00)){ pc.printf("didn't intitialize power control\n"); return 0; } //Full resolution, +/-16g, 4mg/LSB. wait(.001); if(accelerometer.setDataFormatControl(0x0B)){ pc.printf("didn't set data format\n"); return 0; } wait(.001); //3.2kHz data rate. if(accelerometer.setDataRate(ADXL345_3200HZ)){ pc.printf("didn't set data rate\n"); return 0; } wait(.001); //Measurement mode. if(accelerometer.setPowerControl(MeasurementMode)) { pc.printf("didn't set the power control to measurement\n"); return 0; } while (1) { wait(0.1); accelerometer.getOutput(readings); pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]); } }
[/codesyntax]
Links
GY-291 ADXL345 3-Axis Digital Gravity Sensor Acceleration Module IIC/SPI transmission