lab4

Dependencies:   4DGL-uLCD-SE mbed-rtos mbed

Committer:
sheldonfernandes2404
Date:
Tue Mar 10 03:04:14 2015 +0000
Revision:
2:437fc6e9a1c3
Parent:
1:070b617f00f3
Child:
3:8bef7af1ba84
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sheldonfernandes2404 0:fcc91e110a28 1 #include "mbed.h"
sheldonfernandes2404 0:fcc91e110a28 2 #include "uLCD_4DGL.h"
sheldonfernandes2404 0:fcc91e110a28 3 #include "math.h"
sheldonfernandes2404 0:fcc91e110a28 4 #include "rtos.h"
sim91 1:070b617f00f3 5 #include "wave_player.h"
sim91 1:070b617f00f3 6 #include "SDFileSystem.h"
sim91 1:070b617f00f3 7 #include "Speaker.h"
sim91 1:070b617f00f3 8 #include <string>
sheldonfernandes2404 0:fcc91e110a28 9
sim91 1:070b617f00f3 10 #define YELLOW 0xFFFF00
sim91 1:070b617f00f3 11 #define ORANGE 0xffdd76
sim91 1:070b617f00f3 12 #define MECYAN 0x009696
sim91 1:070b617f00f3 13
sim91 1:070b617f00f3 14 AnalogIn steer(p17);
sheldonfernandes2404 0:fcc91e110a28 15 AnalogIn force(p16);
sim91 1:070b617f00f3 16 AnalogIn timer(p20);
sheldonfernandes2404 0:fcc91e110a28 17 uLCD_4DGL lcd(p28, p27, p30);
sheldonfernandes2404 0:fcc91e110a28 18 Mutex stdio_mutex;
sheldonfernandes2404 0:fcc91e110a28 19
sheldonfernandes2404 0:fcc91e110a28 20 volatile int count=30;
sheldonfernandes2404 0:fcc91e110a28 21 volatile int a=0;
sim91 1:070b617f00f3 22 volatile int cheat=3;
sim91 1:070b617f00f3 23
sim91 1:070b617f00f3 24 void forward(void const *args)
sim91 1:070b617f00f3 25 {
sim91 1:070b617f00f3 26 while(1) {
sim91 1:070b617f00f3 27 if (timer<0.1) {
sim91 1:070b617f00f3 28 if(count<29 && cheat>0) {
sim91 1:070b617f00f3 29 ++count;
sheldonfernandes2404 2:437fc6e9a1c3 30 ++count;
sim91 1:070b617f00f3 31 --cheat;
sim91 1:070b617f00f3 32 }
sim91 1:070b617f00f3 33 }
sim91 1:070b617f00f3 34 Thread::wait(400);
sim91 1:070b617f00f3 35 }
sim91 1:070b617f00f3 36 }
sheldonfernandes2404 0:fcc91e110a28 37
sheldonfernandes2404 0:fcc91e110a28 38 void steering(void const *args)
sheldonfernandes2404 0:fcc91e110a28 39 {
sheldonfernandes2404 0:fcc91e110a28 40 while(1) {
sheldonfernandes2404 0:fcc91e110a28 41 stdio_mutex.lock();
sheldonfernandes2404 0:fcc91e110a28 42 lcd.cls();
sim91 1:070b617f00f3 43 a=floor(steer*39);
sim91 1:070b617f00f3 44 if(a>9) {
sim91 1:070b617f00f3 45 a=9;
sim91 1:070b617f00f3 46 }
sheldonfernandes2404 0:fcc91e110a28 47 switch(a) {
sheldonfernandes2404 0:fcc91e110a28 48 case (1): {
sheldonfernandes2404 0:fcc91e110a28 49 lcd.filled_rectangle(0, 98, 9, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 50 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 51 break;
sheldonfernandes2404 0:fcc91e110a28 52 }
sheldonfernandes2404 0:fcc91e110a28 53 case (2): {
sheldonfernandes2404 0:fcc91e110a28 54 lcd.filled_rectangle(14, 98, 23, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 55 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 56 break;
sheldonfernandes2404 0:fcc91e110a28 57 }
sheldonfernandes2404 0:fcc91e110a28 58 case (3): {
sheldonfernandes2404 0:fcc91e110a28 59 lcd.filled_rectangle(28, 98, 37, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 60 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 61 break;
sheldonfernandes2404 0:fcc91e110a28 62 }
sheldonfernandes2404 0:fcc91e110a28 63 case (4): {
sheldonfernandes2404 0:fcc91e110a28 64 lcd.filled_rectangle(42, 98, 51, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 65 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 66 break;
sheldonfernandes2404 0:fcc91e110a28 67 }
sheldonfernandes2404 0:fcc91e110a28 68 case (5): {
sheldonfernandes2404 0:fcc91e110a28 69 lcd.filled_rectangle(56, 98, 65, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 70 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 71 break;
sheldonfernandes2404 0:fcc91e110a28 72 }
sheldonfernandes2404 0:fcc91e110a28 73 case (6): {
sheldonfernandes2404 0:fcc91e110a28 74 lcd.filled_rectangle(70, 98, 79, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 75 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 76 break;
sheldonfernandes2404 0:fcc91e110a28 77 }
sheldonfernandes2404 0:fcc91e110a28 78 case (7): {
sheldonfernandes2404 0:fcc91e110a28 79 lcd.filled_rectangle(84, 98, 93, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 80 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 81 break;
sheldonfernandes2404 0:fcc91e110a28 82 }
sheldonfernandes2404 0:fcc91e110a28 83 case (8): {
sheldonfernandes2404 0:fcc91e110a28 84 lcd.filled_rectangle(98, 98, 107, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 85 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 86 break;
sheldonfernandes2404 0:fcc91e110a28 87 }
sheldonfernandes2404 0:fcc91e110a28 88 case (9): {
sheldonfernandes2404 0:fcc91e110a28 89 lcd.filled_rectangle(112, 98, 121, 110, BLUE);
sheldonfernandes2404 0:fcc91e110a28 90 Thread::wait(200);
sheldonfernandes2404 0:fcc91e110a28 91 break;
sheldonfernandes2404 0:fcc91e110a28 92 }
sheldonfernandes2404 0:fcc91e110a28 93 }
sheldonfernandes2404 0:fcc91e110a28 94 stdio_mutex.unlock();
sheldonfernandes2404 0:fcc91e110a28 95 }
sheldonfernandes2404 0:fcc91e110a28 96 }
sheldonfernandes2404 0:fcc91e110a28 97
sheldonfernandes2404 0:fcc91e110a28 98 void obstacle(void const *args)
sheldonfernandes2404 0:fcc91e110a28 99 {
sheldonfernandes2404 0:fcc91e110a28 100 while(1) {
sheldonfernandes2404 0:fcc91e110a28 101 stdio_mutex.lock();
sheldonfernandes2404 0:fcc91e110a28 102 switch(count) {
sheldonfernandes2404 0:fcc91e110a28 103 case (30): {
sheldonfernandes2404 0:fcc91e110a28 104 lcd.filled_rectangle(0, 0, 90, 10, RED);
sheldonfernandes2404 0:fcc91e110a28 105 break;
sheldonfernandes2404 0:fcc91e110a28 106 }
sheldonfernandes2404 0:fcc91e110a28 107 case (29): {
sheldonfernandes2404 0:fcc91e110a28 108 lcd.filled_rectangle(0, 10, 90, 20, RED);
sheldonfernandes2404 0:fcc91e110a28 109 break;
sheldonfernandes2404 0:fcc91e110a28 110 }
sheldonfernandes2404 0:fcc91e110a28 111 case (28): {
sheldonfernandes2404 0:fcc91e110a28 112 lcd.filled_rectangle(0, 20, 90, 30, RED);
sheldonfernandes2404 0:fcc91e110a28 113 break;
sheldonfernandes2404 0:fcc91e110a28 114 }
sheldonfernandes2404 0:fcc91e110a28 115 case (27): {
sheldonfernandes2404 0:fcc91e110a28 116 lcd.filled_rectangle(0, 30, 90, 40, RED);
sheldonfernandes2404 0:fcc91e110a28 117 break;
sheldonfernandes2404 0:fcc91e110a28 118 }
sheldonfernandes2404 0:fcc91e110a28 119 case (26): {
sheldonfernandes2404 0:fcc91e110a28 120 lcd.filled_rectangle(0, 40, 90, 50, RED);
sheldonfernandes2404 0:fcc91e110a28 121 break;
sheldonfernandes2404 0:fcc91e110a28 122 }
sheldonfernandes2404 0:fcc91e110a28 123 case (25): {
sheldonfernandes2404 0:fcc91e110a28 124 lcd.filled_rectangle(0, 50, 90, 60, RED);
sheldonfernandes2404 0:fcc91e110a28 125 lcd.filled_rectangle(70, 0, 90, 10, GREEN);
sheldonfernandes2404 0:fcc91e110a28 126 break;
sheldonfernandes2404 0:fcc91e110a28 127 }
sheldonfernandes2404 0:fcc91e110a28 128 case (24): {
sheldonfernandes2404 0:fcc91e110a28 129 lcd.filled_rectangle(0, 60, 90, 70, RED);
sheldonfernandes2404 0:fcc91e110a28 130 lcd.filled_rectangle(70, 10, 127, 20, GREEN);
sheldonfernandes2404 0:fcc91e110a28 131 break;
sheldonfernandes2404 0:fcc91e110a28 132 }
sheldonfernandes2404 0:fcc91e110a28 133 case (23): {
sheldonfernandes2404 0:fcc91e110a28 134 lcd.filled_rectangle(0, 70, 90, 80, RED);
sheldonfernandes2404 0:fcc91e110a28 135 lcd.filled_rectangle(70, 20, 127, 30, GREEN);
sheldonfernandes2404 0:fcc91e110a28 136 break;
sheldonfernandes2404 0:fcc91e110a28 137 }
sheldonfernandes2404 0:fcc91e110a28 138 case (22): {
sheldonfernandes2404 0:fcc91e110a28 139 lcd.filled_rectangle(0, 80, 90, 90, RED);
sheldonfernandes2404 0:fcc91e110a28 140 lcd.filled_rectangle(70, 30, 127, 40, GREEN);
sheldonfernandes2404 0:fcc91e110a28 141 break;
sheldonfernandes2404 0:fcc91e110a28 142 }
sheldonfernandes2404 0:fcc91e110a28 143 case (21): {
sheldonfernandes2404 0:fcc91e110a28 144 lcd.filled_rectangle(0, 90, 90, 100, RED);
sheldonfernandes2404 0:fcc91e110a28 145 lcd.filled_rectangle(70, 40, 127, 50, GREEN);
sheldonfernandes2404 0:fcc91e110a28 146 break;
sheldonfernandes2404 0:fcc91e110a28 147 }
sheldonfernandes2404 0:fcc91e110a28 148 case (20): {
sheldonfernandes2404 0:fcc91e110a28 149 lcd.filled_rectangle(0, 100, 90, 110, RED);
sheldonfernandes2404 0:fcc91e110a28 150 lcd.filled_rectangle(70, 50, 127, 60, GREEN);
sheldonfernandes2404 0:fcc91e110a28 151 if(a<8) {
sheldonfernandes2404 0:fcc91e110a28 152 lcd.locate(3,8);
sheldonfernandes2404 0:fcc91e110a28 153 lcd.printf("YOU LOSE!!!");
sheldonfernandes2404 0:fcc91e110a28 154 exit(0);
sheldonfernandes2404 0:fcc91e110a28 155 }
sheldonfernandes2404 0:fcc91e110a28 156 break;
sheldonfernandes2404 0:fcc91e110a28 157 }
sheldonfernandes2404 0:fcc91e110a28 158 case (19): {
sheldonfernandes2404 0:fcc91e110a28 159 lcd.filled_rectangle(0, 110, 100, 120, RED);
sheldonfernandes2404 0:fcc91e110a28 160 lcd.filled_rectangle(70, 60, 127, 70, GREEN);
sheldonfernandes2404 0:fcc91e110a28 161 lcd.filled_rectangle(40,0 , 90,10 , WHITE);
sheldonfernandes2404 0:fcc91e110a28 162 break;
sheldonfernandes2404 0:fcc91e110a28 163 }
sheldonfernandes2404 0:fcc91e110a28 164 case (18): {
sheldonfernandes2404 0:fcc91e110a28 165 lcd.filled_rectangle(0, 120, 100, 130, RED);
sheldonfernandes2404 0:fcc91e110a28 166 lcd.filled_rectangle(70, 70, 127, 80, GREEN);
sheldonfernandes2404 0:fcc91e110a28 167 lcd.filled_rectangle(40,10 , 90,20 , WHITE);
sheldonfernandes2404 0:fcc91e110a28 168 break;
sheldonfernandes2404 0:fcc91e110a28 169 }
sheldonfernandes2404 0:fcc91e110a28 170 case (17): {
sheldonfernandes2404 0:fcc91e110a28 171 lcd.filled_rectangle(70, 80, 127, 90, GREEN);
sheldonfernandes2404 0:fcc91e110a28 172 lcd.filled_rectangle(40,20 , 90, 30, WHITE);
sheldonfernandes2404 0:fcc91e110a28 173 break;
sheldonfernandes2404 0:fcc91e110a28 174 }
sheldonfernandes2404 0:fcc91e110a28 175 case (16): {
sheldonfernandes2404 0:fcc91e110a28 176 lcd.filled_rectangle(70, 90, 127, 100, GREEN);
sheldonfernandes2404 0:fcc91e110a28 177 lcd.filled_rectangle(40,30 , 90, 40, WHITE);
sheldonfernandes2404 0:fcc91e110a28 178 break;
sheldonfernandes2404 0:fcc91e110a28 179 }
sheldonfernandes2404 0:fcc91e110a28 180 case (15): {
sheldonfernandes2404 0:fcc91e110a28 181 lcd.filled_rectangle(70, 100, 127, 110, GREEN);
sheldonfernandes2404 0:fcc91e110a28 182 lcd.filled_rectangle(40,40 , 90,50 , WHITE);
sheldonfernandes2404 0:fcc91e110a28 183 if(a>6) {
sheldonfernandes2404 0:fcc91e110a28 184 lcd.locate(3,8);
sheldonfernandes2404 0:fcc91e110a28 185 lcd.printf("YOU LOSE!!!");
sheldonfernandes2404 0:fcc91e110a28 186 exit(0);
sheldonfernandes2404 0:fcc91e110a28 187 }
sheldonfernandes2404 0:fcc91e110a28 188 break;
sheldonfernandes2404 0:fcc91e110a28 189 }
sheldonfernandes2404 0:fcc91e110a28 190 case (14): {
sheldonfernandes2404 0:fcc91e110a28 191 lcd.filled_rectangle(70, 110, 127, 120, GREEN);
sheldonfernandes2404 0:fcc91e110a28 192 lcd.filled_rectangle(40,50 , 90, 60, WHITE);
sheldonfernandes2404 0:fcc91e110a28 193 break;
sheldonfernandes2404 0:fcc91e110a28 194 }
sheldonfernandes2404 0:fcc91e110a28 195 case (13): {
sheldonfernandes2404 0:fcc91e110a28 196 lcd.filled_rectangle(70, 120, 127, 130, GREEN);
sim91 1:070b617f00f3 197 lcd.filled_rectangle(40, 60 , 90, 70, WHITE);
sim91 1:070b617f00f3 198 lcd.filled_rectangle(0, 0 , 30, 10, YELLOW);
sim91 1:070b617f00f3 199 lcd.filled_rectangle(60, 0 , 127, 10, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 200 break;
sheldonfernandes2404 0:fcc91e110a28 201 }
sheldonfernandes2404 0:fcc91e110a28 202 case (12): {
sim91 1:070b617f00f3 203 lcd.filled_rectangle(40, 70, 90, 80 , WHITE);
sim91 1:070b617f00f3 204 lcd.filled_rectangle(0, 10, 30, 20, YELLOW);
sim91 1:070b617f00f3 205 lcd.filled_rectangle(60, 10, 127, 20, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 206 break;
sheldonfernandes2404 0:fcc91e110a28 207 }
sheldonfernandes2404 0:fcc91e110a28 208 case (11): {
sim91 1:070b617f00f3 209 lcd.filled_rectangle(40, 80, 90, 90 , WHITE);
sim91 1:070b617f00f3 210 lcd.filled_rectangle(0, 20 , 30, 30, YELLOW);
sim91 1:070b617f00f3 211 lcd.filled_rectangle(60, 20 , 127, 30, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 212 break;
sheldonfernandes2404 0:fcc91e110a28 213 }
sheldonfernandes2404 0:fcc91e110a28 214 case (10): {
sim91 1:070b617f00f3 215 lcd.filled_rectangle(40, 90, 90, 100 , WHITE);
sim91 1:070b617f00f3 216 lcd.filled_rectangle(0, 30 , 30, 40, YELLOW);
sim91 1:070b617f00f3 217 lcd.filled_rectangle(60, 30 , 127, 40, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 218 break;
sheldonfernandes2404 0:fcc91e110a28 219 }
sheldonfernandes2404 0:fcc91e110a28 220 case (9): {
sheldonfernandes2404 0:fcc91e110a28 221 lcd.filled_rectangle(40,100 , 90, 110, WHITE);
sim91 1:070b617f00f3 222 lcd.filled_rectangle(0, 40 , 30, 50, YELLOW);
sim91 1:070b617f00f3 223 lcd.filled_rectangle(60, 40 , 127, 50, YELLOW);
sim91 1:070b617f00f3 224 if(a>3 && a<8 ) {
sim91 1:070b617f00f3 225 lcd.locate(3,8);
sheldonfernandes2404 0:fcc91e110a28 226 lcd.printf("YOU LOSE!!!");
sim91 1:070b617f00f3 227 exit(0);
sim91 1:070b617f00f3 228 }
sheldonfernandes2404 0:fcc91e110a28 229 break;
sheldonfernandes2404 0:fcc91e110a28 230 }
sheldonfernandes2404 0:fcc91e110a28 231 case (8): {
sim91 1:070b617f00f3 232 lcd.filled_rectangle(40,110 , 90, 120, WHITE);
sim91 1:070b617f00f3 233 lcd.filled_rectangle(0, 50 , 30, 60, YELLOW);
sim91 1:070b617f00f3 234 lcd.filled_rectangle(60, 50 , 127, 60, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 235 break;
sheldonfernandes2404 0:fcc91e110a28 236 }
sheldonfernandes2404 0:fcc91e110a28 237 case (7): {
sim91 1:070b617f00f3 238 lcd.filled_rectangle(40,120 , 90, 130, WHITE);
sim91 1:070b617f00f3 239 lcd.filled_rectangle(0, 60 , 30, 70, YELLOW);
sim91 1:070b617f00f3 240 lcd.filled_rectangle(60, 60 , 127, 70, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 241 break;
sheldonfernandes2404 0:fcc91e110a28 242 }
sheldonfernandes2404 0:fcc91e110a28 243 case (6): {
sim91 1:070b617f00f3 244 lcd.filled_rectangle(0, 70 , 30, 80, YELLOW);
sim91 1:070b617f00f3 245 lcd.filled_rectangle(60, 70 , 127, 80, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 246 break;
sheldonfernandes2404 0:fcc91e110a28 247 }
sheldonfernandes2404 0:fcc91e110a28 248 case (5): {
sim91 1:070b617f00f3 249 lcd.filled_rectangle(0, 80 , 30, 90, YELLOW);
sim91 1:070b617f00f3 250 lcd.filled_rectangle(60, 80 , 127, 90, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 251 break;
sheldonfernandes2404 0:fcc91e110a28 252 }
sheldonfernandes2404 0:fcc91e110a28 253 case (4): {
sim91 1:070b617f00f3 254 lcd.filled_rectangle(0, 90 , 30, 100, YELLOW);
sim91 1:070b617f00f3 255 lcd.filled_rectangle(60, 90 , 127, 100, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 256 break;
sheldonfernandes2404 0:fcc91e110a28 257 }
sheldonfernandes2404 0:fcc91e110a28 258 case (3): {
sim91 1:070b617f00f3 259 lcd.filled_rectangle(0, 100 , 30, 110, YELLOW);
sim91 1:070b617f00f3 260 lcd.filled_rectangle(60, 100 , 127, 110, YELLOW);
sim91 1:070b617f00f3 261 if(a<4 || a>5 ) {
sim91 1:070b617f00f3 262 lcd.locate(3,8);
sim91 1:070b617f00f3 263 lcd.printf("YOU LOSE!!!");
sim91 1:070b617f00f3 264 exit(0);
sim91 1:070b617f00f3 265 }
sheldonfernandes2404 0:fcc91e110a28 266 break;
sheldonfernandes2404 0:fcc91e110a28 267 }
sheldonfernandes2404 0:fcc91e110a28 268 case (2): {
sim91 1:070b617f00f3 269 lcd.filled_rectangle(0, 110 , 30, 120, YELLOW);
sim91 1:070b617f00f3 270 lcd.filled_rectangle(60, 110 , 127, 120, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 271 break;
sheldonfernandes2404 0:fcc91e110a28 272 }
sheldonfernandes2404 0:fcc91e110a28 273 case (1): {
sim91 1:070b617f00f3 274 lcd.filled_rectangle(0, 120 , 30, 130, YELLOW);
sim91 1:070b617f00f3 275 lcd.filled_rectangle(60, 120 , 127, 130, YELLOW);
sheldonfernandes2404 0:fcc91e110a28 276 break;
sheldonfernandes2404 0:fcc91e110a28 277 }
sheldonfernandes2404 0:fcc91e110a28 278
sheldonfernandes2404 0:fcc91e110a28 279 }
sheldonfernandes2404 0:fcc91e110a28 280 stdio_mutex.unlock();
sheldonfernandes2404 0:fcc91e110a28 281 }
sheldonfernandes2404 0:fcc91e110a28 282 }
sheldonfernandes2404 0:fcc91e110a28 283
sheldonfernandes2404 0:fcc91e110a28 284 int main(void)
sheldonfernandes2404 0:fcc91e110a28 285 {
sheldonfernandes2404 2:437fc6e9a1c3 286 lcd.printf("Need for Speed :P \n");
sheldonfernandes2404 2:437fc6e9a1c3 287 lcd.printf("------------------");
sheldonfernandes2404 2:437fc6e9a1c3 288 lcd.printf("1. Rotation Sensor - To steer right or left\n\n");
sheldonfernandes2404 2:437fc6e9a1c3 289 lcd.printf("2. Force Sensor - To speed up\n\n");
sheldonfernandes2404 2:437fc6e9a1c3 290 lcd.printf("3. Touch Sensor - To Cheat (3 times max)\n\n\n");
sheldonfernandes2404 2:437fc6e9a1c3 291 lcd.printf(" Touch to begin!\n");
sheldonfernandes2404 2:437fc6e9a1c3 292
sheldonfernandes2404 2:437fc6e9a1c3 293 while(timer);
sheldonfernandes2404 2:437fc6e9a1c3 294
sheldonfernandes2404 0:fcc91e110a28 295 Thread thread1(steering);
sheldonfernandes2404 0:fcc91e110a28 296 Thread thread2(obstacle);
sim91 1:070b617f00f3 297 Thread thread3(forward);
sheldonfernandes2404 0:fcc91e110a28 298
sheldonfernandes2404 0:fcc91e110a28 299 while (1) {
sheldonfernandes2404 0:fcc91e110a28 300 stdio_mutex.lock();
sheldonfernandes2404 0:fcc91e110a28 301 int wait=450*force;
sheldonfernandes2404 0:fcc91e110a28 302 lcd.locate(13,0);
sheldonfernandes2404 0:fcc91e110a28 303 lcd.printf("%d",--count);
sheldonfernandes2404 0:fcc91e110a28 304
sheldonfernandes2404 0:fcc91e110a28 305 Thread::wait(600-wait);
sheldonfernandes2404 0:fcc91e110a28 306 if(count==0) {
sim91 1:070b617f00f3 307 lcd.cls();
sheldonfernandes2404 0:fcc91e110a28 308 lcd.locate(1,8);
sheldonfernandes2404 0:fcc91e110a28 309 lcd.printf("Congrats You win!");
sheldonfernandes2404 0:fcc91e110a28 310 exit(0);
sheldonfernandes2404 0:fcc91e110a28 311 }
sheldonfernandes2404 0:fcc91e110a28 312 stdio_mutex.unlock();
sheldonfernandes2404 0:fcc91e110a28 313 }
sheldonfernandes2404 0:fcc91e110a28 314 }