Various applications using the LCD. Cycle through the applications by pressing down on the joystick

Dependencies:   C12832 MMA7660 mbed

Committer:
jad19925
Date:
Fri Feb 21 22:33:25 2014 +0000
Revision:
1:ff7ee2c32cd1
Parent:
0:b8fc40cb537b
Bug fixes in Snake

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jad19925 0:b8fc40cb537b 1 #include "mbed.h"
jad19925 0:b8fc40cb537b 2 #include "C12832.h"
jad19925 0:b8fc40cb537b 3 #include "MMA7660.h"
jad19925 0:b8fc40cb537b 4
jad19925 0:b8fc40cb537b 5 BusIn joy(p15,p12,p13,p16);
jad19925 0:b8fc40cb537b 6 DigitalIn fire(p14);
jad19925 0:b8fc40cb537b 7 C12832 lcd(p5, p7, p6, p8, p11);
jad19925 0:b8fc40cb537b 8 AnalogIn pot1(p19);
jad19925 0:b8fc40cb537b 9 AnalogIn pot2(p20);
jad19925 0:b8fc40cb537b 10 DigitalIn joyUp(p15);
jad19925 0:b8fc40cb537b 11 DigitalIn joyDown(p12);
jad19925 0:b8fc40cb537b 12 DigitalIn joyLeft(p13);
jad19925 0:b8fc40cb537b 13 DigitalIn joyRight(p16);
jad19925 0:b8fc40cb537b 14 MMA7660 MMA(p28, p27); //I2C Accelerometer
jad19925 0:b8fc40cb537b 15 Serial pc(USBTX, USBRX); // tx, rx
jad19925 0:b8fc40cb537b 16
jad19925 0:b8fc40cb537b 17 BusOut leds(LED1,LED2,LED3,LED4);
jad19925 0:b8fc40cb537b 18 int appIndex = 0;
jad19925 0:b8fc40cb537b 19 const int NUM_APPS = 4;
jad19925 0:b8fc40cb537b 20 bool appSwitch = true;
jad19925 0:b8fc40cb537b 21 enum SnakeDirection{RIGHT,LEFT,UP,DOWN};
jad19925 0:b8fc40cb537b 22 const int SCREEN_WIDTH = 128;
jad19925 0:b8fc40cb537b 23 const int SCREEN_HEIGHT = 32;
jad19925 0:b8fc40cb537b 24 struct Point {int x; int y;};
jad19925 0:b8fc40cb537b 25 /*
jad19925 0:b8fc40cb537b 26 Index App
jad19925 0:b8fc40cb537b 27 0 Etch a sketch
jad19925 0:b8fc40cb537b 28 1 Flat Level
jad19925 0:b8fc40cb537b 29 2 Snake
jad19925 0:b8fc40cb537b 30 3 ?
jad19925 0:b8fc40cb537b 31 */
jad19925 0:b8fc40cb537b 32
jad19925 0:b8fc40cb537b 33 int main()
jad19925 0:b8fc40cb537b 34 {
jad19925 0:b8fc40cb537b 35 //potentiometer variables
jad19925 0:b8fc40cb537b 36 float etchX = 0;
jad19925 0:b8fc40cb537b 37 float etchY = 0;
jad19925 0:b8fc40cb537b 38 //accelerometer variables
jad19925 0:b8fc40cb537b 39 int x=0,y=0;
jad19925 0:b8fc40cb537b 40 //snake variables
jad19925 0:b8fc40cb537b 41 const int SNAKE_MAX = 256;
jad19925 0:b8fc40cb537b 42 Point snake[SNAKE_MAX];
jad19925 0:b8fc40cb537b 43 int snakeHead = 4;//the front filled square in the snake
jad19925 1:ff7ee2c32cd1 44 int newHead = 0;
jad19925 0:b8fc40cb537b 45 int snakeTail = 0;
jad19925 0:b8fc40cb537b 46 SnakeDirection snakeGo = RIGHT;
jad19925 0:b8fc40cb537b 47 bool gameOver = false;
jad19925 0:b8fc40cb537b 48 int points = 0;
jad19925 0:b8fc40cb537b 49 Point goalLoc;
jad19925 0:b8fc40cb537b 50
jad19925 0:b8fc40cb537b 51 lcd.cls();
jad19925 0:b8fc40cb537b 52 lcd.printf("hello world");
jad19925 0:b8fc40cb537b 53
jad19925 0:b8fc40cb537b 54 while(1) {
jad19925 0:b8fc40cb537b 55 if (fire) {
jad19925 0:b8fc40cb537b 56 appIndex = (appIndex+1)%NUM_APPS;
jad19925 0:b8fc40cb537b 57 leds=0xf;
jad19925 0:b8fc40cb537b 58 appSwitch = true;
jad19925 0:b8fc40cb537b 59 }
jad19925 0:b8fc40cb537b 60 else {
jad19925 0:b8fc40cb537b 61 leds=joy;
jad19925 0:b8fc40cb537b 62 }
jad19925 0:b8fc40cb537b 63
jad19925 0:b8fc40cb537b 64 switch(appIndex) {
jad19925 0:b8fc40cb537b 65 case 0: {
jad19925 0:b8fc40cb537b 66 if(appSwitch){
jad19925 0:b8fc40cb537b 67 lcd.cls();
jad19925 0:b8fc40cb537b 68 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 69 lcd.printf("Etch-a-Sketch");
jad19925 0:b8fc40cb537b 70 wait(2);
jad19925 0:b8fc40cb537b 71 lcd.cls();
jad19925 0:b8fc40cb537b 72 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 73 appSwitch=false;
jad19925 0:b8fc40cb537b 74 }
jad19925 0:b8fc40cb537b 75 //read potentiometers in scaled volatge
jad19925 0:b8fc40cb537b 76 etchY = 32-pot1.read()*32;
jad19925 0:b8fc40cb537b 77 etchX = 128-pot2.read()*128;
jad19925 0:b8fc40cb537b 78 lcd.pixel((int)etchX, (int)etchY, 1);
jad19925 0:b8fc40cb537b 79 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 80 x = MMA.x();
jad19925 0:b8fc40cb537b 81 y = MMA.y();
jad19925 0:b8fc40cb537b 82 if(x > .9 || x < -.9 || y > .9 || y < -.9){
jad19925 0:b8fc40cb537b 83 lcd.cls();
jad19925 0:b8fc40cb537b 84 }
jad19925 0:b8fc40cb537b 85 break;}
jad19925 0:b8fc40cb537b 86 case 1: {
jad19925 0:b8fc40cb537b 87 if(appSwitch){
jad19925 0:b8fc40cb537b 88 lcd.cls();
jad19925 0:b8fc40cb537b 89 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 90 lcd.printf("Flat Level");
jad19925 0:b8fc40cb537b 91 wait(2);
jad19925 0:b8fc40cb537b 92 lcd.cls();
jad19925 0:b8fc40cb537b 93 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 94 appSwitch=false;
jad19925 0:b8fc40cb537b 95 }
jad19925 0:b8fc40cb537b 96 //read X,Y +/-Gs and scale for #display pixels
jad19925 0:b8fc40cb537b 97 x = (x + MMA.x() * 32.0)/2.0;
jad19925 0:b8fc40cb537b 98 y = (y -(MMA.y() * 16.0))/2.0;
jad19925 0:b8fc40cb537b 99 lcd.fillcircle(x+63, y+15, 3, 1); //draw bubble
jad19925 0:b8fc40cb537b 100 lcd.line(0, 11, 127, 11, 1);
jad19925 0:b8fc40cb537b 101 lcd.line(0, 20, 127, 20, 1);
jad19925 0:b8fc40cb537b 102 lcd.line(59, 0, 59, 31, 1);
jad19925 0:b8fc40cb537b 103 lcd.line(68, 0, 68, 31, 1);
jad19925 0:b8fc40cb537b 104 //lcd.circle(63, 15, 8, 1);
jad19925 0:b8fc40cb537b 105 wait(.2); //time delay
jad19925 0:b8fc40cb537b 106 lcd.fillcircle(x+63, y+15, 3, 0); //erase bubble
jad19925 0:b8fc40cb537b 107 break;}
jad19925 0:b8fc40cb537b 108 case 2: {//snake
jad19925 0:b8fc40cb537b 109 if(appSwitch || gameOver){
jad19925 0:b8fc40cb537b 110 lcd.cls();
jad19925 0:b8fc40cb537b 111 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 112 lcd.printf("Snake");
jad19925 0:b8fc40cb537b 113
jad19925 0:b8fc40cb537b 114 //setup new snake
jad19925 0:b8fc40cb537b 115 snakeTail = 0;
jad19925 0:b8fc40cb537b 116 snakeHead = 4;
jad19925 0:b8fc40cb537b 117 snakeGo = RIGHT;
jad19925 0:b8fc40cb537b 118 snake[0].x = 0;
jad19925 0:b8fc40cb537b 119 snake[0].y = 14;
jad19925 0:b8fc40cb537b 120 snake[1].x = 2;
jad19925 0:b8fc40cb537b 121 snake[1].y = 14;
jad19925 0:b8fc40cb537b 122 snake[2].x = 4;
jad19925 0:b8fc40cb537b 123 snake[2].y = 14;
jad19925 0:b8fc40cb537b 124 snake[3].x = 6;
jad19925 0:b8fc40cb537b 125 snake[3].y = 14;
jad19925 0:b8fc40cb537b 126 snake[4].x = 8;
jad19925 0:b8fc40cb537b 127 snake[4].y = 14;
jad19925 0:b8fc40cb537b 128 gameOver = false;
jad19925 0:b8fc40cb537b 129 points = 0;
jad19925 0:b8fc40cb537b 130 float seed = pot1.read()*pot2.read()*100000;
jad19925 0:b8fc40cb537b 131 srand((int)seed);
jad19925 0:b8fc40cb537b 132 goalLoc.x = (rand()%64)*2;
jad19925 0:b8fc40cb537b 133 goalLoc.y = (rand()%16)*2;
jad19925 0:b8fc40cb537b 134
jad19925 0:b8fc40cb537b 135 wait(2);
jad19925 0:b8fc40cb537b 136 lcd.cls();
jad19925 0:b8fc40cb537b 137 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 138 appSwitch=false;
jad19925 0:b8fc40cb537b 139
jad19925 0:b8fc40cb537b 140 //draw initial snake
jad19925 0:b8fc40cb537b 141 for(int i = 0; i<=snakeHead; i++){
jad19925 0:b8fc40cb537b 142 lcd.fillrect(snake[i].x, snake[i].y, snake[i].x+1, snake[i].y+1, 1);
jad19925 0:b8fc40cb537b 143 }
jad19925 0:b8fc40cb537b 144 //draw initial goal location
jad19925 0:b8fc40cb537b 145 lcd.fillrect(goalLoc.x, goalLoc.y, goalLoc.x+1, goalLoc.y+1, 1);
jad19925 0:b8fc40cb537b 146 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 147
jad19925 0:b8fc40cb537b 148 //wait for user to see snake before moving
jad19925 0:b8fc40cb537b 149 wait(1);
jad19925 0:b8fc40cb537b 150 }
jad19925 0:b8fc40cb537b 151
jad19925 0:b8fc40cb537b 152 //read joystick to get new direction
jad19925 0:b8fc40cb537b 153 if(joyUp && DOWN != snakeGo)
jad19925 0:b8fc40cb537b 154 {snakeGo = UP;}
jad19925 0:b8fc40cb537b 155 if(joyDown && UP != snakeGo)
jad19925 0:b8fc40cb537b 156 {snakeGo = DOWN;}
jad19925 0:b8fc40cb537b 157 if(joyLeft && RIGHT != snakeGo)
jad19925 0:b8fc40cb537b 158 {snakeGo = LEFT;}
jad19925 0:b8fc40cb537b 159 if(joyRight && LEFT != snakeGo)
jad19925 0:b8fc40cb537b 160 {snakeGo = RIGHT;}
jad19925 0:b8fc40cb537b 161
jad19925 0:b8fc40cb537b 162 //move snake
jad19925 0:b8fc40cb537b 163 switch(snakeGo){
jad19925 0:b8fc40cb537b 164 case RIGHT:
jad19925 0:b8fc40cb537b 165 //clear tail
jad19925 0:b8fc40cb537b 166 lcd.fillrect(snake[snakeTail].x, snake[snakeTail].y, snake[snakeTail].x+1, snake[snakeTail].y+1, 0);
jad19925 0:b8fc40cb537b 167 snakeTail = (snakeTail+1)%SNAKE_MAX;
jad19925 0:b8fc40cb537b 168 //draw new front
jad19925 1:ff7ee2c32cd1 169 newHead = (snakeHead+1)%SNAKE_MAX;
jad19925 1:ff7ee2c32cd1 170 snake[newHead].x = snake[snakeHead].x + 2;
jad19925 1:ff7ee2c32cd1 171 snake[newHead].y = snake[snakeHead].y;
jad19925 1:ff7ee2c32cd1 172 snakeHead = newHead;
jad19925 0:b8fc40cb537b 173 lcd.fillrect(snake[snakeHead].x, snake[snakeHead].y, snake[snakeHead].x+1, snake[snakeHead].y+1, 1);
jad19925 0:b8fc40cb537b 174 //copy to lcd
jad19925 0:b8fc40cb537b 175 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 176 //check if we went off the screen
jad19925 0:b8fc40cb537b 177 if(snake[snakeHead].x >= SCREEN_WIDTH){
jad19925 0:b8fc40cb537b 178 gameOver = true;
jad19925 1:ff7ee2c32cd1 179 pc.printf("Off screen to right\r\n");
jad19925 1:ff7ee2c32cd1 180 pc.printf("snakeHead:%d x=%d, y=%d",snakeHead,snake[snakeHead].x,snake[snakeHead].y);
jad19925 0:b8fc40cb537b 181 }
jad19925 0:b8fc40cb537b 182 break;
jad19925 0:b8fc40cb537b 183 case LEFT:
jad19925 0:b8fc40cb537b 184 //clear tail
jad19925 0:b8fc40cb537b 185 lcd.fillrect(snake[snakeTail].x, snake[snakeTail].y, snake[snakeTail].x+1, snake[snakeTail].y+1, 0);
jad19925 0:b8fc40cb537b 186 snakeTail = (snakeTail+1)%SNAKE_MAX;
jad19925 0:b8fc40cb537b 187 //draw new front
jad19925 1:ff7ee2c32cd1 188 newHead = (snakeHead+1)%SNAKE_MAX;
jad19925 1:ff7ee2c32cd1 189 snake[newHead].x = snake[snakeHead].x - 2;
jad19925 1:ff7ee2c32cd1 190 snake[newHead].y = snake[snakeHead].y;
jad19925 1:ff7ee2c32cd1 191 snakeHead = newHead;
jad19925 0:b8fc40cb537b 192 lcd.fillrect(snake[snakeHead].x, snake[snakeHead].y, snake[snakeHead].x+1, snake[snakeHead].y+1, 1);
jad19925 0:b8fc40cb537b 193 //copy to lcd
jad19925 0:b8fc40cb537b 194 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 195 //check if we went off the screen
jad19925 0:b8fc40cb537b 196 if(snake[snakeHead].x < 0){
jad19925 0:b8fc40cb537b 197 gameOver = true;
jad19925 1:ff7ee2c32cd1 198 pc.printf("Off screen to left\r\n");
jad19925 1:ff7ee2c32cd1 199 pc.printf("snakeHead:%d x=%d, y=%d",snakeHead,snake[snakeHead].x,snake[snakeHead].y);
jad19925 0:b8fc40cb537b 200 }
jad19925 0:b8fc40cb537b 201 break;
jad19925 0:b8fc40cb537b 202 case UP:
jad19925 0:b8fc40cb537b 203 //clear tail
jad19925 0:b8fc40cb537b 204 lcd.fillrect(snake[snakeTail].x, snake[snakeTail].y, snake[snakeTail].x+1, snake[snakeTail].y+1, 0);
jad19925 0:b8fc40cb537b 205 snakeTail = (snakeTail+1)%SNAKE_MAX;
jad19925 0:b8fc40cb537b 206 //draw new front
jad19925 1:ff7ee2c32cd1 207 newHead = (snakeHead+1)%SNAKE_MAX;
jad19925 1:ff7ee2c32cd1 208 snake[newHead].x = snake[snakeHead].x;
jad19925 1:ff7ee2c32cd1 209 snake[newHead].y = snake[snakeHead].y - 2;
jad19925 1:ff7ee2c32cd1 210 snakeHead = newHead;
jad19925 0:b8fc40cb537b 211 lcd.fillrect(snake[snakeHead].x, snake[snakeHead].y, snake[snakeHead].x+1, snake[snakeHead].y+1, 1);
jad19925 0:b8fc40cb537b 212 //copy to lcd
jad19925 0:b8fc40cb537b 213 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 214 //check if we went off the screen
jad19925 0:b8fc40cb537b 215 if(snake[snakeHead].y < 0){
jad19925 0:b8fc40cb537b 216 gameOver = true;
jad19925 1:ff7ee2c32cd1 217 pc.printf("Off screen top\r\n");
jad19925 1:ff7ee2c32cd1 218 pc.printf("snakeHead:%d x=%d, y=%d",snakeHead,snake[snakeHead].x,snake[snakeHead].y);
jad19925 0:b8fc40cb537b 219 }
jad19925 0:b8fc40cb537b 220 //wait?
jad19925 0:b8fc40cb537b 221 break;
jad19925 0:b8fc40cb537b 222 case DOWN:
jad19925 0:b8fc40cb537b 223 //clear tail
jad19925 0:b8fc40cb537b 224 lcd.fillrect(snake[snakeTail].x, snake[snakeTail].y, snake[snakeTail].x+1, snake[snakeTail].y+1, 0);
jad19925 0:b8fc40cb537b 225 snakeTail = (snakeTail+1)%SNAKE_MAX;
jad19925 0:b8fc40cb537b 226 //draw new front
jad19925 1:ff7ee2c32cd1 227 newHead = (snakeHead+1)%SNAKE_MAX;
jad19925 1:ff7ee2c32cd1 228 snake[newHead].x = snake[snakeHead].x;
jad19925 1:ff7ee2c32cd1 229 snake[newHead].y = snake[snakeHead].y + 2;
jad19925 1:ff7ee2c32cd1 230 snakeHead = newHead;
jad19925 0:b8fc40cb537b 231 lcd.fillrect(snake[snakeHead].x, snake[snakeHead].y, snake[snakeHead].x+1, snake[snakeHead].y+1, 1);
jad19925 0:b8fc40cb537b 232 //copy to lcd
jad19925 0:b8fc40cb537b 233 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 234 //check if we went off the screen
jad19925 0:b8fc40cb537b 235 if(snake[snakeHead].y >= SCREEN_HEIGHT){
jad19925 0:b8fc40cb537b 236 gameOver = true;
jad19925 1:ff7ee2c32cd1 237 pc.printf("Off screen bottom\r\n");
jad19925 1:ff7ee2c32cd1 238 pc.printf("snakeHead:%d x=%d, y=%d",snakeHead,snake[snakeHead].x,snake[snakeHead].y);
jad19925 0:b8fc40cb537b 239 }
jad19925 0:b8fc40cb537b 240 //wait?
jad19925 0:b8fc40cb537b 241 break;
jad19925 0:b8fc40cb537b 242 }
jad19925 0:b8fc40cb537b 243 //check if we scored a point
jad19925 0:b8fc40cb537b 244 if(snake[snakeHead].x == goalLoc.x && snake[snakeHead].y == goalLoc.y){
jad19925 0:b8fc40cb537b 245 points++;
jad19925 0:b8fc40cb537b 246 //clear old goal and set new goal
jad19925 0:b8fc40cb537b 247 lcd.fillrect(goalLoc.x, goalLoc.y, goalLoc.x+1, goalLoc.y+1, 0);
jad19925 0:b8fc40cb537b 248 goalLoc.x = (rand()%64)*2;
jad19925 0:b8fc40cb537b 249 goalLoc.y = (rand()%16)*2;
jad19925 0:b8fc40cb537b 250 lcd.fillrect(goalLoc.x, goalLoc.y, goalLoc.x+1, goalLoc.y+1, 1);
jad19925 0:b8fc40cb537b 251
jad19925 0:b8fc40cb537b 252 //add on to the tail
jad19925 0:b8fc40cb537b 253 int newTail = (snakeTail-1+SNAKE_MAX)%SNAKE_MAX;
jad19925 0:b8fc40cb537b 254 snake[newTail].x = snake[snakeTail].x;
jad19925 0:b8fc40cb537b 255 snake[newTail].y = snake[snakeTail].y;
jad19925 0:b8fc40cb537b 256 snakeTail = newTail;
jad19925 0:b8fc40cb537b 257
jad19925 0:b8fc40cb537b 258 //copy everything to the lcd
jad19925 0:b8fc40cb537b 259 lcd.copy_to_lcd();
jad19925 0:b8fc40cb537b 260 if(points > SNAKE_MAX-5)
jad19925 0:b8fc40cb537b 261 {
jad19925 0:b8fc40cb537b 262 gameOver = true;
jad19925 1:ff7ee2c32cd1 263 pc.printf("Game Winner!\r\n");
jad19925 0:b8fc40cb537b 264 }
jad19925 0:b8fc40cb537b 265 }
jad19925 0:b8fc40cb537b 266 //check if we hit ourself
jad19925 0:b8fc40cb537b 267 int testLimit = snakeHead;
jad19925 0:b8fc40cb537b 268 if(snakeTail > snakeHead){
jad19925 0:b8fc40cb537b 269 testLimit = snakeHead+SNAKE_MAX;
jad19925 0:b8fc40cb537b 270 }
jad19925 0:b8fc40cb537b 271 for(int i = snakeTail; i < testLimit; i++){
jad19925 0:b8fc40cb537b 272 int iMod = i%SNAKE_MAX;
jad19925 0:b8fc40cb537b 273 if(snake[snakeHead].x == snake[iMod].x && snake[snakeHead].y == snake[iMod].y){
jad19925 0:b8fc40cb537b 274 gameOver = true;
jad19925 1:ff7ee2c32cd1 275 pc.printf("Hit Self\r\n");
jad19925 1:ff7ee2c32cd1 276 pc.printf("snakeHead:%d x=%d, y=%d",snakeHead,snake[snakeHead].x,snake[snakeHead].y);
jad19925 0:b8fc40cb537b 277 }
jad19925 0:b8fc40cb537b 278 }
jad19925 0:b8fc40cb537b 279
jad19925 0:b8fc40cb537b 280 if(gameOver){
jad19925 0:b8fc40cb537b 281 //lcd.cls();
jad19925 0:b8fc40cb537b 282 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 283 lcd.printf("Game Over, Press Joystick to start over\nPoints Scored: %d",points);
jad19925 1:ff7ee2c32cd1 284 pc.printf("Game Over\r\n");
jad19925 0:b8fc40cb537b 285 while(!fire){
jad19925 0:b8fc40cb537b 286 //infinite loop to wait for user to press joystick to restart
jad19925 0:b8fc40cb537b 287 }
jad19925 0:b8fc40cb537b 288 wait(.5);
jad19925 0:b8fc40cb537b 289 }
jad19925 0:b8fc40cb537b 290
jad19925 0:b8fc40cb537b 291 break;}
jad19925 0:b8fc40cb537b 292 case 3: {
jad19925 0:b8fc40cb537b 293 if(appSwitch){
jad19925 0:b8fc40cb537b 294 lcd.cls();
jad19925 0:b8fc40cb537b 295 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 296 lcd.printf("Horizontal Level");
jad19925 0:b8fc40cb537b 297 wait(2);
jad19925 0:b8fc40cb537b 298 lcd.cls();
jad19925 0:b8fc40cb537b 299 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 300 appSwitch=false;
jad19925 0:b8fc40cb537b 301 }
jad19925 0:b8fc40cb537b 302 break;}
jad19925 0:b8fc40cb537b 303 default: {
jad19925 0:b8fc40cb537b 304 lcd.cls();
jad19925 0:b8fc40cb537b 305 lcd.locate(0,0);
jad19925 0:b8fc40cb537b 306 lcd.printf("Error: appIndex out of range - appIndes=%d",appIndex);
jad19925 0:b8fc40cb537b 307 break;}
jad19925 0:b8fc40cb537b 308 }
jad19925 0:b8fc40cb537b 309
jad19925 0:b8fc40cb537b 310
jad19925 0:b8fc40cb537b 311 wait(0.1);
jad19925 0:b8fc40cb537b 312 }
jad19925 0:b8fc40cb537b 313 }