Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
captUS.cpp@21:e5f0f5abb5ae, 2020-10-25 (annotated)
- Committer:
- Nanaud
- Date:
- Sun Oct 25 22:36:51 2020 +0000
- Revision:
- 21:e5f0f5abb5ae
- Parent:
- 20:7d206773f39e
- Child:
- 22:f891c2bce091
J-4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Nanaud | 1:2fe8c402ee79 | 1 | //Nom du fichier : captUS.cpp |
Nanaud | 0:dc036b67c87c | 2 | #include "pins.h" |
Nanaud | 21:e5f0f5abb5ae | 3 | const float DISTLIM = 450; //160 |
Nanaud | 0:dc036b67c87c | 4 | |
Nanaud | 1:2fe8c402ee79 | 5 | // Variables globales & timers |
Nanaud | 21:e5f0f5abb5ae | 6 | double us_high[6]={0}; |
Nanaud | 21:e5f0f5abb5ae | 7 | double us_low[6]={0}; |
Nanaud | 21:e5f0f5abb5ae | 8 | double us_diff[6]={0}; |
Nanaud | 21:e5f0f5abb5ae | 9 | bool us_verif[6]={0}; |
Nanaud | 21:e5f0f5abb5ae | 10 | |
Nanaud | 21:e5f0f5abb5ae | 11 | double distt[6]; |
Nanaud | 1:2fe8c402ee79 | 12 | Timer tps; |
Nanaud | 1:2fe8c402ee79 | 13 | Ticker ticker_US; |
Nanaud | 20:7d206773f39e | 14 | bool rebooted = 0; |
Nanaud | 20:7d206773f39e | 15 | bool wtt = 0; |
Nanaud | 0:dc036b67c87c | 16 | |
Nanaud | 20:7d206773f39e | 17 | //int sptt = 0; |
Nanaud | 20:7d206773f39e | 18 | |
Nanaud | 21:e5f0f5abb5ae | 19 | /* |
Nanaud | 20:7d206773f39e | 20 | void captUS_init() |
Nanaud | 20:7d206773f39e | 21 | { |
Nanaud | 21:e5f0f5abb5ae | 22 | ::distance = new double(6); //équivalent au malloc() |
Nanaud | 20:7d206773f39e | 23 | tps.reset(); |
Nanaud | 20:7d206773f39e | 24 | tps.start(); |
Nanaud | 20:7d206773f39e | 25 | } |
Nanaud | 21:e5f0f5abb5ae | 26 | */ |
Nanaud | 20:7d206773f39e | 27 | |
Nanaud | 20:7d206773f39e | 28 | void captUS_trig() |
Nanaud | 20:7d206773f39e | 29 | { |
Nanaud | 20:7d206773f39e | 30 | convertToDistance(); |
Nanaud | 20:7d206773f39e | 31 | |
Nanaud | 20:7d206773f39e | 32 | if((objRecule[indice]==0) && (fnc == 2)) { |
Nanaud | 21:e5f0f5abb5ae | 33 | if ((distt[5] >= DISTLIM) && (distt[0] >= DISTLIM) && (distt[1] >= DISTLIM)) { |
Nanaud | 20:7d206773f39e | 34 | wtt = 1; |
Nanaud | 21:e5f0f5abb5ae | 35 | } |
Nanaud | 1:2fe8c402ee79 | 36 | |
Nanaud | 21:e5f0f5abb5ae | 37 | else { |
Nanaud | 20:7d206773f39e | 38 | mot_dis(); |
Nanaud | 20:7d206773f39e | 39 | rebooted = 1; |
Nanaud | 20:7d206773f39e | 40 | wtt=0; |
Nanaud | 20:7d206773f39e | 41 | } |
Nanaud | 20:7d206773f39e | 42 | } |
Nanaud | 20:7d206773f39e | 43 | |
Nanaud | 20:7d206773f39e | 44 | else if((objRecule[indice]==1) && (fnc == 2)) { |
Nanaud | 21:e5f0f5abb5ae | 45 | if ((distt[2] >= DISTLIM) && (distt[3] >= DISTLIM) && (distt[4] >= DISTLIM)) { |
Nanaud | 20:7d206773f39e | 46 | wtt=1; |
Nanaud | 21:e5f0f5abb5ae | 47 | } |
Nanaud | 20:7d206773f39e | 48 | |
Nanaud | 21:e5f0f5abb5ae | 49 | else { |
Nanaud | 20:7d206773f39e | 50 | mot_dis(); |
Nanaud | 20:7d206773f39e | 51 | rebooted = 1; |
Nanaud | 20:7d206773f39e | 52 | wtt=0; |
Nanaud | 20:7d206773f39e | 53 | } |
Nanaud | 20:7d206773f39e | 54 | } |
Nanaud | 20:7d206773f39e | 55 | |
Nanaud | 21:e5f0f5abb5ae | 56 | /* |
Nanaud | 21:e5f0f5abb5ae | 57 | pc.printf("US1 = %5.0lf uS\n\r", us_out[0]); |
Nanaud | 21:e5f0f5abb5ae | 58 | pc.printf("US2 = %5.0lf uS\n\r", us_out[1]); |
Nanaud | 21:e5f0f5abb5ae | 59 | //pc.printf("US3 = %5.0lf uS\n\r", us_out[2]); |
Nanaud | 21:e5f0f5abb5ae | 60 | //pc.printf("US4 = %5.0lf uS\n\r", us_out[3]); |
Nanaud | 21:e5f0f5abb5ae | 61 | //pc.printf("US5 = %5.0lf uS\n\r", us_out[4]); |
Nanaud | 21:e5f0f5abb5ae | 62 | pc.printf("US6 = %5.0lf uS\n\r", us_out[5]); |
Nanaud | 21:e5f0f5abb5ae | 63 | pc.printf("\n\r"); |
Nanaud | 21:e5f0f5abb5ae | 64 | */ |
Nanaud | 21:e5f0f5abb5ae | 65 | |
Nanaud | 21:e5f0f5abb5ae | 66 | /* |
Nanaud | 21:e5f0f5abb5ae | 67 | pc.printf("Dist1 = %5.0lf mm\n\r", ::distance[0]); |
Nanaud | 21:e5f0f5abb5ae | 68 | pc.printf("Dist2 = %5.0lf mm\n\r", ::distance[1]); |
Nanaud | 21:e5f0f5abb5ae | 69 | pc.printf("Dist3 = %5.0lf mm\n\r", ::distance[2]); |
Nanaud | 21:e5f0f5abb5ae | 70 | pc.printf("Dist4 = %5.0lf mm\n\r", ::distance[3]); |
Nanaud | 21:e5f0f5abb5ae | 71 | pc.printf("Dist5 = %5.0lf mm\n\r", ::distance[4]); |
Nanaud | 21:e5f0f5abb5ae | 72 | pc.printf("Dist6 = %5.0lf mm\n\r", ::distance[5]); |
Nanaud | 21:e5f0f5abb5ae | 73 | pc.printf("\n\r"); |
Nanaud | 21:e5f0f5abb5ae | 74 | */ |
Nanaud | 21:e5f0f5abb5ae | 75 | |
Nanaud | 0:dc036b67c87c | 76 | tps.reset(); |
Nanaud | 0:dc036b67c87c | 77 | trigger=1; |
Nanaud | 0:dc036b67c87c | 78 | wait(0.00002); |
Nanaud | 0:dc036b67c87c | 79 | trigger=0; |
Nanaud | 0:dc036b67c87c | 80 | } |
Nanaud | 0:dc036b67c87c | 81 | |
Nanaud | 20:7d206773f39e | 82 | void echoRise1() |
Nanaud | 20:7d206773f39e | 83 | { |
Nanaud | 21:e5f0f5abb5ae | 84 | if(us_verif[0] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 85 | us_high[0]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 86 | us_verif[0] = 1; |
Nanaud | 21:e5f0f5abb5ae | 87 | } |
Nanaud | 20:7d206773f39e | 88 | } |
Nanaud | 21:e5f0f5abb5ae | 89 | |
Nanaud | 20:7d206773f39e | 90 | void echoFall1() |
Nanaud | 20:7d206773f39e | 91 | { |
Nanaud | 21:e5f0f5abb5ae | 92 | if(us_verif[0] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 93 | us_low[0]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 94 | us_diff[0]=us_low[0]-us_high[0]; |
Nanaud | 21:e5f0f5abb5ae | 95 | us_verif[0] = 0; |
Nanaud | 21:e5f0f5abb5ae | 96 | } |
Nanaud | 20:7d206773f39e | 97 | } |
Nanaud | 20:7d206773f39e | 98 | |
Nanaud | 20:7d206773f39e | 99 | void echoRise2() |
Nanaud | 20:7d206773f39e | 100 | { |
Nanaud | 21:e5f0f5abb5ae | 101 | if(us_verif[1] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 102 | us_high[1]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 103 | us_verif[1] = 1; |
Nanaud | 21:e5f0f5abb5ae | 104 | } |
Nanaud | 20:7d206773f39e | 105 | } |
Nanaud | 21:e5f0f5abb5ae | 106 | |
Nanaud | 20:7d206773f39e | 107 | void echoFall2() |
Nanaud | 20:7d206773f39e | 108 | { |
Nanaud | 21:e5f0f5abb5ae | 109 | if(us_verif[1] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 110 | us_low[1]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 111 | us_diff[1]=us_low[1]-us_high[1]; |
Nanaud | 21:e5f0f5abb5ae | 112 | us_verif[1] = 0; |
Nanaud | 21:e5f0f5abb5ae | 113 | } |
Nanaud | 20:7d206773f39e | 114 | } |
Nanaud | 20:7d206773f39e | 115 | |
Nanaud | 20:7d206773f39e | 116 | void echoRise3() |
Nanaud | 20:7d206773f39e | 117 | { |
Nanaud | 21:e5f0f5abb5ae | 118 | if(us_verif[2] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 119 | us_high[2]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 120 | us_verif[2] = 1; |
Nanaud | 21:e5f0f5abb5ae | 121 | } |
Nanaud | 20:7d206773f39e | 122 | } |
Nanaud | 21:e5f0f5abb5ae | 123 | |
Nanaud | 20:7d206773f39e | 124 | void echoFall3() |
Nanaud | 20:7d206773f39e | 125 | { |
Nanaud | 21:e5f0f5abb5ae | 126 | if(us_verif[2] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 127 | us_low[2]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 128 | us_diff[2]=us_low[2]-us_high[2]; |
Nanaud | 21:e5f0f5abb5ae | 129 | us_verif[2] = 0; |
Nanaud | 21:e5f0f5abb5ae | 130 | } |
Nanaud | 20:7d206773f39e | 131 | } |
Nanaud | 0:dc036b67c87c | 132 | |
Nanaud | 20:7d206773f39e | 133 | void echoRise4() |
Nanaud | 20:7d206773f39e | 134 | { |
Nanaud | 21:e5f0f5abb5ae | 135 | if(us_verif[3] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 136 | us_high[3]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 137 | us_verif[3] = 1; |
Nanaud | 21:e5f0f5abb5ae | 138 | } |
Nanaud | 20:7d206773f39e | 139 | } |
Nanaud | 21:e5f0f5abb5ae | 140 | |
Nanaud | 20:7d206773f39e | 141 | void echoFall4() |
Nanaud | 20:7d206773f39e | 142 | { |
Nanaud | 21:e5f0f5abb5ae | 143 | if(us_verif[3] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 144 | us_low[3]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 145 | us_diff[3]=us_low[3]-us_high[3]; |
Nanaud | 21:e5f0f5abb5ae | 146 | us_verif[3] = 0; |
Nanaud | 21:e5f0f5abb5ae | 147 | } |
Nanaud | 20:7d206773f39e | 148 | } |
Nanaud | 0:dc036b67c87c | 149 | |
Nanaud | 20:7d206773f39e | 150 | void echoRise5() |
Nanaud | 20:7d206773f39e | 151 | { |
Nanaud | 21:e5f0f5abb5ae | 152 | if(us_verif[4] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 153 | us_high[4]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 154 | us_verif[4] = 1; |
Nanaud | 21:e5f0f5abb5ae | 155 | } |
Nanaud | 20:7d206773f39e | 156 | } |
Nanaud | 21:e5f0f5abb5ae | 157 | |
Nanaud | 20:7d206773f39e | 158 | void echoFall5() |
Nanaud | 20:7d206773f39e | 159 | { |
Nanaud | 21:e5f0f5abb5ae | 160 | if(us_verif[4] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 161 | us_low[4]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 162 | us_diff[4]=us_low[4]-us_high[4]; |
Nanaud | 21:e5f0f5abb5ae | 163 | us_verif[4] = 0; |
Nanaud | 21:e5f0f5abb5ae | 164 | } |
Nanaud | 20:7d206773f39e | 165 | } |
Nanaud | 20:7d206773f39e | 166 | |
Nanaud | 20:7d206773f39e | 167 | void echoRise6() |
Nanaud | 20:7d206773f39e | 168 | { |
Nanaud | 21:e5f0f5abb5ae | 169 | if(us_verif[5] == 0) { |
Nanaud | 21:e5f0f5abb5ae | 170 | us_high[5]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 171 | us_verif[5] = 1; |
Nanaud | 21:e5f0f5abb5ae | 172 | } |
Nanaud | 20:7d206773f39e | 173 | } |
Nanaud | 21:e5f0f5abb5ae | 174 | |
Nanaud | 20:7d206773f39e | 175 | void echoFall6() |
Nanaud | 20:7d206773f39e | 176 | { |
Nanaud | 21:e5f0f5abb5ae | 177 | if(us_verif[5] == 1) { |
Nanaud | 21:e5f0f5abb5ae | 178 | us_low[5]=tps.read_us(); |
Nanaud | 21:e5f0f5abb5ae | 179 | us_diff[5]=us_low[5]-us_high[5]; |
Nanaud | 21:e5f0f5abb5ae | 180 | us_verif[5] = 0; |
Nanaud | 21:e5f0f5abb5ae | 181 | } |
Nanaud | 20:7d206773f39e | 182 | } |
Nanaud | 20:7d206773f39e | 183 | |
Nanaud | 0:dc036b67c87c | 184 | |
Nanaud | 21:e5f0f5abb5ae | 185 | void convertToDistance() |
Nanaud | 20:7d206773f39e | 186 | { |
Nanaud | 20:7d206773f39e | 187 | /************************************** |
Nanaud | 20:7d206773f39e | 188 | * Nous convertisons grâce au valeur * |
Nanaud | 20:7d206773f39e | 189 | * qui sont retournées par echoRiseX * |
Nanaud | 20:7d206773f39e | 190 | * et echoFallx * |
Nanaud | 20:7d206773f39e | 191 | **************************************/ |
Nanaud | 20:7d206773f39e | 192 | |
Nanaud | 21:e5f0f5abb5ae | 193 | for(int i = 0; i<6; i++) { |
Nanaud | 21:e5f0f5abb5ae | 194 | distt[i] = ((us_diff[i]*340)/1000); //conversion en distance(mm) |
Nanaud | 20:7d206773f39e | 195 | } |
Nanaud | 20:7d206773f39e | 196 | |
Nanaud | 20:7d206773f39e | 197 | /**************************************** |
Nanaud | 20:7d206773f39e | 198 | * nous retournons l'adresse du tableau * |
Nanaud | 20:7d206773f39e | 199 | ****************************************/ |
Nanaud | 21:e5f0f5abb5ae | 200 | //return ::distance; |
Nanaud | 20:7d206773f39e | 201 | } |