une 30aine passés sans pb entre les trames
Dependencies: ADS1015 ARNSRS_SENSORS DmTftLibrary MS5803_14BA SDFileSystem mbed
Fork of ARNSRS_SERVOS_USB_TFT by
Diff: main.cpp
- Revision:
- 7:c5a5d8f678ff
- Parent:
- 6:1c2212891714
- Child:
- 8:e864edfe656e
--- a/main.cpp Wed May 03 15:03:20 2017 +0000 +++ b/main.cpp Wed May 03 16:32:37 2017 +0000 @@ -22,9 +22,6 @@ DigitalIn mybutton(USER_BUTTON); DigitalOut myled(LED1); -//RTC -time_t seconds; - //Quelque FLAG... bool FLAG_SIMPLE_TIME = false; @@ -39,18 +36,59 @@ //SD card SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS FILE *fp; +char fileName[32]; +int points = 1; +//Fonction qui change le nom du fichier ouvert pour le LOG +FILE *nextLogFile(void) +{ + static unsigned int fileNumber = 0; + FILE *filePtr = NULL; + do { + if (filePtr != NULL) + fclose(filePtr); + sprintf(fileName,"/sd/LOG_Capteurs_%04u.txt",fileNumber++); + filePtr = fopen(fileName,"r"); + } while (filePtr != NULL); + return fopen( fileName,"w"); +} +void SetTime() { + //Reglage date / heure depuis le terminal + struct tm t; + printf("Entrer la date et l'heure :\n"); + printf("YYYY MM DD HH MM SS [enter]\n"); + scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday + , &t.tm_hour, &t.tm_min, &t.tm_sec); + t.tm_year = t.tm_year - 1900; + t.tm_mon = t.tm_mon - 1; + + // set the time + set_time(mktime(&t)); +} /////////////////////////////////// // fonction initialisation ///// /////////////////////////////////// void setup() { - //RTC - seconds = time(NULL); - DateHeure = ctime(&seconds); - + //Réglage de l'heure + SetTime(); + + wait(2); + + //Initialisation DATA LOG + serialMonit.printf("Initialisation SD card\r\n"); + fp = nextLogFile(); + + if (!fp) { + serialMonit.printf("Probleme SD card...Fin du programme...\r\n"); + exit(0); + }else{ + serialMonit.printf("Nouveau fichier LOG cree = %s\r\n", fileName); + serialMonit.printf("\r\n", ""); + } + + //Initialisation capteurs arnsrs.Sensors_INIT(5, SPOOLING, DIGI_FILTER32, CALIB_AIR); - } ///////////////////////////////////// @@ -59,37 +97,17 @@ int main() { - wait(2); - - serialMonit.printf("Initialisation SD card\r\n"); - fp = fopen("/sd/Capteurs.txt", "r"); - if (fp != NULL) { - fclose(fp); - remove("/sd/Capteurs.txt"); - serialMonit.printf("Suppression d'un fichier du meme nom\r\n"); - } - - fp = fopen("/sd/Capteurs.txt", "w"); - if (fp == NULL) { - serialMonit.printf("Impossible d'ouvrir le fichier LOG\r\n"); - } else { - fprintf(fp, "LOG Capteurs ARNSRS"); - fclose(fp); - serialMonit.printf("Header du fichier cree\r\n"); - } - - setup(); //initialisation + setup(); while (1) { wait(2); //RTC - seconds = time(NULL); + time_t seconds = time(NULL); if (!FLAG_SIMPLE_TIME){ - DateHeure = ctime(&seconds); - printf(" Date / Heure = %s\r\n", DateHeure); + printf(" Date / Heure = %s\r\n", ctime(&seconds)); }else{ char buffer[32]; strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); @@ -109,18 +127,29 @@ ppO2 = arnsrs.requestPpO2(); //Affichage sur moniteur série - serialMonit.printf(" Co2 = %d\r\n" , co2); + serialMonit.printf(" CO2 = %d\r\n" , co2); serialMonit.printf(" Humidité = %f\r\n" , Humi); - serialMonit.printf(" Temperature = %f\r\n" ,Temp1); + serialMonit.printf(" Température = %f\r\n" ,Temp1); //P / T sur MS5803 serialMonit.printf(" Pression = %f\r\n", pression); - serialMonit.printf(" Temperature = %f\r\n", Temp2); + serialMonit.printf(" Température = %f\r\n", Temp2); //PPO2 sur ADS1015 serialMonit.printf(" PPO2 = %d\r\n", ppO2); serialMonit.printf("\r\n", ""); + //Data LOG + if (fp) { + fprintf(fp, "%s,%d,%d,%f,%f,%f,%f\r\n", ctime(&seconds), co2 , ppO2, pression, Temp1, Temp2, Humi); + serialMonit.printf(" Enregistrement d'un point sur la carte SD\r\n"); + serialMonit.printf(" Nombre de points = %d\r\n", points); + serialMonit.printf("\r\n", ""); + myled = !myled; + points++; + }else{ + serialMonit.printf(" Probleme carte SD\r\n"); + } + if (mybutton == 0) { // Button is pressed - myled = !myled; // Toggle the LED state FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME; wait(0.2); // 200 ms }