AresENSEA-CDF2020 / Mbed 2 deprecated AresCDFMainCode

Dependencies:   mbed DRV8825

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?

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