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 POTLESS

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
        }
    }
}