lab4
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
main.cpp@2:437fc6e9a1c3, 2015-03-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |