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
Revision 5:79b6af2faae0, committed 2018-06-26
- Comitter:
- giuseppe_guida
- Date:
- Tue Jun 26 21:51:35 2018 +0000
- Parent:
- 4:6458b40e48a6
- Commit message:
- Aggiunto l'invio dei dati su CAN. La BOARD ? la Nucleo F446RE! Verificare che tutti i pin siano corretti.
Changed in this revision
header.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/header.h Tue Jun 26 20:45:21 2018 +0000 +++ b/header.h Tue Jun 26 21:51:35 2018 +0000 @@ -4,6 +4,7 @@ //SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); Serial pc(USBTX,USBRX,9600); +CAN can1(PB_8,PB_9); typedef struct{ float x,y,z; @@ -11,4 +12,5 @@ //char* t; } DatiAccelerometro; -DatiAccelerometro vettore[BLOCCO]; \ No newline at end of file +DatiAccelerometro vettore[BLOCCO]; +
--- 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()); } } +