IL programma di acquisizione dati dall'accelerometro. Acquisisce 5000 campioni al secondo. Bisogna fare la parte di scrittura su SD. Per la board Nucleo!
Dependencies: SDFileSystemFunzionante mbed
Fork of Nucleo_rtos_basic_copyProva_Quirino by
Diff: main.cpp
- Revision:
- 5:79b6af2faae0
- Parent:
- 4:6458b40e48a6
--- a/main.cpp Tue Jun 26 20:45:21 2018 +0000 +++ b/main.cpp Tue Jun 26 21:51:35 2018 +0000 @@ -7,6 +7,7 @@ { i2c.frequency(400000); MPU6050 mpu6050; + CANMessage msg; uint8_t whoami = mpu6050.readByte(MPU6050_ADDRESS, WHO_AM_I_MPU6050); // Read WHO_AM_I register for MPU-6050 //pc.printf("I AM 0x%x\n\r", whoami); pc.printf("I SHOULD BE 0x68\n\r"); @@ -71,15 +72,23 @@ // Calculate the gyro value into actual degrees per second vettore[i].xx = (float)gyroCount[0]*gRes; // - gyroBias[0]; // get actual gyro value, this depends on scale being set vettore[i].yy = (float)gyroCount[1]*gRes; // - gyroBias[1]; - vettore[i].zz = (float)gyroCount[2]*gRes; // - gyroBias[2]; + vettore[i].zz = (float)gyroCount[2]*gRes; // - gyroBias[2]; + + //invio i dati sul CAN + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].x),sizeof(vettore[i].x))); + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].y),sizeof(vettore[i].y))); + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].z),sizeof(vettore[i].z))); + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].xx),sizeof(vettore[i].xx))); + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].yy),sizeof(vettore[i].yy))); + can1.write(CANMessage(1337,reinterpret_cast<char*>(&vettore[i].zz),sizeof(vettore[i].zz))); } pc.printf("%03.0f %03.0f %03.0f %03.0f %03.0f %03.0f\n\r",100*vettore[i].x+off_set_a,100*vettore[i].y+off_set_a,100*vettore[i].z+off_set_a,100*vettore[i].xx+off_set_a,100*vettore[i].yy+off_set_a,100*vettore[i].zz+off_set_a); - wait(0.02); } //temp3.stop(); //pc.printf("Tempo impiegato per l'acquisizione di 1000 elementi: %f\n\r",temp3.read()); } } +