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
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 #include "x_cube_mems.h" 00004 00005 DigitalIn bouton(USER_BUTTON); 00006 //DigitalOut myled(LED1); 00007 00008 //Initialisation de la communication avec la carte SD via SPI 00009 SDFileSystem sd(D11, D12, D13, D10, "sd"); 00010 00011 //Déclaration des variables pour les capteurs 00012 volatile float TEMPERATURE_Value_C; 00013 volatile float HUMIDITY_Value; 00014 volatile float PRESSURE_Value; 00015 volatile AxesRaw_TypeDef MAG_Value; 00016 volatile AxesRaw_TypeDef ACC_Value; 00017 volatile AxesRaw_TypeDef GYR_Value; 00018 00019 00020 // Creation de l'objet carte MEMS 00021 static X_CUBE_MEMS *mems_expansion_board = X_CUBE_MEMS::Instance(); 00022 00023 // Fonction permettant la prise de mesure de tous les capteurs instantanément 00024 void capture_donnees (){ 00025 mems_expansion_board->hts221.GetTemperature((float *)&TEMPERATURE_Value_C); 00026 mems_expansion_board->hts221.GetHumidity((float *)&HUMIDITY_Value); 00027 mems_expansion_board->lps25h.GetPressure((float *)&PRESSURE_Value); 00028 mems_expansion_board->lis3mdl.GetAxes((AxesRaw_TypeDef *)&MAG_Value); 00029 mems_expansion_board->lsm6ds0.Acc_GetAxes((AxesRaw_TypeDef *)&ACC_Value); 00030 mems_expansion_board->lsm6ds0.Gyro_GetAxes((AxesRaw_TypeDef *)&GYR_Value); 00031 } 00032 00033 00034 00035 int main() { 00036 00037 // Attente de l'action de l'utilisateur pour lancer la capture des données 00038 while(bouton != 0){ 00039 wait(0.1); 00040 } 00041 00042 mkdir("/sd/DefiFoly2015", 0777); 00043 //Création du fichier s'il n'existe pas et écriture de l'entete utile pour le parser 00044 FILE *fichier = fopen("/sd/DefiFoly2015/run.txt", "a"); 00045 fprintf(fichier, "P\tT\tH\tAccX\tAccY\tAccZ\tGyrX\tGyrY\tGyrZ\tMagX\tMagY\tMagZ\n"); 00046 00047 //Capture des données et écriture dans le fichier jusqu'à une pression de bouton 00048 while(bouton != 0){ 00049 00050 capture_donnees(); 00051 wait(0.01); 00052 if (fichier != NULL){ 00053 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, 00054 ACC_Value.AXIS_X, ACC_Value.AXIS_Y, ACC_Value.AXIS_Z, 00055 GYR_Value.AXIS_X, GYR_Value.AXIS_Y, GYR_Value.AXIS_Z, 00056 MAG_Value.AXIS_X, MAG_Value.AXIS_Y, MAG_Value.AXIS_Z); 00057 } 00058 00059 } 00060 //Fermeture du fichier une fois le run terminé 00061 fclose(fichier); 00062 return 0; 00063 } 00064
Generated on Wed Jul 27 2022 13:04:54 by 1.7.2