ahmed ahmed
/
samir2_alti_logger
dd
main.cpp
- Committer:
- pfe
- Date:
- 2015-04-08
- Revision:
- 0:caecb0d1e7d3
File content as of revision 0:caecb0d1e7d3:
#include "mbed.h" #include "MSCFileSystem.h" #include "C12832.h" MSCFileSystem fs("usb"); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led4(LED4); Ticker mesures; DigitalIn bouton(p14); // pour pouvoir controler la fin de l'enregistrement C12832 lcd(p5, p7, p6, p8, p11); I2C i2c(p28, p27);// Timer timer1; // un Timer pour mesurer le temps char data[2]; unsigned short alt, mes_alt, valeur; unsigned char flag_alt,flag_100ms; #define ALT_ADDR 0xEC #define ET_S1 0 #define ET_S2 1 #define ET_S3 2 #define ET_S4 3 void auto_alti(){ static unsigned char etat_alti=ET_S1; static char ldata[2]; static unsigned char ltemp,ltemp2=0; switch (etat_alti) { case ET_S1 : ldata[0] = 0x07; // Send "register number" command to sensor i2c.write(ALT_ADDR, ldata, 1); // Send command string etat_alti= ET_S2; ltemp=0; break; case ET_S2 : if(ltemp++ >=13){ etat_alti=ET_S3; ltemp=0; } break; case ET_S3 : i2c.read(ALT_ADDR, ldata, 2); alt = *((unsigned short*)ldata)&0xffff; //altitude en décimètre alt = alt-3000; flag_alt=1; etat_alti=ET_S1; break; default : break; } if(ltemp2++ >=100){ flag_100ms=1; ltemp2=0; } } int main() { unsigned long tk2=0; // des variables pour stocker les temps de mesure i2c.frequency (100000) ;//void frequency(int hz); lcd.cls(); // effacer LCD led1=0; led2=0; FILE *FDat = fopen("/usb/FileTtest1.csv", "w");//ajouter un nouveau fichier excel et écraser l'ancien led1=1; mesures.attach_us(&auto_alti,1000); if(FDat==NULL) { led4=1; while(1); } while(bouton==0) { if(flag_alt==1) { mes_alt=alt; flag_alt=0; timer1.reset(); timer1.start(); fprintf(FDat,"%lu;%d;%d\r\n",tk2,alt); tk2=timer1.read_us(); // je mesure le temps d'écriture de la fonction fprintf led2=!led2; } if(flag_100ms==1){ //------------------------affichage de l information de V4 lcd.locate(0,15); lcd. printf("alt = %6u", mes_alt); flag_100ms=0; } } fclose(FDat); led1=0; led2=0; }