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
- Committer:
- quentin74100
- Date:
- 2015-04-08
- Revision:
- 0:d626d162d0ae
File content as of revision 0:d626d162d0ae:
#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; }