Guitar Hero Project on LPC1768 using push buttons, analog joystick. speaker and LCD Display

Dependencies:   mbed wave_player mbed-rtos 4DGL-uLCD-SE SparkfunAnalogJoystick SDFileSystem_OldbutworkswithRTOS PinDetect

Committer:
rpatel397
Date:
Tue Nov 17 18:33:41 2020 +0000
Revision:
3:6f639d41aef3
Parent:
2:c2afd0c426af
Child:
4:577404e4d53f
Most screens done for the menu flow

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rpatel397 3:6f639d41aef3 1
4180_1 1:5b8e223e983d 2
4180_1 1:5b8e223e983d 3 #include "mbed.h"
4180_1 2:c2afd0c426af 4 #include "rtos.h"
4180_1 1:5b8e223e983d 5 #include "SDFileSystem.h"
rpatel397 3:6f639d41aef3 6 #include "uLCD_4DGL.h"
rpatel397 3:6f639d41aef3 7 #include "PinDetect.h"
rpatel397 3:6f639d41aef3 8
rpatel397 3:6f639d41aef3 9 Mutex lcd_mut;
rpatel397 3:6f639d41aef3 10 //SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
rpatel397 3:6f639d41aef3 11 uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin;
rpatel397 3:6f639d41aef3 12 //AnalogOut DACout(p18);
rpatel397 3:6f639d41aef3 13 //wave_player waver(&DACout);
rpatel397 3:6f639d41aef3 14
rpatel397 3:6f639d41aef3 15 PinDetect pb_1(p9, PullUp);
rpatel397 3:6f639d41aef3 16 PinDetect pb_2(p10, PullUp);
rpatel397 3:6f639d41aef3 17 PinDetect pb_3(p11, PullUp);
rpatel397 3:6f639d41aef3 18 PinDetect pb_4(p12, PullUp);
rpatel397 3:6f639d41aef3 19
rpatel397 3:6f639d41aef3 20 #define Main_Menu 0 // the first screen being shown
rpatel397 3:6f639d41aef3 21 #define Choose_Difficulty 1 // after hitting start, player chooses difficult
rpatel397 3:6f639d41aef3 22 #define Choose_Song 2 // after choosing difficullyt, choose song
rpatel397 3:6f639d41aef3 23 #define Start_Game 3 // the game has started
rpatel397 3:6f639d41aef3 24 #define Game_Over 4 // the game is done
rpatel397 3:6f639d41aef3 25
rpatel397 3:6f639d41aef3 26
rpatel397 3:6f639d41aef3 27 //colors
rpatel397 3:6f639d41aef3 28 #define YELLOW 16709376
rpatel397 3:6f639d41aef3 29
rpatel397 3:6f639d41aef3 30 //speed based on difficulty
rpatel397 3:6f639d41aef3 31 #define Easy 2
rpatel397 3:6f639d41aef3 32 #define Medium 5
rpatel397 3:6f639d41aef3 33 #define Hard 8
4180_1 1:5b8e223e983d 34
4180_1 1:5b8e223e983d 35
rpatel397 3:6f639d41aef3 36 DigitalOut myled1(LED1);
rpatel397 3:6f639d41aef3 37 DigitalOut myled2(LED2);
rpatel397 3:6f639d41aef3 38 DigitalOut myled3(LED3);
rpatel397 3:6f639d41aef3 39 DigitalOut myled4(LED4);
rpatel397 3:6f639d41aef3 40
rpatel397 3:6f639d41aef3 41 volatile int Game_State = Game_Over;
rpatel397 3:6f639d41aef3 42 volatile bool draw_enable = true;
rpatel397 3:6f639d41aef3 43 volatile int Speed = Easy;
rpatel397 3:6f639d41aef3 44
rpatel397 3:6f639d41aef3 45 FILE *wave_file;
4180_1 1:5b8e223e983d 46
rpatel397 3:6f639d41aef3 47 void LCD(void const *args) {
rpatel397 3:6f639d41aef3 48 myled1 = 1;
rpatel397 3:6f639d41aef3 49 while(1) {
rpatel397 3:6f639d41aef3 50 switch (Game_State) {
rpatel397 3:6f639d41aef3 51 case Start_Game :
rpatel397 3:6f639d41aef3 52 if (draw_enable) {
rpatel397 3:6f639d41aef3 53 lcd_mut.lock();
rpatel397 3:6f639d41aef3 54 uLCD.cls();
rpatel397 3:6f639d41aef3 55 uLCD.printf("Start_Game");
rpatel397 3:6f639d41aef3 56 lcd_mut.unlock();
rpatel397 3:6f639d41aef3 57 }
rpatel397 3:6f639d41aef3 58 break;
rpatel397 3:6f639d41aef3 59 case Game_Over :
rpatel397 3:6f639d41aef3 60 if (draw_enable) {
rpatel397 3:6f639d41aef3 61 draw_enable = false;
rpatel397 3:6f639d41aef3 62 lcd_mut.lock();
rpatel397 3:6f639d41aef3 63 uLCD.cls();
rpatel397 3:6f639d41aef3 64 uLCD.line(0, 0, 127, 0, RED);
rpatel397 3:6f639d41aef3 65 uLCD.line(127, 0, 127, 127, BLUE);
rpatel397 3:6f639d41aef3 66 uLCD.line(127, 127, 0, 127, GREEN);
rpatel397 3:6f639d41aef3 67 uLCD.line(0, 127, 0, 0, YELLOW);
rpatel397 3:6f639d41aef3 68 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 69 uLCD.text_height(2);
rpatel397 3:6f639d41aef3 70 uLCD.text_string("Game Over",4,0,FONT_8X8, BLUE);
rpatel397 3:6f639d41aef3 71
rpatel397 3:6f639d41aef3 72 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 73 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 74 uLCD.text_string("Score:",2,6,FONT_8X8, YELLOW);
rpatel397 3:6f639d41aef3 75 uLCD.text_string("Hits:",2,8,FONT_8X8, GREEN);
rpatel397 3:6f639d41aef3 76 uLCD.text_string("Misses:",2,10,FONT_8X8, RED);
rpatel397 3:6f639d41aef3 77 uLCD.text_height(2);
rpatel397 3:6f639d41aef3 78 uLCD.text_string("High Score:",2,6,FONT_8X8, WHITE);
rpatel397 3:6f639d41aef3 79 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 80
rpatel397 3:6f639d41aef3 81 lcd_mut.unlock();
rpatel397 3:6f639d41aef3 82 }
rpatel397 3:6f639d41aef3 83 break;
rpatel397 3:6f639d41aef3 84 case Choose_Song :
rpatel397 3:6f639d41aef3 85 if (draw_enable) {
rpatel397 3:6f639d41aef3 86 draw_enable = false;
rpatel397 3:6f639d41aef3 87 lcd_mut.lock();
rpatel397 3:6f639d41aef3 88 uLCD.cls();
rpatel397 3:6f639d41aef3 89 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 90 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 91 uLCD.locate(1,1);
rpatel397 3:6f639d41aef3 92 uLCD.color(BLUE);
rpatel397 3:6f639d41aef3 93 uLCD.text_underline(ON);
rpatel397 3:6f639d41aef3 94 uLCD.text_string("Choose Song",4,1,FONT_8X8, BLUE);
rpatel397 3:6f639d41aef3 95 uLCD.text_underline(OFF);
rpatel397 3:6f639d41aef3 96 uLCD.set_font(FONT_7X8);
rpatel397 3:6f639d41aef3 97 uLCD.triangle(64, 32,58, 40, 70, 40, WHITE);
rpatel397 3:6f639d41aef3 98 uLCD.triangle(64, 92 ,58, 84, 70, 84, WHITE);
rpatel397 3:6f639d41aef3 99 uLCD.color(GREEN);
rpatel397 3:6f639d41aef3 100 uLCD.rectangle(10,44,118, 80, LGREY);
rpatel397 3:6f639d41aef3 101 uLCD.text_width(2);
rpatel397 3:6f639d41aef3 102 uLCD.text_height(2);
rpatel397 3:6f639d41aef3 103 uLCD.text_string("Schools\nOut",1,3,FONT_8X8, GREEN);
rpatel397 3:6f639d41aef3 104 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 105 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 106 lcd_mut.unlock();
rpatel397 3:6f639d41aef3 107 }
rpatel397 3:6f639d41aef3 108 break;
rpatel397 3:6f639d41aef3 109 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 110 if (draw_enable) {
rpatel397 3:6f639d41aef3 111 draw_enable = false;
rpatel397 3:6f639d41aef3 112 lcd_mut.lock();
rpatel397 3:6f639d41aef3 113 uLCD.cls();
rpatel397 3:6f639d41aef3 114 uLCD.text_width(1.5);
rpatel397 3:6f639d41aef3 115 uLCD.text_height(1.5);
rpatel397 3:6f639d41aef3 116 uLCD.locate(1,1);
rpatel397 3:6f639d41aef3 117 uLCD.color(BLUE);
rpatel397 3:6f639d41aef3 118 uLCD.text_underline(ON);
rpatel397 3:6f639d41aef3 119 uLCD.text_string("Choose Difficulty",1,1,FONT_8X8, BLUE);
rpatel397 3:6f639d41aef3 120 uLCD.text_underline(OFF);
rpatel397 3:6f639d41aef3 121 uLCD.set_font(FONT_7X8);
rpatel397 3:6f639d41aef3 122 uLCD.text_width(2);
rpatel397 3:6f639d41aef3 123 uLCD.text_height(2);
rpatel397 3:6f639d41aef3 124 uLCD.color(GREEN);
rpatel397 3:6f639d41aef3 125 uLCD.locate(1,2);
rpatel397 3:6f639d41aef3 126 uLCD.printf("1|EASY");
rpatel397 3:6f639d41aef3 127 uLCD.locate(1,4);
rpatel397 3:6f639d41aef3 128 uLCD.color(YELLOW);
rpatel397 3:6f639d41aef3 129
rpatel397 3:6f639d41aef3 130 uLCD.printf("2|MEDIUM");
rpatel397 3:6f639d41aef3 131 uLCD.locate(1,6);
rpatel397 3:6f639d41aef3 132 uLCD.color(RED);
rpatel397 3:6f639d41aef3 133 uLCD.printf("3|HARD");
rpatel397 3:6f639d41aef3 134 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 135 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 136 lcd_mut.unlock();
rpatel397 3:6f639d41aef3 137 }
rpatel397 3:6f639d41aef3 138 break;
rpatel397 3:6f639d41aef3 139 case Main_Menu :
rpatel397 3:6f639d41aef3 140 if (draw_enable) {
rpatel397 3:6f639d41aef3 141 draw_enable = false;
rpatel397 3:6f639d41aef3 142 lcd_mut.lock();
rpatel397 3:6f639d41aef3 143 uLCD.cls();
rpatel397 3:6f639d41aef3 144 uLCD.line(0, 0, 127, 0, RED);
rpatel397 3:6f639d41aef3 145 uLCD.line(127, 0, 127, 127, BLUE);
rpatel397 3:6f639d41aef3 146 uLCD.line(127, 127, 0, 127, GREEN);
rpatel397 3:6f639d41aef3 147 uLCD.line(0, 127, 0, 0, YELLOW);
rpatel397 3:6f639d41aef3 148 uLCD.text_width(2);
rpatel397 3:6f639d41aef3 149 uLCD.text_height(2);
rpatel397 3:6f639d41aef3 150 uLCD.locate(2,2);
rpatel397 3:6f639d41aef3 151 uLCD.color(RED);
rpatel397 3:6f639d41aef3 152 uLCD.printf("Guitar");
rpatel397 3:6f639d41aef3 153 uLCD.color(BLUE);
rpatel397 3:6f639d41aef3 154 uLCD.locate(3,4);
rpatel397 3:6f639d41aef3 155 uLCD.printf("Hero");
rpatel397 3:6f639d41aef3 156
rpatel397 3:6f639d41aef3 157 uLCD.text_width(1);
rpatel397 3:6f639d41aef3 158 uLCD.text_height(1);
rpatel397 3:6f639d41aef3 159 uLCD.locate(3,12);
rpatel397 3:6f639d41aef3 160 uLCD.color(GREEN);
rpatel397 3:6f639d41aef3 161 uLCD.printf("Press to start");
rpatel397 3:6f639d41aef3 162
rpatel397 3:6f639d41aef3 163 lcd_mut.unlock();
rpatel397 3:6f639d41aef3 164 }
rpatel397 3:6f639d41aef3 165 break;
rpatel397 3:6f639d41aef3 166 default:
rpatel397 3:6f639d41aef3 167 break;
rpatel397 3:6f639d41aef3 168 }
rpatel397 3:6f639d41aef3 169 Thread::wait(10);
rpatel397 3:6f639d41aef3 170 }
rpatel397 3:6f639d41aef3 171 }
rpatel397 3:6f639d41aef3 172 void lights(void const *args) {
rpatel397 3:6f639d41aef3 173 while(1) {
rpatel397 3:6f639d41aef3 174 switch (Game_State) {
rpatel397 3:6f639d41aef3 175 case Start_Game :
rpatel397 3:6f639d41aef3 176 myled1 = 0;
rpatel397 3:6f639d41aef3 177 myled2 = 0;
rpatel397 3:6f639d41aef3 178 myled3 = 0;
rpatel397 3:6f639d41aef3 179 myled4 = 1;
rpatel397 3:6f639d41aef3 180 break;
rpatel397 3:6f639d41aef3 181 case Game_Over :
rpatel397 3:6f639d41aef3 182 myled1 = 1;
rpatel397 3:6f639d41aef3 183 myled2 = 1;
rpatel397 3:6f639d41aef3 184 myled3 = 1;
rpatel397 3:6f639d41aef3 185 myled4 = 1;
rpatel397 3:6f639d41aef3 186 break;
rpatel397 3:6f639d41aef3 187 case Choose_Song :
rpatel397 3:6f639d41aef3 188 myled1 = 0;
rpatel397 3:6f639d41aef3 189 myled2 = 0;
rpatel397 3:6f639d41aef3 190 myled3 = 1;
rpatel397 3:6f639d41aef3 191 myled4 = 0;
rpatel397 3:6f639d41aef3 192 break;
rpatel397 3:6f639d41aef3 193 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 194
rpatel397 3:6f639d41aef3 195 myled1 = 0;
rpatel397 3:6f639d41aef3 196 myled2 = 1;
rpatel397 3:6f639d41aef3 197 myled3 = 0;
rpatel397 3:6f639d41aef3 198 myled4 = 0;
rpatel397 3:6f639d41aef3 199
rpatel397 3:6f639d41aef3 200
rpatel397 3:6f639d41aef3 201 break;
rpatel397 3:6f639d41aef3 202 case Main_Menu :
rpatel397 3:6f639d41aef3 203
rpatel397 3:6f639d41aef3 204 myled1 = 1;
rpatel397 3:6f639d41aef3 205 myled2 = 0;
rpatel397 3:6f639d41aef3 206 myled3 = 0;
rpatel397 3:6f639d41aef3 207 myled4 = 0;
rpatel397 3:6f639d41aef3 208
rpatel397 3:6f639d41aef3 209 break;
rpatel397 3:6f639d41aef3 210 default:
rpatel397 3:6f639d41aef3 211 break;
rpatel397 3:6f639d41aef3 212 }
rpatel397 3:6f639d41aef3 213 Thread::wait(500);
rpatel397 3:6f639d41aef3 214 }
rpatel397 3:6f639d41aef3 215 }
4180_1 1:5b8e223e983d 216
rpatel397 3:6f639d41aef3 217 void Thread3(void const *args) {
rpatel397 3:6f639d41aef3 218
rpatel397 3:6f639d41aef3 219 while(1) {
rpatel397 3:6f639d41aef3 220 Thread::wait(1000);
rpatel397 3:6f639d41aef3 221 }
rpatel397 3:6f639d41aef3 222
rpatel397 3:6f639d41aef3 223 }
rpatel397 3:6f639d41aef3 224
rpatel397 3:6f639d41aef3 225 void Thread4(void const *args) {
rpatel397 3:6f639d41aef3 226
rpatel397 3:6f639d41aef3 227 while(1){
rpatel397 3:6f639d41aef3 228 Thread::wait(1000);
rpatel397 3:6f639d41aef3 229 }
rpatel397 3:6f639d41aef3 230
rpatel397 3:6f639d41aef3 231 }
4180_1 1:5b8e223e983d 232
rpatel397 3:6f639d41aef3 233 void pb_1_pressed(void) {
rpatel397 3:6f639d41aef3 234 switch (Game_State) {
rpatel397 3:6f639d41aef3 235 case Start_Game :
rpatel397 3:6f639d41aef3 236 draw_enable = true;
rpatel397 3:6f639d41aef3 237 Game_State = Game_Over;
rpatel397 3:6f639d41aef3 238 break;
rpatel397 3:6f639d41aef3 239 case Game_Over :
rpatel397 3:6f639d41aef3 240 draw_enable = true;
rpatel397 3:6f639d41aef3 241 Game_State = Main_Menu;
rpatel397 3:6f639d41aef3 242 break;
rpatel397 3:6f639d41aef3 243 case Choose_Song :
rpatel397 3:6f639d41aef3 244 draw_enable = true;
rpatel397 3:6f639d41aef3 245 Game_State = Start_Game;
rpatel397 3:6f639d41aef3 246 break;
rpatel397 3:6f639d41aef3 247 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 248
rpatel397 3:6f639d41aef3 249 draw_enable = true;
rpatel397 3:6f639d41aef3 250 Game_State = Choose_Song;
rpatel397 3:6f639d41aef3 251 Speed = Easy;
rpatel397 3:6f639d41aef3 252
rpatel397 3:6f639d41aef3 253 break;
rpatel397 3:6f639d41aef3 254 case Main_Menu :
rpatel397 3:6f639d41aef3 255
rpatel397 3:6f639d41aef3 256 draw_enable = true;
rpatel397 3:6f639d41aef3 257 Game_State = Choose_Difficulty;
rpatel397 3:6f639d41aef3 258
rpatel397 3:6f639d41aef3 259 break;
rpatel397 3:6f639d41aef3 260 default:
rpatel397 3:6f639d41aef3 261 break;
rpatel397 3:6f639d41aef3 262 }
rpatel397 3:6f639d41aef3 263 }
rpatel397 3:6f639d41aef3 264 void pb_2_pressed(void) {
rpatel397 3:6f639d41aef3 265 switch (Game_State) {
rpatel397 3:6f639d41aef3 266 case Start_Game :
rpatel397 3:6f639d41aef3 267 draw_enable = true;
rpatel397 3:6f639d41aef3 268 Game_State = Game_Over;
rpatel397 3:6f639d41aef3 269 break;
rpatel397 3:6f639d41aef3 270 case Game_Over :
rpatel397 3:6f639d41aef3 271 draw_enable = true;
rpatel397 3:6f639d41aef3 272 Game_State = Main_Menu;
rpatel397 3:6f639d41aef3 273 break;
rpatel397 3:6f639d41aef3 274 case Choose_Song :
rpatel397 3:6f639d41aef3 275 draw_enable = true;
rpatel397 3:6f639d41aef3 276 Game_State = Start_Game;
rpatel397 3:6f639d41aef3 277 break;
rpatel397 3:6f639d41aef3 278 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 279
rpatel397 3:6f639d41aef3 280 draw_enable = true;
rpatel397 3:6f639d41aef3 281 Game_State = Choose_Song;
rpatel397 3:6f639d41aef3 282 Speed = Medium;
rpatel397 3:6f639d41aef3 283 break;
rpatel397 3:6f639d41aef3 284 case Main_Menu :
rpatel397 3:6f639d41aef3 285
rpatel397 3:6f639d41aef3 286 draw_enable = true;
rpatel397 3:6f639d41aef3 287 Game_State = Choose_Difficulty;
rpatel397 3:6f639d41aef3 288
rpatel397 3:6f639d41aef3 289 break;
rpatel397 3:6f639d41aef3 290 default:
rpatel397 3:6f639d41aef3 291 break;
rpatel397 3:6f639d41aef3 292 }
rpatel397 3:6f639d41aef3 293
rpatel397 3:6f639d41aef3 294 }
rpatel397 3:6f639d41aef3 295 void pb_3_pressed(void) {
rpatel397 3:6f639d41aef3 296 switch (Game_State) {
rpatel397 3:6f639d41aef3 297 case Start_Game :
rpatel397 3:6f639d41aef3 298 draw_enable = true;
rpatel397 3:6f639d41aef3 299 Game_State = Game_Over;
rpatel397 3:6f639d41aef3 300 break;
rpatel397 3:6f639d41aef3 301 case Game_Over :
rpatel397 3:6f639d41aef3 302 draw_enable = true;
rpatel397 3:6f639d41aef3 303 Game_State = Main_Menu;
rpatel397 3:6f639d41aef3 304 break;
rpatel397 3:6f639d41aef3 305 case Choose_Song :
rpatel397 3:6f639d41aef3 306 draw_enable = true;
rpatel397 3:6f639d41aef3 307 Game_State = Start_Game;
rpatel397 3:6f639d41aef3 308 break;
rpatel397 3:6f639d41aef3 309 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 310
rpatel397 3:6f639d41aef3 311 draw_enable = true;
rpatel397 3:6f639d41aef3 312 Game_State = Choose_Song;
rpatel397 3:6f639d41aef3 313 Speed = Hard;
rpatel397 3:6f639d41aef3 314
rpatel397 3:6f639d41aef3 315 break;
rpatel397 3:6f639d41aef3 316 case Main_Menu :
rpatel397 3:6f639d41aef3 317
rpatel397 3:6f639d41aef3 318 draw_enable = true;
rpatel397 3:6f639d41aef3 319 Game_State = Choose_Difficulty;
rpatel397 3:6f639d41aef3 320
rpatel397 3:6f639d41aef3 321 break;
rpatel397 3:6f639d41aef3 322 default:
rpatel397 3:6f639d41aef3 323 break;
rpatel397 3:6f639d41aef3 324 }
rpatel397 3:6f639d41aef3 325 }
rpatel397 3:6f639d41aef3 326 void pb_4_pressed(void) {
rpatel397 3:6f639d41aef3 327 switch (Game_State) {
rpatel397 3:6f639d41aef3 328 case Start_Game :
rpatel397 3:6f639d41aef3 329 draw_enable = true;
rpatel397 3:6f639d41aef3 330 Game_State = Game_Over;
rpatel397 3:6f639d41aef3 331 break;
rpatel397 3:6f639d41aef3 332 case Game_Over :
rpatel397 3:6f639d41aef3 333 draw_enable = true;
rpatel397 3:6f639d41aef3 334 Game_State = Main_Menu;
rpatel397 3:6f639d41aef3 335 break;
rpatel397 3:6f639d41aef3 336 case Choose_Song :
rpatel397 3:6f639d41aef3 337 draw_enable = true;
rpatel397 3:6f639d41aef3 338 Game_State = Start_Game;
rpatel397 3:6f639d41aef3 339 break;
rpatel397 3:6f639d41aef3 340 case Choose_Difficulty :
rpatel397 3:6f639d41aef3 341 //not used
rpatel397 3:6f639d41aef3 342 break;
rpatel397 3:6f639d41aef3 343 case Main_Menu :
rpatel397 3:6f639d41aef3 344
rpatel397 3:6f639d41aef3 345 draw_enable = true;
rpatel397 3:6f639d41aef3 346 Game_State = Choose_Difficulty;
rpatel397 3:6f639d41aef3 347
rpatel397 3:6f639d41aef3 348 break;
rpatel397 3:6f639d41aef3 349 default:
rpatel397 3:6f639d41aef3 350 break;
rpatel397 3:6f639d41aef3 351 }
rpatel397 3:6f639d41aef3 352 }
rpatel397 3:6f639d41aef3 353
4180_1 1:5b8e223e983d 354 int main()
4180_1 1:5b8e223e983d 355 {
rpatel397 3:6f639d41aef3 356
rpatel397 3:6f639d41aef3 357 pb_1.attach_deasserted( &pb_1_pressed );
rpatel397 3:6f639d41aef3 358 pb_2.attach_deasserted( &pb_2_pressed );
rpatel397 3:6f639d41aef3 359 pb_3.attach_deasserted( &pb_3_pressed );
rpatel397 3:6f639d41aef3 360 pb_4.attach_deasserted( &pb_4_pressed );
rpatel397 3:6f639d41aef3 361 pb_1.setSampleFrequency();
rpatel397 3:6f639d41aef3 362 pb_2.setSampleFrequency();
rpatel397 3:6f639d41aef3 363 pb_3.setSampleFrequency();
rpatel397 3:6f639d41aef3 364 pb_4.setSampleFrequency();
rpatel397 3:6f639d41aef3 365 lcd_mut.lock();
rpatel397 3:6f639d41aef3 366 uLCD.cls();
rpatel397 3:6f639d41aef3 367 uLCD.printf("starting...");
rpatel397 3:6f639d41aef3 368 uLCD.background_color(BLACK);
rpatel397 3:6f639d41aef3 369 uLCD.baudrate(3000000);
rpatel397 3:6f639d41aef3 370 lcd_mut.unlock();
4180_1 2:c2afd0c426af 371 Thread::wait(1000);
rpatel397 3:6f639d41aef3 372 Thread Thread1(LCD);
rpatel397 3:6f639d41aef3 373 Thread Thread2(lights);
rpatel397 3:6f639d41aef3 374
rpatel397 3:6f639d41aef3 375
rpatel397 3:6f639d41aef3 376 while(1) {
rpatel397 3:6f639d41aef3 377 Thread::wait(1000);
rpatel397 3:6f639d41aef3 378 }
rpatel397 3:6f639d41aef3 379
rpatel397 3:6f639d41aef3 380 }