carte esclave Petit Robot

Dependencies:   mbed Herkulex_Library_2019 actions_Gr ident_crac actions_Pr

Committer:
Artiom
Date:
Fri May 17 10:39:09 2019 +0000
Revision:
9:9833e788942b
Parent:
8:8aeb718824ea
Child:
10:48c0d1b8aed9
timer sur DT meilleur echantillonage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Artiom 8:8aeb718824ea 1 #include "mbed.h"
Artiom 8:8aeb718824ea 2 #include "dt.h"
Artiom 8:8aeb718824ea 3 //RawSerial pc(USBTX, USBRX,9600);//serie pour debug
Artiom 8:8aeb718824ea 4
Artiom 8:8aeb718824ea 5 AnalogIn DT1(PB_0);
Artiom 8:8aeb718824ea 6 AnalogIn DT2(PC_5);
Artiom 8:8aeb718824ea 7 AnalogIn DT3(PC_4);
Artiom 8:8aeb718824ea 8 AnalogIn DT4(PA_5);
Artiom 8:8aeb718824ea 9
Artiom 8:8aeb718824ea 10 DigitalIn DT1_isr(PB_1);
Artiom 8:8aeb718824ea 11 DigitalIn DT2_isr(PA_7);
Artiom 8:8aeb718824ea 12 DigitalIn DT3_isr(PA_6);
Artiom 8:8aeb718824ea 13 DigitalIn DT4_isr(PA_4);
Artiom 8:8aeb718824ea 14
Artiom 9:9833e788942b 15 Timer t;
Artiom 9:9833e788942b 16
Artiom 8:8aeb718824ea 17 double DT1_mes[256]= {0};
Artiom 8:8aeb718824ea 18 double DT1_trait[256]= {0};
Artiom 8:8aeb718824ea 19 double DT1_trait_Ex;
Artiom 8:8aeb718824ea 20
Artiom 8:8aeb718824ea 21 double DT2_mes[256]= {0};
Artiom 8:8aeb718824ea 22 double DT2_trait[256]= {0};
Artiom 8:8aeb718824ea 23 double DT2_trait_Ex;
Artiom 8:8aeb718824ea 24
Artiom 8:8aeb718824ea 25 double DT3_mes[256]= {0};
Artiom 8:8aeb718824ea 26 double DT3_trait[256]= {0};
Artiom 8:8aeb718824ea 27 double DT3_trait_Ex;
Artiom 8:8aeb718824ea 28
Artiom 8:8aeb718824ea 29 double DT4_mes[256]= {0};
Artiom 8:8aeb718824ea 30 double DT4_trait[256]= {0};
Artiom 8:8aeb718824ea 31 double DT4_trait_Ex;
Artiom 8:8aeb718824ea 32
Artiom 8:8aeb718824ea 33 unsigned char n = 0;
Artiom 9:9833e788942b 34 bool flag_t=0;
Artiom 8:8aeb718824ea 35
Artiom 8:8aeb718824ea 36 void f_mesure()
Artiom 8:8aeb718824ea 37 {
Artiom 9:9833e788942b 38 if(!flag_t) {
Artiom 9:9833e788942b 39 t.start();
Artiom 9:9833e788942b 40 flag_t=1;
Artiom 9:9833e788942b 41 }
Artiom 9:9833e788942b 42
Artiom 9:9833e788942b 43 if (t.read_ms() >= 4) {
Artiom 9:9833e788942b 44 n++;
Artiom 9:9833e788942b 45 DT1.read();//lecture dans le vide le temp que l'adc switch
Artiom 9:9833e788942b 46 wait_us(100);//attente du switch de l'adc
Artiom 9:9833e788942b 47 DT1_mes[n]= DT1.read() * A + B;
Artiom 9:9833e788942b 48 DT1_trait[n] = mediane(DT1_mes, 10);
Artiom 9:9833e788942b 49 DT1_trait_Ex = DT1_trait[n];
Artiom 8:8aeb718824ea 50
Artiom 9:9833e788942b 51 DT2.read();//lecture dans le vide le temp que l'adc switch
Artiom 9:9833e788942b 52 wait_us(100);//attente du switch de l'adc
Artiom 9:9833e788942b 53 DT2_mes[n]= DT2.read() * A + B;
Artiom 9:9833e788942b 54 DT2_trait[n] = mediane(DT2_mes, 10);
Artiom 9:9833e788942b 55 DT2_trait_Ex = DT2_trait[n];
Artiom 9:9833e788942b 56
Artiom 9:9833e788942b 57 DT3.read();//lecture dans le vide le temp que l'adc switch
Artiom 9:9833e788942b 58 wait_us(100);//attente du switch de l'adc
Artiom 9:9833e788942b 59 DT3_mes[n]= DT3.read() * A + B;
Artiom 9:9833e788942b 60 DT3_trait[n] = mediane(DT3_mes, 10);
Artiom 9:9833e788942b 61 DT3_trait_Ex = DT3_trait[n];
Artiom 9:9833e788942b 62
Artiom 9:9833e788942b 63 DT4.read();//lecture dans le vide le temp que l'adc switch
Artiom 9:9833e788942b 64 wait_us(100);//attente du switch de l'adc
Artiom 9:9833e788942b 65 DT4_mes[n]= DT4.read() * A + B;
Artiom 9:9833e788942b 66 DT4_trait[n] = mediane(DT4_mes, 10);
Artiom 9:9833e788942b 67 DT4_trait_Ex = DT4_trait[n];
Artiom 9:9833e788942b 68
Artiom 9:9833e788942b 69 t.reset();
Artiom 9:9833e788942b 70 }
Artiom 9:9833e788942b 71
Artiom 8:8aeb718824ea 72 }
Artiom 8:8aeb718824ea 73
Artiom 8:8aeb718824ea 74 double mediane(double* buff_med, int size_med)
Artiom 8:8aeb718824ea 75 {
Artiom 8:8aeb718824ea 76 double DT_med[30]= {0};
Artiom 8:8aeb718824ea 77 for(unsigned char i =0; i< size_med; i++)DT_med[i] = buff_med[(unsigned char)(n-i)];
Artiom 8:8aeb718824ea 78
Artiom 8:8aeb718824ea 79 tri(DT_med, size_med);
Artiom 8:8aeb718824ea 80 return DT_med[(int)(size_med/2)];
Artiom 8:8aeb718824ea 81 }
Artiom 8:8aeb718824ea 82
Artiom 8:8aeb718824ea 83 void tri(double* tab, int size)
Artiom 8:8aeb718824ea 84 {
Artiom 8:8aeb718824ea 85 for (int i=0; i<size; i++) {
Artiom 8:8aeb718824ea 86 for(int j=i; j<size; j++) {
Artiom 8:8aeb718824ea 87 if(tab[j]<tab[i]) {
Artiom 8:8aeb718824ea 88 double temp = tab[i];
Artiom 8:8aeb718824ea 89 tab[i] = tab[j];
Artiom 8:8aeb718824ea 90 tab[j] = temp;
Artiom 8:8aeb718824ea 91 }
Artiom 8:8aeb718824ea 92 }
Artiom 8:8aeb718824ea 93 }
Artiom 8:8aeb718824ea 94 }