![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
con timer
Dependencies: X_NUCLEO_IKS01A2 mbed
Fork of HelloWorld_IKS01A2 by
Diff: main.cpp
- Revision:
- 15:25999e71b22d
- Parent:
- 14:de30b189c5ec
- Child:
- 16:553a1c68d606
--- a/main.cpp Fri Feb 10 18:52:39 2017 +0000 +++ b/main.cpp Sat Feb 11 15:18:54 2017 +0000 @@ -36,13 +36,14 @@ wait(1.5); acc_gyro->Get_G_Axes(axes); printf("LSM6DSL [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]); - for(int i=0;i<3;i++){ + for(int i=0;i<3;i++){ off[i]=axes[i];} printf("off [gyro/mdps]: %6ld, %6ld, %6ld\r\n", off[0], off[1], off[2]); while(1) { printf("\r\n"); acc_gyro->Get_X_Axes(axes); + printf("LSM6DSL [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]); acc_gyro->Get_G_Axes(axes); @@ -51,20 +52,24 @@ {axes[i]=axes[i]-off[i];} printf("LSM6DSLfine [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]); k=k+1; - wait_m(1); + wait_ms(1); - // ricavo l'parziale dalla velocità angolare + // ricavo il parziale dalla velocità angolare for(int i=0;i<3;i++) { - parziale[i]=(axes[i]*sens)/1000; + parziale[i]=(axes[i]*sens)/1000;// passo da mdps a dpLSB + +finale[i]=(finale[i]-19)/2.84;// levo la correzione per poter sommare i dati parziali + parziale[i]/= 1000;// moltiplico per il dt (1ms) + if (axes[i]>150 ||axes[i]<-150) + finale[i] += parziale[i]; // integro + + finale[i]=(finale[i]*2.84)+19;// correggo offset e guadagno che ho ricavato da una "taratura" grezza (ricavo la retta ) + +} - parziale[i]/= 1000; - if (axes[i]>150 ||axes[i]<-150) - finale[i] += parziale[i]; - -} printf("finale [gyro/d]: %6f, %6f, %6f\r\n", finale[0], finale[1], finale[2]);//angolo } }