Programme réalisé dans le cadre de projet RICM4 à Polytech Grenoble. Le but est d'instrumenter un monoski qui participer à la course du Défi Foly 2015 à La Clusaz grâce à la carte STM32 Nucleo et ainsi récupérer le mesures sur un carte SD

Dependencies:   Nucleo_Sensor_Shield SDFileSystem mbed

Revision:
0:d626d162d0ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Apr 08 09:37:23 2015 +0000
@@ -0,0 +1,64 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "x_cube_mems.h"
+
+DigitalIn bouton(USER_BUTTON);
+//DigitalOut myled(LED1);
+
+//Initialisation de la communication avec la carte SD via SPI
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+//Déclaration des variables pour les capteurs
+volatile float TEMPERATURE_Value_C;
+volatile float HUMIDITY_Value;
+volatile float PRESSURE_Value;
+volatile AxesRaw_TypeDef MAG_Value;
+volatile AxesRaw_TypeDef ACC_Value;
+volatile AxesRaw_TypeDef GYR_Value;
+
+
+// Creation de l'objet carte MEMS 
+static X_CUBE_MEMS *mems_expansion_board = X_CUBE_MEMS::Instance();
+
+// Fonction permettant la prise de mesure de tous les capteurs instantanément                    
+void capture_donnees (){
+    mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value_C);
+    mems_expansion_board->hts221.GetHumidity((float *)&HUMIDITY_Value);
+    mems_expansion_board->lps25h.GetPressure((float *)&PRESSURE_Value);
+    mems_expansion_board->lis3mdl.GetAxes((AxesRaw_TypeDef *)&MAG_Value);
+    mems_expansion_board->lsm6ds0.Acc_GetAxes((AxesRaw_TypeDef *)&ACC_Value);
+    mems_expansion_board->lsm6ds0.Gyro_GetAxes((AxesRaw_TypeDef *)&GYR_Value);
+    }           
+
+
+
+int main() {
+    
+    // Attente de l'action de l'utilisateur pour lancer la capture des données
+    while(bouton != 0){
+        wait(0.1);
+    }
+    
+    mkdir("/sd/DefiFoly2015", 0777);
+    //Création du fichier s'il n'existe pas et écriture de l'entete utile pour le parser
+    FILE *fichier = fopen("/sd/DefiFoly2015/run.txt", "a");
+    fprintf(fichier, "P\tT\tH\tAccX\tAccY\tAccZ\tGyrX\tGyrY\tGyrZ\tMagX\tMagY\tMagZ\n");
+    
+    //Capture des données et écriture dans le fichier jusqu'à une pression de bouton
+    while(bouton != 0){
+        
+        capture_donnees();
+         wait(0.01);
+        if (fichier != NULL){    
+        fprintf(fichier,"%f\t%f\t%f\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", PRESSURE_Value, TEMPERATURE_Value_C, HUMIDITY_Value, 
+                                                                            ACC_Value.AXIS_X, ACC_Value.AXIS_Y, ACC_Value.AXIS_Z, 
+                                                                            GYR_Value.AXIS_X, GYR_Value.AXIS_Y, GYR_Value.AXIS_Z, 
+                                                                            MAG_Value.AXIS_X, MAG_Value.AXIS_Y, MAG_Value.AXIS_Z);
+        }
+       
+    }
+    //Fermeture du fichier une fois le run terminé
+    fclose(fichier);
+    return 0;
+}
+ 
\ No newline at end of file