Microcontrôleurs / testadxl
Committer:
brunostgr
Date:
Tue May 28 00:25:23 2019 +0000
Revision:
2:73fd396b4d49
Parent:
0:d0adb548714f
test

Who changed what in which revision?

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