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 Unina_corse

Files at this revision

API Documentation at this revision

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());     
     }
 }
+