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
- Date:
- 2017-04-30
- Revision:
- 1:bef7856b5c0a
- Parent:
- 0:69d4b21d58e0
- Child:
- 2:4a8bf1d53439
File content as of revision 1:bef7856b5c0a:
/* 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 */ #include "mbed.h" Serial serialCozir (PA_11,PA_12,9600); Serial serialMonit (USBTX,USBRX,9600); char reponse[6]; // buffer /////////////////////////////////// // fonction initialisation ///// /////////////////////////////////// void setup(){ serialCozir.puts("K 2\r\n"); // mode interrogation serialMonit.printf("reponse au mode pooling %s\r\n",serialCozir.gets(reponse,5)); serialCozir.puts("A 32\r\n"); // filtrage standard serialMonit.printf("reponse au mode filtrage %s\r\n",serialCozir.gets(reponse,5)); serialCozir.puts("G\r\n"); // calibration à l'air libre serialMonit.printf("reponse au mode calib %s\r\n",serialCozir.gets(reponse,5)); } /////////////////////////////////// // fonction de lecture capteur///// /////////////////////////////////// int requestCO2() { int index=0; char ch; int valeurCO2; // interrogation capteur serialCozir.puts("Z\r\n"); // attente réponse capteur // le format de la reponse est : Z xxxxx z yyyyy\r\n // c'est uniquement xxxxx qui nous interesse do { if (serialCozir.readable()) { do {ch = serialCozir.getc(); // on lit les caractères entrant jusqu'à recevoir la lettre Z majuscule } while (ch=='Z'); ch = serialCozir.getc(); // on a reçu Z, on continue de lire la valeur qui suit en stockant caractère par caractère dans une chaine if (index<6) // index <n b de digits max attendus ? (test pour ne pas depasser la capacité du buffer) reponse[index++]=ch; // on stocke le caractere reçu et on passe au suivant } } while (ch!='\n'); // on s'arrete de lire quand on a recu le retour à la ligne \n de la réponse //reponse[index++]='\x0'; // mettre un zero à la fin de la reponse sscanf (reponse,"%5d\r\n",&valeurCO2); // on extrait le int de la chaine et on le stocke à l'adresse où pointe valeurCO2 return valeurCO2; } ///////////////////////////////////// /// procédure principale ///////// ///////////////////////////////////// int main(){ setup(); //initialisation capteur while (1){ serialMonit.printf("co2 COZIR= %d\r\n",requestCO2()*10); // on multiplie par 10 pour etre en ppm wait (1); } }