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
main.cpp
- Committer:
- POTLESS_2
- Date:
- 2017-05-04
- Revision:
- 11:278bdb497ba3
- Parent:
- 9:d945fa4be3a5
- Child:
- 12:9ac5be447764
File content as of revision 11:278bdb497ba3:
/* procédure lecture capteur COZIR ou MINIR - CO2 seul sur broches F401RE SERIAL PA_11 et PA_12 renvoie sur moniteur (IDE arduino par exemple) de la valeur lue procédures possibles sont : request (char commande) - renvoie la valeur lue si la commande ne représente qu'un seul caractère (entre '') cozirSend (string commande) - permet d'envoyer des commandes multicaractères (entre "") - exemple A 32 - donne la réponse obtenue la fonction cozirSend est davantage "sécurisée" */ #include "mbed.h" #include "SDFileSystem.h" #include "ARNSRS_SENSORS.h" //Init de la lib ARNSRS; ARNSRS arnsrs; //Bouton et led de la carte DigitalIn mybutton(USER_BUTTON); DigitalOut myled(LED1); //Quelque FLAG... bool FLAG_SIMPLE_TIME = false; //COM Série vers l'ordi, Serial 2 par défaut Serial serialMonit (USBTX,USBRX); //Variable des capteurs int co2, ppO2; float pression, Temp1, Temp2, Humi; string DateHeure; //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() { //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(false, 5, SPOOLING, DIGI_FILTER32, CALIB_AIR); } ///////////////////////////////////// /// procédure principale ///////// ///////////////////////////////////// int main() { setup(); while (1) { wait(2); //RTC time_t seconds = time(NULL); if (!FLAG_SIMPLE_TIME){ printf(" Date / Heure = %s\r\n", ctime(&seconds)); }else{ char buffer[32]; strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); printf(" Heure = %s", buffer); } //CO2 / H / T sur Cozir co2 = arnsrs.requestCO2(); Humi = arnsrs.requestHUMI(); Temp1 = arnsrs.requestTEMP(); //P / T sur MS5803_14BA pression = arnsrs.requestPress(); Temp2 = arnsrs.requestTemp(); //PPO2 sur ADS1015 ppO2 = arnsrs.requestPpO2(false); //Affichage sur moniteur série serialMonit.printf(" CO2 = %d\r\n" , co2); serialMonit.printf(" Humidité = %f\r\n" , Humi); serialMonit.printf(" Température = %f\r\n" ,Temp1); //P / T sur MS5803 serialMonit.printf(" Pression = %f\r\n", pression); 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 FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME; wait(0.2); // 200 ms } } }