dd

Dependencies:   C12832 mbed

Committer:
pfe
Date:
Wed Apr 08 08:27:55 2015 +0000
Revision:
0:caecb0d1e7d3
ddd

Who changed what in which revision?

UserRevisionLine numberNew 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