A game created using the uLCD and an Analog Joystick.

Dependencies:   4DGL-uLCD-SE mbed

Committer:
sjsm3
Date:
Tue Oct 21 01:04:06 2014 +0000
Revision:
0:c034c9e5fb77
Upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sjsm3 0:c034c9e5fb77 1 #include "mbed.h"
sjsm3 0:c034c9e5fb77 2 #include "uLCD_4DGL.h"
sjsm3 0:c034c9e5fb77 3
sjsm3 0:c034c9e5fb77 4 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
sjsm3 0:c034c9e5fb77 5
sjsm3 0:c034c9e5fb77 6 AnalogIn vert(p18);
sjsm3 0:c034c9e5fb77 7 AnalogIn horz(p19);
sjsm3 0:c034c9e5fb77 8 AnalogIn sel(p20);
sjsm3 0:c034c9e5fb77 9
sjsm3 0:c034c9e5fb77 10 // In current layout vert->0 = left, vert->1 = right, horz->0 = down, horz->1 = up
sjsm3 0:c034c9e5fb77 11 // 0=left 1=up 2=right 3=down
sjsm3 0:c034c9e5fb77 12
sjsm3 0:c034c9e5fb77 13 // Box variables
sjsm3 0:c034c9e5fb77 14 int xloc = 60;
sjsm3 0:c034c9e5fb77 15 int yloc = 60;
sjsm3 0:c034c9e5fb77 16 int rv[9][4] = {{1,1,41,41},{43,1,84,41},{86,1,127,41},{1,43,41,84},{43,43,84,84},{86,43,127,84},{1,86,41,127},{43,86,84,127},{86,86,127,127}};
sjsm3 0:c034c9e5fb77 17 int spots[9] = {-1,-1,-1,-1,-1,-1,-1,-1,-1};
sjsm3 0:c034c9e5fb77 18 int emptyloc = -1;
sjsm3 0:c034c9e5fb77 19 int temploc = -1;
sjsm3 0:c034c9e5fb77 20
sjsm3 0:c034c9e5fb77 21 // Number print variables
sjsm3 0:c034c9e5fb77 22 int printx[9] = {2,8,14,2,8,14,2,8,14};
sjsm3 0:c034c9e5fb77 23 int printy[9] = {2,2,2,7,7,7,13,13,13};
sjsm3 0:c034c9e5fb77 24
sjsm3 0:c034c9e5fb77 25 // Menu variables
sjsm3 0:c034c9e5fb77 26 int selection = 0;
sjsm3 0:c034c9e5fb77 27 int difficulty = 1; // Default difficulty is hard
sjsm3 0:c034c9e5fb77 28 int setselect = 1;
sjsm3 0:c034c9e5fb77 29
sjsm3 0:c034c9e5fb77 30 // Waits until a big enough change in joystick to select direction
sjsm3 0:c034c9e5fb77 31 int getInput() {
sjsm3 0:c034c9e5fb77 32 int direction = -1;
sjsm3 0:c034c9e5fb77 33
sjsm3 0:c034c9e5fb77 34 while(direction < 0) {
sjsm3 0:c034c9e5fb77 35 float v = vert.read();
sjsm3 0:c034c9e5fb77 36 float h = horz.read();
sjsm3 0:c034c9e5fb77 37 float s = sel.read();
sjsm3 0:c034c9e5fb77 38
sjsm3 0:c034c9e5fb77 39 wait(0.01);
sjsm3 0:c034c9e5fb77 40
sjsm3 0:c034c9e5fb77 41 if(v < .2)
sjsm3 0:c034c9e5fb77 42 direction = 0;
sjsm3 0:c034c9e5fb77 43 else if(v > .8)
sjsm3 0:c034c9e5fb77 44 direction = 2;
sjsm3 0:c034c9e5fb77 45 else if(h < .2)
sjsm3 0:c034c9e5fb77 46 direction = 3;
sjsm3 0:c034c9e5fb77 47 else if(h > .8)
sjsm3 0:c034c9e5fb77 48 direction = 1;
sjsm3 0:c034c9e5fb77 49 else if(s < .01)
sjsm3 0:c034c9e5fb77 50 direction = 5;
sjsm3 0:c034c9e5fb77 51 }
sjsm3 0:c034c9e5fb77 52
sjsm3 0:c034c9e5fb77 53 return direction;
sjsm3 0:c034c9e5fb77 54 }
sjsm3 0:c034c9e5fb77 55
sjsm3 0:c034c9e5fb77 56 // Draws the rectanges on the screen
sjsm3 0:c034c9e5fb77 57 void drawRectangles() {
sjsm3 0:c034c9e5fb77 58 for(int i = 0; i < 9; i++) {
sjsm3 0:c034c9e5fb77 59 if(i != emptyloc)
sjsm3 0:c034c9e5fb77 60 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],BLUE);
sjsm3 0:c034c9e5fb77 61 else
sjsm3 0:c034c9e5fb77 62 uLCD.filled_rectangle(rv[i][0],rv[i][1],rv[i][2],rv[i][3],BLACK);
sjsm3 0:c034c9e5fb77 63 }
sjsm3 0:c034c9e5fb77 64 }
sjsm3 0:c034c9e5fb77 65
sjsm3 0:c034c9e5fb77 66 // Registers joystick flick as a directino change
sjsm3 0:c034c9e5fb77 67 void updateLocations(int direction) {
sjsm3 0:c034c9e5fb77 68 temploc = emptyloc;
sjsm3 0:c034c9e5fb77 69
sjsm3 0:c034c9e5fb77 70 if(direction == 0) {
sjsm3 0:c034c9e5fb77 71 if(emptyloc !=2 && emptyloc != 5 && emptyloc != 8)
sjsm3 0:c034c9e5fb77 72 emptyloc = emptyloc + 1; //new empty location
sjsm3 0:c034c9e5fb77 73 }
sjsm3 0:c034c9e5fb77 74 else if(direction == 1) {
sjsm3 0:c034c9e5fb77 75 if(emptyloc != 6 && emptyloc != 7 && emptyloc !=8)
sjsm3 0:c034c9e5fb77 76 emptyloc = emptyloc + 3;
sjsm3 0:c034c9e5fb77 77 }
sjsm3 0:c034c9e5fb77 78 else if(direction == 2) {
sjsm3 0:c034c9e5fb77 79 if(emptyloc != 0 && emptyloc != 3 && emptyloc != 6)
sjsm3 0:c034c9e5fb77 80 emptyloc = emptyloc - 1;
sjsm3 0:c034c9e5fb77 81 }
sjsm3 0:c034c9e5fb77 82 else if(direction == 3) {
sjsm3 0:c034c9e5fb77 83 if(emptyloc != 0 && emptyloc != 1 && emptyloc != 2)
sjsm3 0:c034c9e5fb77 84 emptyloc = emptyloc - 3;
sjsm3 0:c034c9e5fb77 85 }
sjsm3 0:c034c9e5fb77 86 }
sjsm3 0:c034c9e5fb77 87
sjsm3 0:c034c9e5fb77 88 // Updates spots array and reprints the numbers in the rectangles
sjsm3 0:c034c9e5fb77 89 void updateNumbers() {
sjsm3 0:c034c9e5fb77 90 //Flip empty box with box next to its number
sjsm3 0:c034c9e5fb77 91 spots[temploc] = spots[emptyloc];
sjsm3 0:c034c9e5fb77 92 spots[emptyloc] = 0;
sjsm3 0:c034c9e5fb77 93
sjsm3 0:c034c9e5fb77 94 for(int i=0;i<9;i++) {
sjsm3 0:c034c9e5fb77 95 uLCD.locate(printx[i],printy[i]);
sjsm3 0:c034c9e5fb77 96 if(spots[i] != 0)
sjsm3 0:c034c9e5fb77 97 uLCD.printf("%d",spots[i]);
sjsm3 0:c034c9e5fb77 98 }
sjsm3 0:c034c9e5fb77 99 }
sjsm3 0:c034c9e5fb77 100
sjsm3 0:c034c9e5fb77 101 // Check if boxes are ordered correctly
sjsm3 0:c034c9e5fb77 102 int checkWinCondition() {
sjsm3 0:c034c9e5fb77 103 int winner = 1;
sjsm3 0:c034c9e5fb77 104
sjsm3 0:c034c9e5fb77 105 for(int i=0;i<9;i++) {
sjsm3 0:c034c9e5fb77 106 if(spots[i] != i)
sjsm3 0:c034c9e5fb77 107 winner = 0;
sjsm3 0:c034c9e5fb77 108 }
sjsm3 0:c034c9e5fb77 109
sjsm3 0:c034c9e5fb77 110 return winner;
sjsm3 0:c034c9e5fb77 111 }
sjsm3 0:c034c9e5fb77 112
sjsm3 0:c034c9e5fb77 113 // For help when randomly generating the board
sjsm3 0:c034c9e5fb77 114 int already(int dist,int lookfor) {
sjsm3 0:c034c9e5fb77 115 int found = 0;
sjsm3 0:c034c9e5fb77 116
sjsm3 0:c034c9e5fb77 117 for(int i=0;i<dist;i++) {
sjsm3 0:c034c9e5fb77 118 if(spots[i] == lookfor)
sjsm3 0:c034c9e5fb77 119 found = 1;
sjsm3 0:c034c9e5fb77 120 }
sjsm3 0:c034c9e5fb77 121
sjsm3 0:c034c9e5fb77 122 return found;
sjsm3 0:c034c9e5fb77 123 }
sjsm3 0:c034c9e5fb77 124
sjsm3 0:c034c9e5fb77 125 // Generates a gameboard based off of the difficulty settings
sjsm3 0:c034c9e5fb77 126 void generateBoard() {
sjsm3 0:c034c9e5fb77 127
sjsm3 0:c034c9e5fb77 128 srand(time(NULL));
sjsm3 0:c034c9e5fb77 129 int ran = rand() % 9;
sjsm3 0:c034c9e5fb77 130
sjsm3 0:c034c9e5fb77 131 if(difficulty == 0) {
sjsm3 0:c034c9e5fb77 132 int easyspots[9] = {1,2,0,3,4,5,6,7,8};
sjsm3 0:c034c9e5fb77 133
sjsm3 0:c034c9e5fb77 134 for(int i=0;i<9;i++) {
sjsm3 0:c034c9e5fb77 135 spots[i] = easyspots[i];
sjsm3 0:c034c9e5fb77 136 }
sjsm3 0:c034c9e5fb77 137
sjsm3 0:c034c9e5fb77 138 emptyloc = 2;
sjsm3 0:c034c9e5fb77 139 temploc = 2;
sjsm3 0:c034c9e5fb77 140 }
sjsm3 0:c034c9e5fb77 141 else {
sjsm3 0:c034c9e5fb77 142 for(int i=0;i<9;i++) {
sjsm3 0:c034c9e5fb77 143 // If already in the spots array
sjsm3 0:c034c9e5fb77 144 while(already(i,ran) != 0)
sjsm3 0:c034c9e5fb77 145 ran = rand() % 9;
sjsm3 0:c034c9e5fb77 146
sjsm3 0:c034c9e5fb77 147 if(ran == 0) {
sjsm3 0:c034c9e5fb77 148 emptyloc = i;
sjsm3 0:c034c9e5fb77 149 temploc = i;
sjsm3 0:c034c9e5fb77 150 }
sjsm3 0:c034c9e5fb77 151
sjsm3 0:c034c9e5fb77 152 spots[i] = ran;
sjsm3 0:c034c9e5fb77 153 }
sjsm3 0:c034c9e5fb77 154 }
sjsm3 0:c034c9e5fb77 155
sjsm3 0:c034c9e5fb77 156 uLCD.locate(4,7);
sjsm3 0:c034c9e5fb77 157 uLCD.printf("Shuffling");
sjsm3 0:c034c9e5fb77 158 wait(0.2);
sjsm3 0:c034c9e5fb77 159 uLCD.locate(4,7);
sjsm3 0:c034c9e5fb77 160 uLCD.printf("Shuffling..");
sjsm3 0:c034c9e5fb77 161 wait(0.2);
sjsm3 0:c034c9e5fb77 162 uLCD.locate(4,7);
sjsm3 0:c034c9e5fb77 163 uLCD.printf("Shuffling....");
sjsm3 0:c034c9e5fb77 164 wait(0.2);
sjsm3 0:c034c9e5fb77 165 uLCD.cls();
sjsm3 0:c034c9e5fb77 166 wait(0.2);
sjsm3 0:c034c9e5fb77 167 }
sjsm3 0:c034c9e5fb77 168
sjsm3 0:c034c9e5fb77 169 // Game loop
sjsm3 0:c034c9e5fb77 170 void game() {
sjsm3 0:c034c9e5fb77 171 drawRectangles();
sjsm3 0:c034c9e5fb77 172 updateNumbers();
sjsm3 0:c034c9e5fb77 173
sjsm3 0:c034c9e5fb77 174 int win = 0;
sjsm3 0:c034c9e5fb77 175
sjsm3 0:c034c9e5fb77 176 while(1) {
sjsm3 0:c034c9e5fb77 177 int direction = getInput();
sjsm3 0:c034c9e5fb77 178 // If center button is clicked, keep checking
sjsm3 0:c034c9e5fb77 179 if(direction == 5)
sjsm3 0:c034c9e5fb77 180 break;
sjsm3 0:c034c9e5fb77 181
sjsm3 0:c034c9e5fb77 182 updateLocations(direction);
sjsm3 0:c034c9e5fb77 183 drawRectangles();
sjsm3 0:c034c9e5fb77 184 updateNumbers();
sjsm3 0:c034c9e5fb77 185 win = checkWinCondition();
sjsm3 0:c034c9e5fb77 186
sjsm3 0:c034c9e5fb77 187 if(win == 1)
sjsm3 0:c034c9e5fb77 188 break;
sjsm3 0:c034c9e5fb77 189
sjsm3 0:c034c9e5fb77 190 wait(0.3);
sjsm3 0:c034c9e5fb77 191 }
sjsm3 0:c034c9e5fb77 192 uLCD.cls();
sjsm3 0:c034c9e5fb77 193 wait(0.2);
sjsm3 0:c034c9e5fb77 194 uLCD.textbackground_color(BLACK);
sjsm3 0:c034c9e5fb77 195 uLCD.color(RED);
sjsm3 0:c034c9e5fb77 196 uLCD.locate(5,7);
sjsm3 0:c034c9e5fb77 197 uLCD.printf("Game Over!");
sjsm3 0:c034c9e5fb77 198
sjsm3 0:c034c9e5fb77 199 if(win == 1) {
sjsm3 0:c034c9e5fb77 200 uLCD.locate(6,10);
sjsm3 0:c034c9e5fb77 201 uLCD.printf("You Won!");
sjsm3 0:c034c9e5fb77 202 }
sjsm3 0:c034c9e5fb77 203
sjsm3 0:c034c9e5fb77 204 int direction = getInput();
sjsm3 0:c034c9e5fb77 205 while(direction != 5)
sjsm3 0:c034c9e5fb77 206 getInput();
sjsm3 0:c034c9e5fb77 207
sjsm3 0:c034c9e5fb77 208 uLCD.cls();
sjsm3 0:c034c9e5fb77 209 wait(0.2);
sjsm3 0:c034c9e5fb77 210 }
sjsm3 0:c034c9e5fb77 211
sjsm3 0:c034c9e5fb77 212 // Settings menu loop
sjsm3 0:c034c9e5fb77 213 void settings() {
sjsm3 0:c034c9e5fb77 214 uLCD.locate(5,4);
sjsm3 0:c034c9e5fb77 215 uLCD.printf("Easy Mode");
sjsm3 0:c034c9e5fb77 216 uLCD.locate(5,11);
sjsm3 0:c034c9e5fb77 217 uLCD.printf("Hard Mode");
sjsm3 0:c034c9e5fb77 218
sjsm3 0:c034c9e5fb77 219 if(setselect == 0)
sjsm3 0:c034c9e5fb77 220 uLCD.line(22, 42, 106, 42, WHITE);
sjsm3 0:c034c9e5fb77 221 else
sjsm3 0:c034c9e5fb77 222 uLCD.line(22, 98, 106, 98, WHITE);
sjsm3 0:c034c9e5fb77 223
sjsm3 0:c034c9e5fb77 224 int direction = getInput();
sjsm3 0:c034c9e5fb77 225
sjsm3 0:c034c9e5fb77 226 while(direction !=5 ) {
sjsm3 0:c034c9e5fb77 227 if(direction == 1 && setselect == 1) {
sjsm3 0:c034c9e5fb77 228 uLCD.line(22, 98, 106, 98, BLACK);
sjsm3 0:c034c9e5fb77 229 uLCD.line(22, 42, 106, 42, WHITE);
sjsm3 0:c034c9e5fb77 230 setselect = 0;
sjsm3 0:c034c9e5fb77 231 }
sjsm3 0:c034c9e5fb77 232 else if(direction == 3 && setselect == 0) {
sjsm3 0:c034c9e5fb77 233 uLCD.line(22, 42, 106, 42, BLACK);
sjsm3 0:c034c9e5fb77 234 uLCD.line(22, 98, 106, 98, WHITE);
sjsm3 0:c034c9e5fb77 235 setselect = 1;
sjsm3 0:c034c9e5fb77 236 }
sjsm3 0:c034c9e5fb77 237
sjsm3 0:c034c9e5fb77 238 direction = getInput();
sjsm3 0:c034c9e5fb77 239 }
sjsm3 0:c034c9e5fb77 240
sjsm3 0:c034c9e5fb77 241 difficulty = setselect;
sjsm3 0:c034c9e5fb77 242 uLCD.cls();
sjsm3 0:c034c9e5fb77 243 wait(0.2);
sjsm3 0:c034c9e5fb77 244 }
sjsm3 0:c034c9e5fb77 245
sjsm3 0:c034c9e5fb77 246 // Help screen loop
sjsm3 0:c034c9e5fb77 247 void help() {
sjsm3 0:c034c9e5fb77 248 uLCD.locate(1,1);
sjsm3 0:c034c9e5fb77 249 uLCD.printf("Change difficulty in settings");
sjsm3 0:c034c9e5fb77 250 uLCD.locate(1,4);
sjsm3 0:c034c9e5fb77 251 uLCD.printf("Flick stick to\n move blocks");
sjsm3 0:c034c9e5fb77 252 uLCD.locate(1,7);
sjsm3 0:c034c9e5fb77 253 uLCD.printf("Empty block in\n top left");
sjsm3 0:c034c9e5fb77 254 uLCD.locate(1,10);
sjsm3 0:c034c9e5fb77 255 uLCD.printf("Click to reset\n back to menu");
sjsm3 0:c034c9e5fb77 256 uLCD.locate(1,14);
sjsm3 0:c034c9e5fb77 257 uLCD.printf("Click to return\n to menu now");
sjsm3 0:c034c9e5fb77 258
sjsm3 0:c034c9e5fb77 259 int direction = getInput();
sjsm3 0:c034c9e5fb77 260
sjsm3 0:c034c9e5fb77 261 while(direction != 5) {
sjsm3 0:c034c9e5fb77 262 direction = getInput();
sjsm3 0:c034c9e5fb77 263 }
sjsm3 0:c034c9e5fb77 264
sjsm3 0:c034c9e5fb77 265 uLCD.cls();
sjsm3 0:c034c9e5fb77 266 wait(0.2);
sjsm3 0:c034c9e5fb77 267 }
sjsm3 0:c034c9e5fb77 268
sjsm3 0:c034c9e5fb77 269 // Main menu loop
sjsm3 0:c034c9e5fb77 270 int main() {
sjsm3 0:c034c9e5fb77 271 uLCD.baudrate(3000000);
sjsm3 0:c034c9e5fb77 272
sjsm3 0:c034c9e5fb77 273 uLCD.textbackground_color(BLACK);
sjsm3 0:c034c9e5fb77 274 uLCD.color(RED);
sjsm3 0:c034c9e5fb77 275
sjsm3 0:c034c9e5fb77 276 uLCD.locate(4,4);
sjsm3 0:c034c9e5fb77 277 uLCD.printf("Start Game");
sjsm3 0:c034c9e5fb77 278 uLCD.locate(5,7);
sjsm3 0:c034c9e5fb77 279 uLCD.printf("Settings");
sjsm3 0:c034c9e5fb77 280 uLCD.locate(7,11);
sjsm3 0:c034c9e5fb77 281 uLCD.printf("Help");
sjsm3 0:c034c9e5fb77 282
sjsm3 0:c034c9e5fb77 283 uLCD.line(22, 42, 106, 42, WHITE);
sjsm3 0:c034c9e5fb77 284
sjsm3 0:c034c9e5fb77 285 while(1) {
sjsm3 0:c034c9e5fb77 286
sjsm3 0:c034c9e5fb77 287 int direction = getInput();
sjsm3 0:c034c9e5fb77 288
sjsm3 0:c034c9e5fb77 289 while(direction == 0 || direction == 2)
sjsm3 0:c034c9e5fb77 290 direction = getInput();
sjsm3 0:c034c9e5fb77 291
sjsm3 0:c034c9e5fb77 292 // If clicked in
sjsm3 0:c034c9e5fb77 293 if(direction == 5) {
sjsm3 0:c034c9e5fb77 294 if(selection == 0) {
sjsm3 0:c034c9e5fb77 295 uLCD.cls();
sjsm3 0:c034c9e5fb77 296 wait(0.2);
sjsm3 0:c034c9e5fb77 297 uLCD.textbackground_color(BLUE);
sjsm3 0:c034c9e5fb77 298 generateBoard();
sjsm3 0:c034c9e5fb77 299 game();
sjsm3 0:c034c9e5fb77 300 }
sjsm3 0:c034c9e5fb77 301 else if(selection == 1) {
sjsm3 0:c034c9e5fb77 302 uLCD.cls();
sjsm3 0:c034c9e5fb77 303 wait(0.2);
sjsm3 0:c034c9e5fb77 304 settings();
sjsm3 0:c034c9e5fb77 305 selection = 0;
sjsm3 0:c034c9e5fb77 306 }
sjsm3 0:c034c9e5fb77 307 else if(selection == 2) {
sjsm3 0:c034c9e5fb77 308 uLCD.cls();
sjsm3 0:c034c9e5fb77 309 wait(0.2);
sjsm3 0:c034c9e5fb77 310 help();
sjsm3 0:c034c9e5fb77 311 selection = 0;
sjsm3 0:c034c9e5fb77 312 }
sjsm3 0:c034c9e5fb77 313
sjsm3 0:c034c9e5fb77 314 uLCD.locate(4,4);
sjsm3 0:c034c9e5fb77 315 uLCD.printf("Start Game");
sjsm3 0:c034c9e5fb77 316 uLCD.locate(5,7);
sjsm3 0:c034c9e5fb77 317 uLCD.printf("Settings");
sjsm3 0:c034c9e5fb77 318 uLCD.locate(7,11);
sjsm3 0:c034c9e5fb77 319 uLCD.printf("Help");
sjsm3 0:c034c9e5fb77 320
sjsm3 0:c034c9e5fb77 321 uLCD.line(22, 42, 106, 42, WHITE);
sjsm3 0:c034c9e5fb77 322 }
sjsm3 0:c034c9e5fb77 323 else if(direction == 1 && (selection == 1 || selection == 2)) {
sjsm3 0:c034c9e5fb77 324 selection = selection-1;
sjsm3 0:c034c9e5fb77 325 if(selection == 0) {
sjsm3 0:c034c9e5fb77 326 uLCD.line(22, 42, 106, 42, WHITE);
sjsm3 0:c034c9e5fb77 327 uLCD.line(22, 68, 106, 68, BLACK);
sjsm3 0:c034c9e5fb77 328 uLCD.line(22, 98, 106, 98, BLACK);
sjsm3 0:c034c9e5fb77 329 }
sjsm3 0:c034c9e5fb77 330 else {
sjsm3 0:c034c9e5fb77 331 uLCD.line(22, 42, 106, 42, BLACK);
sjsm3 0:c034c9e5fb77 332 uLCD.line(22, 68, 106, 68, WHITE);
sjsm3 0:c034c9e5fb77 333 uLCD.line(22, 98, 106, 98, BLACK);
sjsm3 0:c034c9e5fb77 334 }
sjsm3 0:c034c9e5fb77 335 }
sjsm3 0:c034c9e5fb77 336 else if(direction == 3 && (selection == 0 || selection == 1)) {
sjsm3 0:c034c9e5fb77 337 selection = selection+1;
sjsm3 0:c034c9e5fb77 338 if(selection == 1) {
sjsm3 0:c034c9e5fb77 339 uLCD.line(22, 42, 106, 42, BLACK);
sjsm3 0:c034c9e5fb77 340 uLCD.line(22, 68, 106, 68, WHITE);
sjsm3 0:c034c9e5fb77 341 uLCD.line(22, 98, 106, 98, BLACK);
sjsm3 0:c034c9e5fb77 342 }
sjsm3 0:c034c9e5fb77 343 else {
sjsm3 0:c034c9e5fb77 344 uLCD.line(22, 42, 106, 42, BLACK);
sjsm3 0:c034c9e5fb77 345 uLCD.line(22, 68, 106, 68, BLACK);
sjsm3 0:c034c9e5fb77 346 uLCD.line(22, 98, 106, 98, WHITE);
sjsm3 0:c034c9e5fb77 347 }
sjsm3 0:c034c9e5fb77 348 }
sjsm3 0:c034c9e5fb77 349
sjsm3 0:c034c9e5fb77 350 //Wait to essentialially debounce (want to flick switch)
sjsm3 0:c034c9e5fb77 351 wait(0.3);
sjsm3 0:c034c9e5fb77 352
sjsm3 0:c034c9e5fb77 353 }
sjsm3 0:c034c9e5fb77 354 }