Version du programme présentée a Clermont
Dependencies: SHTx mbed BMP085
main.cpp
- Committer:
- projetmeteo3
- Date:
- 2012-03-24
- Revision:
- 0:eb2609ff92d2
File content as of revision 0:eb2609ff92d2:
/////////////////////////////////////////////////////////////////////////////// // Integration des libs #include "mbed.h" #include "BMP085.h" #include "SHTx/sht15.hpp" #include "SDFileSystem.h" #include "string.h" /////////////////////////////////////////////////////////////////////////////// // Declaration des peripherique du systeme BMP085 bmp085(p28, p27); I2C i2clcd(p28, p27); SHTx::SHT15 sensor(p18, p19); DigitalIn bouton(p14); SDFileSystem sd(p11, p12, p13, p14, "sd"); DigitalOut LED_1(LED1); DigitalOut LED_2(LED2); DigitalOut LED_3(LED3); DigitalOut LED_4(LED4); Serial xbee_orsay(p9, p10); Serial pc(USBTX, USBRX); /////////////////////////////////////////////////////////////////////////////// // Fonction qui recoit les caractere du Xbee // Doit detecter d pour emettre un message // Sinon ne fait rien volatile char flag_xbee_orsay; void recevoir_xbee_orsay(){ char bcar; while(xbee_orsay.readable()){ bcar=xbee_orsay.getc(); if(bcar=='a') flag_xbee_orsay=2; if(bcar=='z') flag_xbee_orsay=3; } } ////////////////////////////////////////////////////////////////////////////// // Variables utiles du systeme int i = 0; int t_mes = 1; char mes1[30],mes2[30]; ///////////////////////////////////////////////////////////////////////////// // Programme principal // La LED_1 s allume comme temoin int main() { LED_1=1; xbee_orsay.baud(9600); xbee_orsay.attach(recevoir_xbee_orsay); mkdir("/sd/mydir", 0777); FILE*fp = fopen("/sd/mydir/mesures.txt", "w+"); if(fp == NULL) { while(1); } sprintf(mes1,"%c[3e",27); i2clcd.write(0x48<<1,mes1,strlen(mes1)); wait(0.005); LED_1=0; while(bouton == 1) { ///////////////////////////////////////////////////// // Lecture des capteurs // La LED_2 s allume comme temoin LED_2=1; sensor.update(); bmp085.update(); i++; LED_2=0; ///////////////////////////////////////////////////// // Ecriture donnees dans la carte memoire fprintf File fprintf(fp,"%d %6.2f %6.2f %6.2f %6.2f\r\n", i, bmp085.get_temperature(), sensor.getTemperature(), bmp085.get_pressure(), sensor.getHumidity()); ///////////////////////////////////////////////////// // On teste pour envoyer ou non sur le Xbee // La LED_4 s allume comme temoin LED_4=1; switch(flag_xbee_orsay){ case 2 : xbee_orsay.printf("Debut transmission\r\n"); case 1 : xbee_orsay.printf("%d %6.2f %6.2f %6.2f %6.2f\r\n", i, bmp085.get_temperature(), sensor.getTemperature(), bmp085.get_pressure(), sensor.getHumidity()); flag_xbee_orsay=1; break; case 3 : flag_xbee_orsay=0; xbee_orsay.printf("Fin transmission\r\n"); break; default: flag_xbee_orsay=0; break; } LED_4=0; ///////////////////////////////////////////////////// // Impression sur le LCD interface I2C // sprintf pour afficher dans une chaine caractere // La LED_3 s allume comme temoin LED_3=1; sprintf(mes2,"%6.1fhPA %5.1fC", bmp085.get_pressure(),bmp085.get_temperature()); sprintf(mes1,"%c[j",27); i2clcd.write(0x48<<1,mes1,strlen(mes1)); wait(0.01); i2clcd.write(0x48<<1,mes2,strlen(mes2)); wait(0.01); sprintf(mes1,"%c[1;0H",27); i2clcd.write(0x48<<1,mes1,strlen(mes1)); wait(0.01); sprintf(mes2,"%5.1f%c %5.1fC", sensor.getHumidity(),'%',sensor.getTemperature()); i2clcd.write(0x48<<1,mes2,strlen(mes2)); LED_3=0; ///////////////////////////////////////////////////// // On attend pour completer une seconde wait(t_mes-0.05); } fclose(fp); while(1); }