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:
6:1c2212891714
Parent:
5:e1d0dc7940a6
Child:
7:c5a5d8f678ff

File content as of revision 6:1c2212891714:

/* 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;

//Quelque FLAG...
bool FLAG_SIMPLE_TIME = false;

//COM Série
Serial serialMonit (USBTX,USBRX); //Serial 2

//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;

///////////////////////////////////
// fonction initialisation    /////
///////////////////////////////////
void setup()
{
    //RTC
    seconds = time(NULL);
    DateHeure = ctime(&seconds);

    arnsrs.Sensors_INIT(5, SPOOLING, DIGI_FILTER32, CALIB_AIR);

}

/////////////////////////////////////
/// 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) {

        wait(2);
        
        //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.requestCO2();
        Humi = arnsrs.requestHUMI();
        Temp1 = arnsrs.requestTEMP(); 
        
        //P / T sur MS5803_14BA
        pression = arnsrs.requestPress();
        Temp2 =  arnsrs.requestTemp();

        //PPO2 sur ADS1015
        ppO2 = arnsrs.requestPpO2();

        //Affichage sur moniteur série
        serialMonit.printf("  Co2           = %d\r\n"  , co2);   
        serialMonit.printf("  Humidité      = %f\r\n"  , Humi); 
        serialMonit.printf("  Temperature   = %f\r\n"  ,Temp1);
        //P / T sur MS5803
        serialMonit.printf("  Pression      = %f\r\n", pression);
        serialMonit.printf("  Temperature   = %f\r\n", Temp2);
        //PPO2 sur ADS1015
        serialMonit.printf("  PPO2          = %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
        }
    }
}