carte esclave petit robot
Dependencies: mbed Herkulex_Library_2019 actions_Gr ident_crac actions_Pr
Capteurs/dt.cpp@9:9833e788942b, 2019-05-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |