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-03
- Revision:
- 5:e1d0dc7940a6
- Parent:
- 4:d84250f67dec
- Child:
- 6:1c2212891714
File content as of revision 5:e1d0dc7940a6:
/* 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); //RTC time_t seconds; //SD card SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS FILE *fp; //Quelque FLAG... bool FLAG_SIMPLE_TIME = false; //COM Série Serial serialMonit (USBTX,USBRX,9600); //Serial 2 //Variable des capteurs int co2, ppO2; float pression, Temp1, Temp2, Humi; string DateHeure; /////////////////////////////////// // fonction initialisation ///// /////////////////////////////////// void setup() { //RTC seconds = time(NULL); DateHeure = ctime(&seconds); arnsrs.Sensors_INIT(); } ///////////////////////////////////// /// procédure principale ///////// ///////////////////////////////////// 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 while (1) { //RTC seconds = time(NULL); if (!FLAG_SIMPLE_TIME){ DateHeure = ctime(&seconds); printf(" Date / Heure = %s\r\n", DateHeure); }else{ char buffer[32]; strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); printf(" Heure = %s", buffer); } //CO2 / H / T sur Cozir co2 = arnsrs.cozirSend("Z")*10; // on multiplie par 10 pour etre en ppm //serialMonit.printf(" co2 COZIR par methode request = %5d\r\n" ,request('Z')*10); // on multiplie par 10 pour etre en ppm (méthode précédente) Humi = (float)arnsrs.cozirSend ("H") / 10; // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x% //serialMonit.printf(" H COZIR par methode request = %5d\r\n" ,request('H')); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x% Temp1 = (float)(arnsrs.cozirSend ("T")-1000) / 10; // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C //serialMonit.printf(" T COZIR par methode request = %5d\r\n" ,request('T')-1000); pression = arnsrs.requestPress(); Temp2 = arnsrs.requestTemp(); //PPO2 sur ADS1015 ppO2 = arnsrs.requestPpO2(); //Affichage sur moniteur série serialMonit.printf(" co2 COZIR par methode cozirSend = %d\r\n" , co2); // on multiplie par 10 pour etre en ppm //serialMonit.printf(" co2 COZIR par methode request = %5d\r\n" ,request('Z')*10); // on multiplie par 10 pour etre en ppm (méthode précédente) serialMonit.printf(" H COZIR par methode cozirSend = %f\r\n" , Humi); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x% //serialMonit.printf(" H COZIR par methode request = %5d\r\n" ,request('H')); // à laisser comme ça pour transmettre en BLE mais à diviser par 10 à réception dans l'app android pour être en xx,x% serialMonit.printf(" T COZIR par methode cozirSend = %f\r\n" ,Temp1); // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C //serialMonit.printf(" T COZIR par methode request = %5d\r\n" ,request('T')-1000); // à laisser comme ça pour envoi BLE et à diviser par 10 à réception dans l'app android pour etre en yy,y°C //P / T sur MS5803 serialMonit.printf(" Pression MS5803 = %f\r\n", pression); serialMonit.printf(" Temperature MS5803 = %f\r\n", Temp2); //PPO2 sur ADS1015 serialMonit.printf(" PPO2 sur ADS1015 = %d\r\n", ppO2); serialMonit.printf("\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 } } }