![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Pop lock n drop it
main.cpp@11:af3d70d153bb, 2014-06-02 (annotated)
- Committer:
- vsal
- Date:
- Mon Jun 02 09:47:01 2014 +0000
- Revision:
- 11:af3d70d153bb
- Parent:
- 10:86cb40bf1c17
Final from June 2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vsal | 0:80d9725a7342 | 1 | #include "mbed.h" |
vsal | 0:80d9725a7342 | 2 | #include "m3pi_ng.h" |
vsal | 3:6f773c2ba3a0 | 3 | #include "DigitalIn.h" |
vsal | 8:09f4495696d2 | 4 | #include "btbee.h" |
vsal | 9:493011bacdcd | 5 | #include "time.h" |
vsal | 8:09f4495696d2 | 6 | |
vsal | 0:80d9725a7342 | 7 | |
vsal | 0:80d9725a7342 | 8 | DigitalOut myled(LED1); |
vsal | 0:80d9725a7342 | 9 | m3pi huey; |
vsal | 8:09f4495696d2 | 10 | btbee btbee; |
vsal | 8:09f4495696d2 | 11 | |
vsal | 3:6f773c2ba3a0 | 12 | DigitalIn m3pi_IN[]={(p12),(p21)}; // IR-Sensor |
vsal | 8:09f4495696d2 | 13 | DigitalOut mbed_led[] = {(LED1), (LED2),(LED3), (LED4)}; |
vsal | 8:09f4495696d2 | 14 | DigitalOut m3pi_led[] = {(p13), (p14), (p15), (p16), (p17), (p18), (p19), (p20)}; |
vsal | 8:09f4495696d2 | 15 | DigitalIn m3pi_pb(p21); |
vsal | 1:ac7fc0b5f878 | 16 | |
vsal | 1:ac7fc0b5f878 | 17 | void printBattery() |
vsal | 1:ac7fc0b5f878 | 18 | { |
vsal | 0:80d9725a7342 | 19 | //prints battery voltage on led screen |
vsal | 0:80d9725a7342 | 20 | float bat = huey.battery(); |
vsal | 1:ac7fc0b5f878 | 21 | huey.printf("Bat volt"); |
vsal | 1:ac7fc0b5f878 | 22 | huey.locate(0,1); |
vsal | 1:ac7fc0b5f878 | 23 | huey.printf("%f",bat); |
vsal | 1:ac7fc0b5f878 | 24 | } |
vsal | 1:ac7fc0b5f878 | 25 | |
vsal | 4:14b00a82d206 | 26 | float myLinePos(void) |
vsal | 4:14b00a82d206 | 27 | { |
vsal | 4:14b00a82d206 | 28 | int sensors[5]; |
vsal | 4:14b00a82d206 | 29 | huey.calibrated_sensor(sensors); |
vsal | 7:d0c19729e7fd | 30 | //oat leftSen, rightSen, midSen; |
vsal | 7:d0c19729e7fd | 31 | //ftSen = sensors[1] / 1000; |
vsal | 7:d0c19729e7fd | 32 | //ghtSen = sensors[3] / 1000; |
vsal | 7:d0c19729e7fd | 33 | //dSen = sensors[2] / 1000; |
vsal | 7:d0c19729e7fd | 34 | float val; |
vsal | 10:86cb40bf1c17 | 35 | if(sensors[1] < 50 && sensors[2] < 50 && sensors[3] < 50) |
vsal | 10:86cb40bf1c17 | 36 | return -1; |
vsal | 10:86cb40bf1c17 | 37 | else |
vsal | 10:86cb40bf1c17 | 38 | { |
vsal | 10:86cb40bf1c17 | 39 | val = (((1000*sensors[2] + 2000*sensors[3])/(sensors[1]+sensors[2]+sensors[3]))); |
vsal | 10:86cb40bf1c17 | 40 | return (-1)+(val/1000); |
vsal | 10:86cb40bf1c17 | 41 | } |
vsal | 4:14b00a82d206 | 42 | } |
vsal | 4:14b00a82d206 | 43 | |
vsal | 8:09f4495696d2 | 44 | int rightCorner() |
vsal | 8:09f4495696d2 | 45 | { |
vsal | 8:09f4495696d2 | 46 | int sensors[5]; |
vsal | 8:09f4495696d2 | 47 | huey.calibrated_sensor(sensors); |
vsal | 10:86cb40bf1c17 | 48 | if(sensors[4] > 950) |
vsal | 8:09f4495696d2 | 49 | return 1; |
vsal | 8:09f4495696d2 | 50 | else |
vsal | 8:09f4495696d2 | 51 | return 0; |
vsal | 8:09f4495696d2 | 52 | } |
vsal | 8:09f4495696d2 | 53 | |
vsal | 8:09f4495696d2 | 54 | int leftCorner() |
vsal | 8:09f4495696d2 | 55 | { |
vsal | 8:09f4495696d2 | 56 | int sensors[5]; |
vsal | 8:09f4495696d2 | 57 | huey.calibrated_sensor(sensors); |
vsal | 10:86cb40bf1c17 | 58 | if(sensors[0] > 950) |
vsal | 8:09f4495696d2 | 59 | return 1; |
vsal | 8:09f4495696d2 | 60 | else |
vsal | 8:09f4495696d2 | 61 | return 0; |
vsal | 8:09f4495696d2 | 62 | } |
vsal | 8:09f4495696d2 | 63 | |
vsal | 10:86cb40bf1c17 | 64 | //returns 0 if side sensors aren't light, 1 if light |
vsal | 10:86cb40bf1c17 | 65 | int sideSensorsLight(void) |
vsal | 10:86cb40bf1c17 | 66 | { |
vsal | 10:86cb40bf1c17 | 67 | int sensors[5]; |
vsal | 10:86cb40bf1c17 | 68 | huey.calibrated_sensor(sensors); |
vsal | 10:86cb40bf1c17 | 69 | if(sensors[4] > 50 && sensors[0] > 50) |
vsal | 10:86cb40bf1c17 | 70 | return 0; |
vsal | 10:86cb40bf1c17 | 71 | else |
vsal | 10:86cb40bf1c17 | 72 | return 1; |
vsal | 10:86cb40bf1c17 | 73 | } |
vsal | 10:86cb40bf1c17 | 74 | |
vsal | 10:86cb40bf1c17 | 75 | //returns 0 if side sensors aren't dark, 1 if dark |
vsal | 10:86cb40bf1c17 | 76 | int sideSensorsDark(void) |
vsal | 9:493011bacdcd | 77 | { |
vsal | 9:493011bacdcd | 78 | if(rightCorner() == 1 && leftCorner() == 1) |
vsal | 10:86cb40bf1c17 | 79 | return 1; |
vsal | 10:86cb40bf1c17 | 80 | else |
vsal | 10:86cb40bf1c17 | 81 | return 0; |
vsal | 10:86cb40bf1c17 | 82 | } |
vsal | 10:86cb40bf1c17 | 83 | |
vsal | 10:86cb40bf1c17 | 84 | void rightTurn(float speed) |
vsal | 10:86cb40bf1c17 | 85 | { |
vsal | 10:86cb40bf1c17 | 86 | int side = sideSensorsLight(); |
vsal | 10:86cb40bf1c17 | 87 | huey.forward(speed/2); |
vsal | 10:86cb40bf1c17 | 88 | while(side == 0) |
vsal | 9:493011bacdcd | 89 | { |
vsal | 10:86cb40bf1c17 | 90 | side = sideSensorsLight(); |
vsal | 9:493011bacdcd | 91 | } |
vsal | 10:86cb40bf1c17 | 92 | wait(0.20); |
vsal | 10:86cb40bf1c17 | 93 | float pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 94 | huey.right(speed/2); |
vsal | 10:86cb40bf1c17 | 95 | while(pos > -0.1 && pos < 0.1) |
vsal | 9:493011bacdcd | 96 | { |
vsal | 10:86cb40bf1c17 | 97 | pos = myLinePos(); |
vsal | 9:493011bacdcd | 98 | } |
vsal | 10:86cb40bf1c17 | 99 | pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 100 | while(pos > 0.05 || pos < -0.05) |
vsal | 10:86cb40bf1c17 | 101 | { |
vsal | 10:86cb40bf1c17 | 102 | pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 103 | } |
vsal | 9:493011bacdcd | 104 | } |
vsal | 10:86cb40bf1c17 | 105 | |
vsal | 10:86cb40bf1c17 | 106 | void leftTurn(float speed) |
vsal | 10:86cb40bf1c17 | 107 | { |
vsal | 10:86cb40bf1c17 | 108 | int side = sideSensorsLight(); |
vsal | 10:86cb40bf1c17 | 109 | huey.forward(speed/2); |
vsal | 10:86cb40bf1c17 | 110 | while(side == 0) |
vsal | 10:86cb40bf1c17 | 111 | { |
vsal | 10:86cb40bf1c17 | 112 | side = sideSensorsLight(); |
vsal | 10:86cb40bf1c17 | 113 | } |
vsal | 10:86cb40bf1c17 | 114 | wait(0.20); |
vsal | 10:86cb40bf1c17 | 115 | |
vsal | 10:86cb40bf1c17 | 116 | float pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 117 | huey.left(speed/2); |
vsal | 10:86cb40bf1c17 | 118 | while(pos > -0.1 && pos < 0.1) |
vsal | 10:86cb40bf1c17 | 119 | { |
vsal | 10:86cb40bf1c17 | 120 | pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 121 | } |
vsal | 10:86cb40bf1c17 | 122 | pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 123 | while(pos > 0.05 || pos < -0.05) |
vsal | 10:86cb40bf1c17 | 124 | { |
vsal | 10:86cb40bf1c17 | 125 | pos = myLinePos(); |
vsal | 10:86cb40bf1c17 | 126 | } |
vsal | 10:86cb40bf1c17 | 127 | } |
vsal | 10:86cb40bf1c17 | 128 | |
vsal | 11:af3d70d153bb | 129 | void turnAround(float speed) |
vsal | 11:af3d70d153bb | 130 | { |
vsal | 11:af3d70d153bb | 131 | float pos = myLinePos(); |
vsal | 11:af3d70d153bb | 132 | huey.right(speed/2); |
vsal | 11:af3d70d153bb | 133 | while(pos > -0.1 && pos < 0.1) |
vsal | 11:af3d70d153bb | 134 | { |
vsal | 11:af3d70d153bb | 135 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 136 | } |
vsal | 11:af3d70d153bb | 137 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 138 | while(pos > 0.05 || pos < -0.05) |
vsal | 11:af3d70d153bb | 139 | { |
vsal | 11:af3d70d153bb | 140 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 141 | } |
vsal | 11:af3d70d153bb | 142 | while(pos > -0.1 && pos < 0.1) |
vsal | 11:af3d70d153bb | 143 | { |
vsal | 11:af3d70d153bb | 144 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 145 | } |
vsal | 11:af3d70d153bb | 146 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 147 | while(pos > 0.05 || pos < -0.05) |
vsal | 11:af3d70d153bb | 148 | { |
vsal | 11:af3d70d153bb | 149 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 150 | } |
vsal | 11:af3d70d153bb | 151 | } |
vsal | 11:af3d70d153bb | 152 | |
vsal | 11:af3d70d153bb | 153 | //returns 1 for all turns, 0 for non turns, 2 for end of a task; |
vsal | 11:af3d70d153bb | 154 | int smoothFollow(float position, float speed, char direction) |
vsal | 1:ac7fc0b5f878 | 155 | { |
vsal | 4:14b00a82d206 | 156 | float u = speed; |
vsal | 1:ac7fc0b5f878 | 157 | u = u * position; |
vsal | 11:af3d70d153bb | 158 | |
vsal | 11:af3d70d153bb | 159 | if(rightCorner() == 1 && direction == 'R') |
vsal | 10:86cb40bf1c17 | 160 | { |
vsal | 10:86cb40bf1c17 | 161 | rightTurn(speed); |
vsal | 11:af3d70d153bb | 162 | huey.printf("R"); |
vsal | 11:af3d70d153bb | 163 | return 1; |
vsal | 9:493011bacdcd | 164 | } |
vsal | 11:af3d70d153bb | 165 | else if(leftCorner() == 1 && direction == 'L') |
vsal | 9:493011bacdcd | 166 | { |
vsal | 10:86cb40bf1c17 | 167 | leftTurn(speed); |
vsal | 11:af3d70d153bb | 168 | huey.printf("L"); |
vsal | 11:af3d70d153bb | 169 | return 1; |
vsal | 11:af3d70d153bb | 170 | } |
vsal | 11:af3d70d153bb | 171 | else if(sideSensorsDark() == 1 && direction == 'E') |
vsal | 11:af3d70d153bb | 172 | { |
vsal | 11:af3d70d153bb | 173 | turnAround(speed); |
vsal | 11:af3d70d153bb | 174 | huey.stop(); |
vsal | 11:af3d70d153bb | 175 | return 2; |
vsal | 11:af3d70d153bb | 176 | } |
vsal | 11:af3d70d153bb | 177 | else if((rightCorner() == 1 || leftCorner() == 1) && direction == 'S') |
vsal | 11:af3d70d153bb | 178 | { |
vsal | 10:86cb40bf1c17 | 179 | int side = sideSensorsLight(); |
vsal | 10:86cb40bf1c17 | 180 | huey.forward(speed/2); |
vsal | 10:86cb40bf1c17 | 181 | while(side == 0) |
vsal | 10:86cb40bf1c17 | 182 | { |
vsal | 10:86cb40bf1c17 | 183 | side = sideSensorsLight(); |
vsal | 10:86cb40bf1c17 | 184 | } |
vsal | 11:af3d70d153bb | 185 | return 1; |
vsal | 9:493011bacdcd | 186 | } |
vsal | 9:493011bacdcd | 187 | else if(speed+u > 1) |
vsal | 9:493011bacdcd | 188 | { |
vsal | 9:493011bacdcd | 189 | huey.stop(); |
vsal | 9:493011bacdcd | 190 | huey.printf("Fast Er"); |
vsal | 11:af3d70d153bb | 191 | return 0; |
vsal | 9:493011bacdcd | 192 | } |
vsal | 9:493011bacdcd | 193 | else |
vsal | 9:493011bacdcd | 194 | { |
vsal | 9:493011bacdcd | 195 | huey.right_motor(speed-u); |
vsal | 9:493011bacdcd | 196 | huey.left_motor(speed+u); |
vsal | 11:af3d70d153bb | 197 | return 0; |
vsal | 9:493011bacdcd | 198 | } |
vsal | 1:ac7fc0b5f878 | 199 | } |
vsal | 1:ac7fc0b5f878 | 200 | |
vsal | 9:493011bacdcd | 201 | |
vsal | 9:493011bacdcd | 202 | |
vsal | 11:af3d70d153bb | 203 | /* |
vsal | 3:6f773c2ba3a0 | 204 | void slowStop(float speed, float waitTime, int steps) |
vsal | 1:ac7fc0b5f878 | 205 | { |
vsal | 3:6f773c2ba3a0 | 206 | float i; |
vsal | 3:6f773c2ba3a0 | 207 | for(i = speed; i > 0; i = i - (speed/steps)) |
vsal | 1:ac7fc0b5f878 | 208 | { |
vsal | 10:86cb40bf1c17 | 209 | |
vsal | 3:6f773c2ba3a0 | 210 | smoothFollow(huey.line_position(),i); |
vsal | 3:6f773c2ba3a0 | 211 | wait(waitTime); |
vsal | 1:ac7fc0b5f878 | 212 | } |
vsal | 3:6f773c2ba3a0 | 213 | huey.stop(); |
vsal | 1:ac7fc0b5f878 | 214 | } |
vsal | 11:af3d70d153bb | 215 | */ |
vsal | 3:6f773c2ba3a0 | 216 | |
vsal | 3:6f773c2ba3a0 | 217 | int pushToStart(void) |
vsal | 3:6f773c2ba3a0 | 218 | { |
vsal | 3:6f773c2ba3a0 | 219 | DigitalIn button(p21); |
vsal | 3:6f773c2ba3a0 | 220 | int value = button.read(); |
vsal | 3:6f773c2ba3a0 | 221 | return value; |
vsal | 3:6f773c2ba3a0 | 222 | } |
vsal | 3:6f773c2ba3a0 | 223 | |
vsal | 3:6f773c2ba3a0 | 224 | |
vsal | 8:09f4495696d2 | 225 | |
vsal | 3:6f773c2ba3a0 | 226 | ///////////////////////////////////////////////////////////////// |
vsal | 1:ac7fc0b5f878 | 227 | int main() { |
vsal | 10:86cb40bf1c17 | 228 | |
vsal | 10:86cb40bf1c17 | 229 | |
vsal | 10:86cb40bf1c17 | 230 | //Matrix of paths from one point to another: Right = R, Left = L, Straight = S |
vsal | 11:af3d70d153bb | 231 | char map[6][6][20] = |
vsal | 10:86cb40bf1c17 | 232 | { |
vsal | 11:af3d70d153bb | 233 | {"", "LRLLRE", "LRLSSE", "LRLSRLLE", "LRRLSLRRRLE", "LRRLRE"}, |
vsal | 11:af3d70d153bb | 234 | {"LRRLRE", "", "LLSE", "LLRLLE", "LSRLRRLE", "LRSLRE"}, |
vsal | 11:af3d70d153bb | 235 | {"SSRLRE", "SRRE", "", "LLLE", "LLRSRLE", "SSSLRE"}, |
vsal | 11:af3d70d153bb | 236 | {"RLSRLRE", "RLRRE", "RRE", "", "SSRLE", "SRLRLE"}, |
vsal | 11:af3d70d153bb | 237 | {"RLLLRSRLLRE", "RLLRLSRE", "RLSLRE", "RLSSE", "", "RLLLRLE"}, |
vsal | 11:af3d70d153bb | 238 | {"LRLLRE", "LRSLRE", "LRSSSE", "RLRLSE", "RLRRRLE", ""} |
vsal | 11:af3d70d153bb | 239 | }; |
vsal | 10:86cb40bf1c17 | 240 | |
vsal | 11:af3d70d153bb | 241 | int points[3] = {1,2,4}; |
vsal | 10:86cb40bf1c17 | 242 | |
vsal | 10:86cb40bf1c17 | 243 | |
vsal | 10:86cb40bf1c17 | 244 | |
vsal | 9:493011bacdcd | 245 | //time_t startt, endt; |
vsal | 9:493011bacdcd | 246 | //time(&startt); |
vsal | 9:493011bacdcd | 247 | //clock_t clock; |
vsal | 3:6f773c2ba3a0 | 248 | |
vsal | 8:09f4495696d2 | 249 | //btbee trial |
vsal | 8:09f4495696d2 | 250 | // initialization stuff //////////////////////////////////////////////////////////////////////////////////////////////////// |
vsal | 8:09f4495696d2 | 251 | huey.locate(0,1); |
vsal | 8:09f4495696d2 | 252 | btbee.reset(); |
vsal | 8:09f4495696d2 | 253 | for (int i = 0; i <4; i++) { |
vsal | 8:09f4495696d2 | 254 | mbed_led[i] = 0; |
vsal | 8:09f4495696d2 | 255 | } |
vsal | 8:09f4495696d2 | 256 | for (int i = 0; i <8; i++) { |
vsal | 8:09f4495696d2 | 257 | m3pi_led[i]=0; |
vsal | 8:09f4495696d2 | 258 | } |
vsal | 8:09f4495696d2 | 259 | m3pi_pb.mode(PullUp); // expected would be 1 when pb is pressed, 0 when not, opposite is the case |
vsal | 8:09f4495696d2 | 260 | |
vsal | 8:09f4495696d2 | 261 | // end initialization stuff //////////////////////////////////////////////////////////////////////////////////////////////// |
vsal | 8:09f4495696d2 | 262 | |
vsal | 8:09f4495696d2 | 263 | huey.locate(0,0); |
vsal | 8:09f4495696d2 | 264 | huey.printf("B:%0.3f%V",huey.battery()); |
vsal | 8:09f4495696d2 | 265 | wait(0.3); |
vsal | 8:09f4495696d2 | 266 | |
vsal | 8:09f4495696d2 | 267 | huey.locate(0,0); |
vsal | 8:09f4495696d2 | 268 | huey.printf("%s","btTest"); |
vsal | 8:09f4495696d2 | 269 | huey.locate(0,1); |
vsal | 8:09f4495696d2 | 270 | huey.printf("%s","PBonLNK"); |
vsal | 8:09f4495696d2 | 271 | |
vsal | 8:09f4495696d2 | 272 | // wait for the user to push P21, should be pressed when the bt link is established (green led "link") |
vsal | 8:09f4495696d2 | 273 | while(m3pi_pb) { |
vsal | 8:09f4495696d2 | 274 | m3pi_led[0]=!m3pi_led[0]; |
vsal | 8:09f4495696d2 | 275 | wait(0.1); |
vsal | 8:09f4495696d2 | 276 | } |
vsal | 8:09f4495696d2 | 277 | |
vsal | 8:09f4495696d2 | 278 | int iline=1; |
vsal | 8:09f4495696d2 | 279 | char arr_read[30]; // this should be long enough to store any reply coming in over bt. |
vsal | 8:09f4495696d2 | 280 | int chars_read; // number of chars read in a bt reply |
vsal | 8:09f4495696d2 | 281 | |
vsal | 9:493011bacdcd | 282 | while (iline < 3) { |
vsal | 8:09f4495696d2 | 283 | // this writes "Line 001\n" to "Line 005\n" and then "end\n" to the btbee |
vsal | 8:09f4495696d2 | 284 | if ( btbee.writeable() ) { |
vsal | 9:493011bacdcd | 285 | if (iline==2) { |
vsal | 9:493011bacdcd | 286 | //btbee.printf("end\n"); |
vsal | 8:09f4495696d2 | 287 | iline++; |
vsal | 8:09f4495696d2 | 288 | }//if |
vsal | 8:09f4495696d2 | 289 | else { |
vsal | 9:493011bacdcd | 290 | if (iline <2){ |
vsal | 9:493011bacdcd | 291 | //time(&endt); |
vsal | 9:493011bacdcd | 292 | //btbee.printf("%f seconds - ", clock); |
vsal | 10:86cb40bf1c17 | 293 | //btbee.printf("Battery Voltage: %f\n", huey.battery()); |
vsal | 8:09f4495696d2 | 294 | m3pi_led[0]=0; |
vsal | 8:09f4495696d2 | 295 | huey.locate(0,0); |
vsal | 8:09f4495696d2 | 296 | huey.printf("Sent %0.3d",iline); |
vsal | 8:09f4495696d2 | 297 | iline++; |
vsal | 8:09f4495696d2 | 298 | } |
vsal | 8:09f4495696d2 | 299 | }//else |
vsal | 8:09f4495696d2 | 300 | }//if_write |
vsal | 8:09f4495696d2 | 301 | |
vsal | 8:09f4495696d2 | 302 | // check for answers after each write /not write |
vsal | 8:09f4495696d2 | 303 | while ( btbee.readable() ) { |
vsal | 8:09f4495696d2 | 304 | m3pi_led[7]=1; |
vsal | 8:09f4495696d2 | 305 | btbee.read_all(arr_read, 30, &chars_read ); |
vsal | 8:09f4495696d2 | 306 | m3pi_led[6]=1; |
vsal | 8:09f4495696d2 | 307 | huey.locate(0,1); |
vsal | 8:09f4495696d2 | 308 | huey.print(arr_read,chars_read); |
vsal | 8:09f4495696d2 | 309 | m3pi_led[5]=1; |
vsal | 8:09f4495696d2 | 310 | }//while_readable |
vsal | 8:09f4495696d2 | 311 | wait(0.1); |
vsal | 8:09f4495696d2 | 312 | }//while_true |
vsal | 9:493011bacdcd | 313 | |
vsal | 8:09f4495696d2 | 314 | //main |
vsal | 8:09f4495696d2 | 315 | //end of btbee trial |
vsal | 8:09f4495696d2 | 316 | |
vsal | 8:09f4495696d2 | 317 | |
vsal | 7:d0c19729e7fd | 318 | |
vsal | 3:6f773c2ba3a0 | 319 | m3pi_IN[0].mode(PullUp); |
vsal | 3:6f773c2ba3a0 | 320 | m3pi_IN[1].mode(PullUp); |
vsal | 3:6f773c2ba3a0 | 321 | |
vsal | 3:6f773c2ba3a0 | 322 | int start; |
vsal | 3:6f773c2ba3a0 | 323 | do |
vsal | 3:6f773c2ba3a0 | 324 | { |
vsal | 3:6f773c2ba3a0 | 325 | start = pushToStart(); |
vsal | 3:6f773c2ba3a0 | 326 | }while(start == 1); |
vsal | 3:6f773c2ba3a0 | 327 | |
vsal | 3:6f773c2ba3a0 | 328 | wait(1); |
vsal | 1:ac7fc0b5f878 | 329 | //calibrates sensors |
vsal | 1:ac7fc0b5f878 | 330 | huey.sensor_auto_calibrate(); |
vsal | 1:ac7fc0b5f878 | 331 | |
vsal | 3:6f773c2ba3a0 | 332 | printBattery(); |
vsal | 0:80d9725a7342 | 333 | |
vsal | 0:80d9725a7342 | 334 | |
vsal | 2:e513ada0ecf1 | 335 | float speed = 0.25; |
vsal | 1:ac7fc0b5f878 | 336 | float pos; |
vsal | 1:ac7fc0b5f878 | 337 | int z=1; |
vsal | 10:86cb40bf1c17 | 338 | |
vsal | 9:493011bacdcd | 339 | |
vsal | 1:ac7fc0b5f878 | 340 | while(z==1) |
vsal | 1:ac7fc0b5f878 | 341 | { |
vsal | 10:86cb40bf1c17 | 342 | |
vsal | 9:493011bacdcd | 343 | |
vsal | 11:af3d70d153bb | 344 | huey.cls(); |
vsal | 11:af3d70d153bb | 345 | for(int p = 1; p < sizeof(points); p ++) |
vsal | 11:af3d70d153bb | 346 | { |
vsal | 11:af3d70d153bb | 347 | int s = points[p-1] - 1; |
vsal | 11:af3d70d153bb | 348 | int f = points[p] - 1; |
vsal | 11:af3d70d153bb | 349 | for(int i = 0; i < sizeof(map[s][f]); i++) |
vsal | 11:af3d70d153bb | 350 | { |
vsal | 11:af3d70d153bb | 351 | int change = 0; |
vsal | 11:af3d70d153bb | 352 | while(change == 0) |
vsal | 11:af3d70d153bb | 353 | { |
vsal | 11:af3d70d153bb | 354 | pos = myLinePos(); |
vsal | 11:af3d70d153bb | 355 | change = smoothFollow(pos, speed, map[s][f][i]); |
vsal | 11:af3d70d153bb | 356 | } |
vsal | 11:af3d70d153bb | 357 | if(change == 2) |
vsal | 11:af3d70d153bb | 358 | { |
vsal | 11:af3d70d153bb | 359 | huey.stop(); |
vsal | 11:af3d70d153bb | 360 | wait(1); |
vsal | 11:af3d70d153bb | 361 | break; |
vsal | 11:af3d70d153bb | 362 | } |
vsal | 11:af3d70d153bb | 363 | } |
vsal | 11:af3d70d153bb | 364 | } |
vsal | 3:6f773c2ba3a0 | 365 | if(m3pi_IN[0]==0) |
vsal | 3:6f773c2ba3a0 | 366 | { |
vsal | 11:af3d70d153bb | 367 | //slowStop(speed, 0.05, 3); |
vsal | 3:6f773c2ba3a0 | 368 | huey.stop(); |
vsal | 9:493011bacdcd | 369 | btbee.printf("Object in Front"); |
vsal | 3:6f773c2ba3a0 | 370 | while(m3pi_IN[0]==0) |
vsal | 3:6f773c2ba3a0 | 371 | { |
vsal | 9:493011bacdcd | 372 | huey.stop(); |
vsal | 3:6f773c2ba3a0 | 373 | } |
vsal | 3:6f773c2ba3a0 | 374 | } |
vsal | 9:493011bacdcd | 375 | if(pushToStart() == 0) |
vsal | 9:493011bacdcd | 376 | { |
vsal | 9:493011bacdcd | 377 | btbee.printf("end\n"); |
vsal | 9:493011bacdcd | 378 | break; |
vsal | 9:493011bacdcd | 379 | } |
vsal | 1:ac7fc0b5f878 | 380 | } |
vsal | 1:ac7fc0b5f878 | 381 | |
vsal | 1:ac7fc0b5f878 | 382 | |
vsal | 0:80d9725a7342 | 383 | |
vsal | 0:80d9725a7342 | 384 | |
vsal | 0:80d9725a7342 | 385 | |
vsal | 0:80d9725a7342 | 386 | |
vsal | 0:80d9725a7342 | 387 | while(1) |
vsal | 0:80d9725a7342 | 388 | { |
vsal | 0:80d9725a7342 | 389 | myled = 1; |
vsal | 0:80d9725a7342 | 390 | wait(0.2); |
vsal | 0:80d9725a7342 | 391 | myled = 0; |
vsal | 0:80d9725a7342 | 392 | wait(0.2); |
vsal | 0:80d9725a7342 | 393 | } |
vsal | 0:80d9725a7342 | 394 | } |
vsal | 1:ac7fc0b5f878 | 395 |