Peter Swanson / ADXL345_I2C参考 http://mbed.org/users/peterswanson87/code/ADXL345_I2C/
Fork of ADXL345_I2C by
main.cpp@2:84e6d627c619, 2013-08-01 (annotated)
- Committer:
- emanon
- Date:
- Thu Aug 01 08:13:05 2013 +0000
- Revision:
- 2:84e6d627c619
- Parent:
- 0:d0adb548714f
ADXL354_I2C ???????
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 | |
emanon | 2:84e6d627c619 | 3 | DigitalOut myled(LED1); |
emanon | 2:84e6d627c619 | 4 | ADXL345_I2C accelerometer(p9, p10); |
emanon | 2:84e6d627c619 | 5 | Serial pc(USBTX, USBRX); |
peterswanson87 | 0:d0adb548714f | 6 | |
emanon | 2:84e6d627c619 | 7 | int main() { |
emanon | 2:84e6d627c619 | 8 | pc.baud(115200); |
emanon | 2:84e6d627c619 | 9 | // pc.baud(9600); |
emanon | 2:84e6d627c619 | 10 | myled = 1; |
emanon | 2:84e6d627c619 | 11 | |
emanon | 2:84e6d627c619 | 12 | int readings[3] = {0, 0, 0}; |
emanon | 2:84e6d627c619 | 13 | |
emanon | 2:84e6d627c619 | 14 | pc.printf("Starting ADXL345 test...\n"); |
emanon | 2:84e6d627c619 | 15 | wait(.001); |
emanon | 2:84e6d627c619 | 16 | pc.printf("Device ID is: 0x%02x\n", accelerometer.getDeviceID()); |
peterswanson87 | 0:d0adb548714f | 17 | wait(.001); |
peterswanson87 | 0:d0adb548714f | 18 | |
emanon | 2:84e6d627c619 | 19 | // These are here to test whether any of the initialization fails. It will print the failure |
peterswanson87 | 0:d0adb548714f | 20 | if (accelerometer.setPowerControl(0x00)){ |
emanon | 2:84e6d627c619 | 21 | pc.printf("didn't intitialize power control\n"); |
emanon | 2:84e6d627c619 | 22 | return 0; |
emanon | 2:84e6d627c619 | 23 | } |
emanon | 2:84e6d627c619 | 24 | //Full resolution, +/-16g, 4mg/LSB. |
emanon | 2:84e6d627c619 | 25 | wait(.001); |
peterswanson87 | 0:d0adb548714f | 26 | |
emanon | 2:84e6d627c619 | 27 | if(accelerometer.setDataFormatControl(0x0B)){ |
peterswanson87 | 0:d0adb548714f | 28 | pc.printf("didn't set data format\n"); |
peterswanson87 | 0:d0adb548714f | 29 | return 0; } |
emanon | 2:84e6d627c619 | 30 | wait(.001); |
emanon | 2:84e6d627c619 | 31 | |
emanon | 2:84e6d627c619 | 32 | //3.2kHz data rate. |
emanon | 2:84e6d627c619 | 33 | if(accelerometer.setDataRate(ADXL345_3200HZ)){ |
peterswanson87 | 0:d0adb548714f | 34 | pc.printf("didn't set data rate\n"); |
emanon | 2:84e6d627c619 | 35 | return 0; |
emanon | 2:84e6d627c619 | 36 | } |
emanon | 2:84e6d627c619 | 37 | wait(.001); |
emanon | 2:84e6d627c619 | 38 | |
emanon | 2:84e6d627c619 | 39 | //Measurement mode. |
emanon | 2:84e6d627c619 | 40 | |
emanon | 2:84e6d627c619 | 41 | if(accelerometer.setPowerControl(MeasurementMode)) { |
peterswanson87 | 0:d0adb548714f | 42 | pc.printf("didn't set the power control to measurement\n"); |
emanon | 2:84e6d627c619 | 43 | return 0; |
emanon | 2:84e6d627c619 | 44 | } |
emanon | 2:84e6d627c619 | 45 | myled = 0; |
emanon | 2:84e6d627c619 | 46 | |
emanon | 2:84e6d627c619 | 47 | while (1) { |
peterswanson87 | 0:d0adb548714f | 48 | wait(0.1); |
peterswanson87 | 0:d0adb548714f | 49 | |
peterswanson87 | 0:d0adb548714f | 50 | accelerometer.getOutput(readings); |
emanon | 2:84e6d627c619 | 51 | pc.printf("%+4.2f, %+4.2f, %+4.2f\n", |
emanon | 2:84e6d627c619 | 52 | (float((int16_t)readings[0]+18)/256), |
emanon | 2:84e6d627c619 | 53 | (float((int16_t)readings[1]-4 )/256), |
emanon | 2:84e6d627c619 | 54 | (float((int16_t)readings[2]+22)/256)); |
emanon | 2:84e6d627c619 | 55 | } |
emanon | 2:84e6d627c619 | 56 | } |