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@5:e1d0dc7940a6, 2017-05-03 (annotated)
- Committer:
- POTLESS_2
- Date:
- Wed May 03 08:12:47 2017 +0000
- Revision:
- 5:e1d0dc7940a6
- Parent:
- 4:d84250f67dec
- Child:
- 6:1c2212891714
Version code utilisant la librairie ARNSRS_SENSORS...A tester plus profond?ment....
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
potless | 1:bef7856b5c0a | 1 | /* procédure lecture capteur COZIR ou MINIR - CO2 seul |
potless | 1:bef7856b5c0a | 2 | sur broches F401RE SERIAL PA_11 et PA_12 |
potless | 1:bef7856b5c0a | 3 | renvoie sur moniteur (IDE arduino par exemple) de la valeur lue |
potless | 2:4a8bf1d53439 | 4 | |
potless | 2:4a8bf1d53439 | 5 | procédures possibles sont : |
potless | 2:4a8bf1d53439 | 6 | request (char commande) - renvoie la valeur lue si la commande ne représente qu'un seul caractère (entre '') |
potless | 2:4a8bf1d53439 | 7 | cozirSend (string commande) - permet d'envoyer des commandes multicaractères (entre "") - exemple A 32 - donne la réponse obtenue |
potless | 2:4a8bf1d53439 | 8 | |
potless | 2:4a8bf1d53439 | 9 | |
potless | 2:4a8bf1d53439 | 10 | la fonction cozirSend est davantage "sécurisée" |
POTLESS_2 | 4:d84250f67dec | 11 | */ |
potless | 0:69d4b21d58e0 | 12 | |
potless | 0:69d4b21d58e0 | 13 | |
potless | 1:bef7856b5c0a | 14 | #include "mbed.h" |
POTLESS_2 | 5:e1d0dc7940a6 | 15 | #include "SDFileSystem.h" |
POTLESS_2 | 5:e1d0dc7940a6 | 16 | #include "ARNSRS_SENSORS.h" |
POTLESS_2 | 5:e1d0dc7940a6 | 17 | |
POTLESS_2 | 5:e1d0dc7940a6 | 18 | //Init de la lib ARNSRS; |
POTLESS_2 | 5:e1d0dc7940a6 | 19 | ARNSRS arnsrs; |
POTLESS_2 | 5:e1d0dc7940a6 | 20 | |
POTLESS_2 | 5:e1d0dc7940a6 | 21 | //Bouton et led de la carte |
POTLESS_2 | 5:e1d0dc7940a6 | 22 | DigitalIn mybutton(USER_BUTTON); |
POTLESS_2 | 5:e1d0dc7940a6 | 23 | DigitalOut myled(LED1); |
POTLESS_2 | 4:d84250f67dec | 24 | |
POTLESS_2 | 5:e1d0dc7940a6 | 25 | //RTC |
POTLESS_2 | 5:e1d0dc7940a6 | 26 | time_t seconds; |
POTLESS_2 | 5:e1d0dc7940a6 | 27 | |
POTLESS_2 | 5:e1d0dc7940a6 | 28 | //SD card |
POTLESS_2 | 5:e1d0dc7940a6 | 29 | SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS |
POTLESS_2 | 5:e1d0dc7940a6 | 30 | FILE *fp; |
POTLESS_2 | 5:e1d0dc7940a6 | 31 | |
POTLESS_2 | 5:e1d0dc7940a6 | 32 | //Quelque FLAG... |
POTLESS_2 | 5:e1d0dc7940a6 | 33 | bool FLAG_SIMPLE_TIME = false; |
potless | 1:bef7856b5c0a | 34 | |
POTLESS_2 | 4:d84250f67dec | 35 | //COM Série |
POTLESS_2 | 5:e1d0dc7940a6 | 36 | Serial serialMonit (USBTX,USBRX,9600); //Serial 2 |
potless | 2:4a8bf1d53439 | 37 | |
POTLESS_2 | 5:e1d0dc7940a6 | 38 | //Variable des capteurs |
POTLESS_2 | 5:e1d0dc7940a6 | 39 | int co2, ppO2; |
POTLESS_2 | 5:e1d0dc7940a6 | 40 | float pression, Temp1, Temp2, Humi; |
POTLESS_2 | 5:e1d0dc7940a6 | 41 | string DateHeure; |
potless | 2:4a8bf1d53439 | 42 | |
POTLESS_2 | 4:d84250f67dec | 43 | |
potless | 2:4a8bf1d53439 | 44 | /////////////////////////////////// |
potless | 2:4a8bf1d53439 | 45 | // fonction initialisation ///// |
potless | 2:4a8bf1d53439 | 46 | /////////////////////////////////// |
POTLESS_2 | 4:d84250f67dec | 47 | void setup() |
POTLESS_2 | 4:d84250f67dec | 48 | { |
POTLESS_2 | 5:e1d0dc7940a6 | 49 | //RTC |
POTLESS_2 | 5:e1d0dc7940a6 | 50 | seconds = time(NULL); |
POTLESS_2 | 5:e1d0dc7940a6 | 51 | DateHeure = ctime(&seconds); |
potless | 2:4a8bf1d53439 | 52 | |
POTLESS_2 | 5:e1d0dc7940a6 | 53 | arnsrs.Sensors_INIT(); |
POTLESS_2 | 4:d84250f67dec | 54 | |
potless | 0:69d4b21d58e0 | 55 | } |
potless | 0:69d4b21d58e0 | 56 | |
potless | 1:bef7856b5c0a | 57 | ///////////////////////////////////// |
potless | 1:bef7856b5c0a | 58 | /// procédure principale ///////// |
potless | 1:bef7856b5c0a | 59 | ///////////////////////////////////// |
potless | 0:69d4b21d58e0 | 60 | |
POTLESS_2 | 4:d84250f67dec | 61 | int main() |
POTLESS_2 | 4:d84250f67dec | 62 | { |
POTLESS_2 | 5:e1d0dc7940a6 | 63 | wait(2); |
POTLESS_2 | 5:e1d0dc7940a6 | 64 | |
POTLESS_2 | 5:e1d0dc7940a6 | 65 | serialMonit.printf("Initialisation SD card\r\n"); |
POTLESS_2 | 5:e1d0dc7940a6 | 66 | fp = fopen("/sd/Capteurs.txt", "r"); |
POTLESS_2 | 5:e1d0dc7940a6 | 67 | if (fp != NULL) { |
POTLESS_2 | 5:e1d0dc7940a6 | 68 | fclose(fp); |
POTLESS_2 | 5:e1d0dc7940a6 | 69 | remove("/sd/Capteurs.txt"); |
POTLESS_2 | 5:e1d0dc7940a6 | 70 | serialMonit.printf("Suppression d'un fichier du meme nom\r\n"); |
POTLESS_2 | 5:e1d0dc7940a6 | 71 | } |
POTLESS_2 | 5:e1d0dc7940a6 | 72 | |
POTLESS_2 | 5:e1d0dc7940a6 | 73 | fp = fopen("/sd/Capteurs.txt", "w"); |
POTLESS_2 | 5:e1d0dc7940a6 | 74 | if (fp == NULL) { |
POTLESS_2 | 5:e1d0dc7940a6 | 75 | serialMonit.printf("Impossible d'ouvrir le fichier LOG\r\n"); |
POTLESS_2 | 5:e1d0dc7940a6 | 76 | } else { |
POTLESS_2 | 5:e1d0dc7940a6 | 77 | fprintf(fp, "LOG Capteurs ARNSRS"); |
POTLESS_2 | 5:e1d0dc7940a6 | 78 | fclose(fp); |
POTLESS_2 | 5:e1d0dc7940a6 | 79 | serialMonit.printf("Header du fichier cree\r\n"); |
POTLESS_2 | 5:e1d0dc7940a6 | 80 | } |
POTLESS_2 | 5:e1d0dc7940a6 | 81 | |
POTLESS_2 | 5:e1d0dc7940a6 | 82 | setup(); //initialisation |
potless | 2:4a8bf1d53439 | 83 | |
POTLESS_2 | 4:d84250f67dec | 84 | while (1) { |
POTLESS_2 | 5:e1d0dc7940a6 | 85 | |
POTLESS_2 | 5:e1d0dc7940a6 | 86 | //RTC |
POTLESS_2 | 5:e1d0dc7940a6 | 87 | seconds = time(NULL); |
POTLESS_2 | 5:e1d0dc7940a6 | 88 | |
POTLESS_2 | 5:e1d0dc7940a6 | 89 | if (!FLAG_SIMPLE_TIME){ |
POTLESS_2 | 5:e1d0dc7940a6 | 90 | DateHeure = ctime(&seconds); |
POTLESS_2 | 5:e1d0dc7940a6 | 91 | printf(" Date / Heure = %s\r\n", DateHeure); |
POTLESS_2 | 5:e1d0dc7940a6 | 92 | }else{ |
POTLESS_2 | 5:e1d0dc7940a6 | 93 | char buffer[32]; |
POTLESS_2 | 5:e1d0dc7940a6 | 94 | strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); |
POTLESS_2 | 5:e1d0dc7940a6 | 95 | printf(" Heure = %s", buffer); |
POTLESS_2 | 5:e1d0dc7940a6 | 96 | } |
POTLESS_2 | 5:e1d0dc7940a6 | 97 | |
POTLESS_2 | 4:d84250f67dec | 98 | //CO2 / H / T sur Cozir |
POTLESS_2 | 5:e1d0dc7940a6 | 99 | co2 = arnsrs.cozirSend("Z")*10; // on multiplie par 10 pour etre en ppm |
POTLESS_2 | 5:e1d0dc7940a6 | 100 | //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) |
POTLESS_2 | 5:e1d0dc7940a6 | 101 | 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% |
POTLESS_2 | 5:e1d0dc7940a6 | 102 | //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% |
POTLESS_2 | 5:e1d0dc7940a6 | 103 | 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 |
POTLESS_2 | 5:e1d0dc7940a6 | 104 | //serialMonit.printf(" T COZIR par methode request = %5d\r\n" ,request('T')-1000); |
POTLESS_2 | 5:e1d0dc7940a6 | 105 | |
POTLESS_2 | 5:e1d0dc7940a6 | 106 | pression = arnsrs.requestPress(); |
POTLESS_2 | 5:e1d0dc7940a6 | 107 | Temp2 = arnsrs.requestTemp(); |
POTLESS_2 | 5:e1d0dc7940a6 | 108 | |
POTLESS_2 | 5:e1d0dc7940a6 | 109 | //PPO2 sur ADS1015 |
POTLESS_2 | 5:e1d0dc7940a6 | 110 | ppO2 = arnsrs.requestPpO2(); |
POTLESS_2 | 5:e1d0dc7940a6 | 111 | |
POTLESS_2 | 5:e1d0dc7940a6 | 112 | //Affichage sur moniteur série |
POTLESS_2 | 5:e1d0dc7940a6 | 113 | serialMonit.printf(" co2 COZIR par methode cozirSend = %d\r\n" , co2); // on multiplie par 10 pour etre en ppm |
POTLESS_2 | 5:e1d0dc7940a6 | 114 | //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) |
POTLESS_2 | 5:e1d0dc7940a6 | 115 | 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% |
POTLESS_2 | 5:e1d0dc7940a6 | 116 | //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% |
POTLESS_2 | 5:e1d0dc7940a6 | 117 | 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 |
POTLESS_2 | 5:e1d0dc7940a6 | 118 | //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 |
POTLESS_2 | 4:d84250f67dec | 119 | //P / T sur MS5803 |
POTLESS_2 | 5:e1d0dc7940a6 | 120 | serialMonit.printf(" Pression MS5803 = %f\r\n", pression); |
POTLESS_2 | 5:e1d0dc7940a6 | 121 | serialMonit.printf(" Temperature MS5803 = %f\r\n", Temp2); |
POTLESS_2 | 4:d84250f67dec | 122 | //PPO2 sur ADS1015 |
POTLESS_2 | 5:e1d0dc7940a6 | 123 | serialMonit.printf(" PPO2 sur ADS1015 = %d\r\n", ppO2); |
POTLESS_2 | 5:e1d0dc7940a6 | 124 | serialMonit.printf("\r\n", ""); |
POTLESS_2 | 5:e1d0dc7940a6 | 125 | |
POTLESS_2 | 5:e1d0dc7940a6 | 126 | if (mybutton == 0) { // Button is pressed |
POTLESS_2 | 5:e1d0dc7940a6 | 127 | myled = !myled; // Toggle the LED state |
POTLESS_2 | 5:e1d0dc7940a6 | 128 | FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME; |
POTLESS_2 | 5:e1d0dc7940a6 | 129 | wait(0.2); // 200 ms |
POTLESS_2 | 5:e1d0dc7940a6 | 130 | } |
POTLESS_2 | 4:d84250f67dec | 131 | } |
POTLESS_2 | 4:d84250f67dec | 132 | } |