ahmed ahmed
/
samir2_alti_logger
dd
main.cpp@0:caecb0d1e7d3, 2015-04-08 (annotated)
- Committer:
- pfe
- Date:
- Wed Apr 08 08:27:55 2015 +0000
- Revision:
- 0:caecb0d1e7d3
ddd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pfe | 0:caecb0d1e7d3 | 1 | #include "mbed.h" |
pfe | 0:caecb0d1e7d3 | 2 | #include "MSCFileSystem.h" |
pfe | 0:caecb0d1e7d3 | 3 | #include "C12832.h" |
pfe | 0:caecb0d1e7d3 | 4 | |
pfe | 0:caecb0d1e7d3 | 5 | MSCFileSystem fs("usb"); |
pfe | 0:caecb0d1e7d3 | 6 | |
pfe | 0:caecb0d1e7d3 | 7 | DigitalOut led1(LED1); |
pfe | 0:caecb0d1e7d3 | 8 | DigitalOut led2(LED2); |
pfe | 0:caecb0d1e7d3 | 9 | DigitalOut led4(LED4); |
pfe | 0:caecb0d1e7d3 | 10 | Ticker mesures; |
pfe | 0:caecb0d1e7d3 | 11 | |
pfe | 0:caecb0d1e7d3 | 12 | DigitalIn bouton(p14); // pour pouvoir controler la fin de l'enregistrement |
pfe | 0:caecb0d1e7d3 | 13 | C12832 lcd(p5, p7, p6, p8, p11); |
pfe | 0:caecb0d1e7d3 | 14 | I2C i2c(p28, p27);// |
pfe | 0:caecb0d1e7d3 | 15 | |
pfe | 0:caecb0d1e7d3 | 16 | Timer timer1; // un Timer pour mesurer le temps |
pfe | 0:caecb0d1e7d3 | 17 | |
pfe | 0:caecb0d1e7d3 | 18 | |
pfe | 0:caecb0d1e7d3 | 19 | char data[2]; |
pfe | 0:caecb0d1e7d3 | 20 | unsigned short alt, mes_alt, valeur; |
pfe | 0:caecb0d1e7d3 | 21 | unsigned char flag_alt,flag_100ms; |
pfe | 0:caecb0d1e7d3 | 22 | |
pfe | 0:caecb0d1e7d3 | 23 | #define ALT_ADDR 0xEC |
pfe | 0:caecb0d1e7d3 | 24 | #define ET_S1 0 |
pfe | 0:caecb0d1e7d3 | 25 | #define ET_S2 1 |
pfe | 0:caecb0d1e7d3 | 26 | #define ET_S3 2 |
pfe | 0:caecb0d1e7d3 | 27 | #define ET_S4 3 |
pfe | 0:caecb0d1e7d3 | 28 | |
pfe | 0:caecb0d1e7d3 | 29 | void auto_alti(){ |
pfe | 0:caecb0d1e7d3 | 30 | static unsigned char etat_alti=ET_S1; |
pfe | 0:caecb0d1e7d3 | 31 | static char ldata[2]; |
pfe | 0:caecb0d1e7d3 | 32 | static unsigned char ltemp,ltemp2=0; |
pfe | 0:caecb0d1e7d3 | 33 | switch (etat_alti) { |
pfe | 0:caecb0d1e7d3 | 34 | case ET_S1 : |
pfe | 0:caecb0d1e7d3 | 35 | ldata[0] = 0x07; // Send "register number" command to sensor |
pfe | 0:caecb0d1e7d3 | 36 | i2c.write(ALT_ADDR, ldata, 1); // Send command string |
pfe | 0:caecb0d1e7d3 | 37 | etat_alti= ET_S2; |
pfe | 0:caecb0d1e7d3 | 38 | ltemp=0; |
pfe | 0:caecb0d1e7d3 | 39 | break; |
pfe | 0:caecb0d1e7d3 | 40 | case ET_S2 : if(ltemp++ >=13){ |
pfe | 0:caecb0d1e7d3 | 41 | etat_alti=ET_S3; |
pfe | 0:caecb0d1e7d3 | 42 | ltemp=0; |
pfe | 0:caecb0d1e7d3 | 43 | } |
pfe | 0:caecb0d1e7d3 | 44 | break; |
pfe | 0:caecb0d1e7d3 | 45 | case ET_S3 : |
pfe | 0:caecb0d1e7d3 | 46 | i2c.read(ALT_ADDR, ldata, 2); |
pfe | 0:caecb0d1e7d3 | 47 | alt = *((unsigned short*)ldata)&0xffff; //altitude en décimètre |
pfe | 0:caecb0d1e7d3 | 48 | alt = alt-3000; |
pfe | 0:caecb0d1e7d3 | 49 | flag_alt=1; |
pfe | 0:caecb0d1e7d3 | 50 | etat_alti=ET_S1; |
pfe | 0:caecb0d1e7d3 | 51 | break; |
pfe | 0:caecb0d1e7d3 | 52 | default : break; |
pfe | 0:caecb0d1e7d3 | 53 | } |
pfe | 0:caecb0d1e7d3 | 54 | if(ltemp2++ >=100){ |
pfe | 0:caecb0d1e7d3 | 55 | flag_100ms=1; |
pfe | 0:caecb0d1e7d3 | 56 | ltemp2=0; |
pfe | 0:caecb0d1e7d3 | 57 | } |
pfe | 0:caecb0d1e7d3 | 58 | } |
pfe | 0:caecb0d1e7d3 | 59 | |
pfe | 0:caecb0d1e7d3 | 60 | int main() |
pfe | 0:caecb0d1e7d3 | 61 | { |
pfe | 0:caecb0d1e7d3 | 62 | unsigned long tk2=0; // des variables pour stocker les temps de mesure |
pfe | 0:caecb0d1e7d3 | 63 | i2c.frequency (100000) ;//void frequency(int hz); |
pfe | 0:caecb0d1e7d3 | 64 | lcd.cls(); // effacer LCD |
pfe | 0:caecb0d1e7d3 | 65 | led1=0; |
pfe | 0:caecb0d1e7d3 | 66 | led2=0; |
pfe | 0:caecb0d1e7d3 | 67 | |
pfe | 0:caecb0d1e7d3 | 68 | FILE *FDat = fopen("/usb/FileTtest1.csv", "w");//ajouter un nouveau fichier excel et écraser l'ancien |
pfe | 0:caecb0d1e7d3 | 69 | led1=1; |
pfe | 0:caecb0d1e7d3 | 70 | mesures.attach_us(&auto_alti,1000); |
pfe | 0:caecb0d1e7d3 | 71 | if(FDat==NULL) { |
pfe | 0:caecb0d1e7d3 | 72 | led4=1; |
pfe | 0:caecb0d1e7d3 | 73 | while(1); |
pfe | 0:caecb0d1e7d3 | 74 | } |
pfe | 0:caecb0d1e7d3 | 75 | while(bouton==0) { |
pfe | 0:caecb0d1e7d3 | 76 | if(flag_alt==1) { |
pfe | 0:caecb0d1e7d3 | 77 | mes_alt=alt; |
pfe | 0:caecb0d1e7d3 | 78 | flag_alt=0; |
pfe | 0:caecb0d1e7d3 | 79 | timer1.reset(); |
pfe | 0:caecb0d1e7d3 | 80 | timer1.start(); |
pfe | 0:caecb0d1e7d3 | 81 | fprintf(FDat,"%lu;%d;%d\r\n",tk2,alt); |
pfe | 0:caecb0d1e7d3 | 82 | tk2=timer1.read_us(); // je mesure le temps d'écriture de la fonction fprintf |
pfe | 0:caecb0d1e7d3 | 83 | led2=!led2; |
pfe | 0:caecb0d1e7d3 | 84 | |
pfe | 0:caecb0d1e7d3 | 85 | } |
pfe | 0:caecb0d1e7d3 | 86 | if(flag_100ms==1){ |
pfe | 0:caecb0d1e7d3 | 87 | //------------------------affichage de l information de V4 |
pfe | 0:caecb0d1e7d3 | 88 | lcd.locate(0,15); |
pfe | 0:caecb0d1e7d3 | 89 | lcd. printf("alt = %6u", mes_alt); |
pfe | 0:caecb0d1e7d3 | 90 | flag_100ms=0; |
pfe | 0:caecb0d1e7d3 | 91 | } |
pfe | 0:caecb0d1e7d3 | 92 | |
pfe | 0:caecb0d1e7d3 | 93 | } |
pfe | 0:caecb0d1e7d3 | 94 | fclose(FDat); |
pfe | 0:caecb0d1e7d3 | 95 | led1=0; |
pfe | 0:caecb0d1e7d3 | 96 | led2=0; |
pfe | 0:caecb0d1e7d3 | 97 | } |
pfe | 0:caecb0d1e7d3 | 98 |