My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Mon Mar 07 09:38:00 2016 +0000
Revision:
0:2d0f77943105
Child:
1:12803d645d32
This is a good progress of the program. If any problems come back here!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nikollao 0:2d0f77943105 1 #include "mbed.h"
Nikollao 0:2d0f77943105 2 #include "N5110.h"
Nikollao 0:2d0f77943105 3 #include "stdlib.h"
Nikollao 0:2d0f77943105 4
Nikollao 0:2d0f77943105 5 N5110 lcd(PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3);
Nikollao 0:2d0f77943105 6 Serial pc(USBTX,USBRX);
Nikollao 0:2d0f77943105 7
Nikollao 0:2d0f77943105 8 #define DIRECTION_TOLERANCE 0.05
Nikollao 0:2d0f77943105 9
Nikollao 0:2d0f77943105 10 DigitalIn button(PTB2);
Nikollao 0:2d0f77943105 11 AnalogIn xPot(PTB3);
Nikollao 0:2d0f77943105 12 AnalogIn yPot(PTB10);
Nikollao 0:2d0f77943105 13
Nikollao 0:2d0f77943105 14 Ticker ticker;
Nikollao 0:2d0f77943105 15 Ticker game_timer;
Nikollao 0:2d0f77943105 16
Nikollao 0:2d0f77943105 17 DigitalOut r_led(LED_RED);
Nikollao 0:2d0f77943105 18 DigitalOut g_led(LED_GREEN);
Nikollao 0:2d0f77943105 19 DigitalOut b_led(LED_BLUE);
Nikollao 0:2d0f77943105 20 // K64F on-board switches
Nikollao 0:2d0f77943105 21 InterruptIn sw2(SW2);
Nikollao 0:2d0f77943105 22 InterruptIn sw3(SW3);
Nikollao 0:2d0f77943105 23 PwmOut speaker(PTC11);
Nikollao 0:2d0f77943105 24
Nikollao 0:2d0f77943105 25 enum DirectionName {
Nikollao 0:2d0f77943105 26 UP,
Nikollao 0:2d0f77943105 27 DOWN,
Nikollao 0:2d0f77943105 28 LEFT,
Nikollao 0:2d0f77943105 29 RIGHT,
Nikollao 0:2d0f77943105 30 CENTRE,
Nikollao 0:2d0f77943105 31 UNKNOWN
Nikollao 0:2d0f77943105 32 };
Nikollao 0:2d0f77943105 33
Nikollao 0:2d0f77943105 34 typedef struct JoyStick Joystick;
Nikollao 0:2d0f77943105 35 struct JoyStick {
Nikollao 0:2d0f77943105 36 float x; // current x value
Nikollao 0:2d0f77943105 37 float x0; // 'centred' x value
Nikollao 0:2d0f77943105 38 float y; // current y value
Nikollao 0:2d0f77943105 39 float y0; // 'centred' y value
Nikollao 0:2d0f77943105 40 int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
Nikollao 0:2d0f77943105 41 DirectionName direction; // current direction
Nikollao 0:2d0f77943105 42 };
Nikollao 0:2d0f77943105 43 // create struct variable
Nikollao 0:2d0f77943105 44 Joystick joystick;
Nikollao 0:2d0f77943105 45
Nikollao 0:2d0f77943105 46 // error function hangs flashing an LED
Nikollao 0:2d0f77943105 47
Nikollao 0:2d0f77943105 48 volatile int rectY;
Nikollao 0:2d0f77943105 49 volatile int rectX ;
Nikollao 0:2d0f77943105 50 volatile int circleX;
Nikollao 0:2d0f77943105 51 volatile int circleY;
Nikollao 0:2d0f77943105 52 volatile int heroX;
Nikollao 0:2d0f77943105 53 volatile int heroY;
Nikollao 0:2d0f77943105 54
Nikollao 0:2d0f77943105 55 volatile int level = 0;
Nikollao 0:2d0f77943105 56 volatile int count = 0;
Nikollao 0:2d0f77943105 57 volatile int reset = 0;
Nikollao 0:2d0f77943105 58 volatile int g_timer_flag = 0;
Nikollao 0:2d0f77943105 59 volatile int g_game_timer_flag = 0;
Nikollao 0:2d0f77943105 60 volatile int g_sw2_flag = 0;
Nikollao 0:2d0f77943105 61
Nikollao 0:2d0f77943105 62 void error();
Nikollao 0:2d0f77943105 63 // setup serial port
Nikollao 0:2d0f77943105 64 void init_serial();
Nikollao 0:2d0f77943105 65 // set-up the on-board LEDs and switches
Nikollao 0:2d0f77943105 66 void init_K64F();
Nikollao 0:2d0f77943105 67 void init_game();
Nikollao 0:2d0f77943105 68 void timer_isr();
Nikollao 0:2d0f77943105 69 void game_timer_isr();
Nikollao 0:2d0f77943105 70 void sw2_isr();
Nikollao 0:2d0f77943105 71 void calibrateJoystick();
Nikollao 0:2d0f77943105 72 void updateJoystick();
Nikollao 0:2d0f77943105 73
Nikollao 0:2d0f77943105 74 void enemyRect();
Nikollao 0:2d0f77943105 75 void enemyCircle();
Nikollao 0:2d0f77943105 76 void hero();
Nikollao 0:2d0f77943105 77 void guidance();
Nikollao 0:2d0f77943105 78 void obstacles();
Nikollao 0:2d0f77943105 79 int menu();
Nikollao 0:2d0f77943105 80
Nikollao 0:2d0f77943105 81 int main()
Nikollao 0:2d0f77943105 82 {
Nikollao 0:2d0f77943105 83
Nikollao 0:2d0f77943105 84
Nikollao 0:2d0f77943105 85 lcd.init();
Nikollao 0:2d0f77943105 86 init_K64F();
Nikollao 0:2d0f77943105 87 init_serial();
Nikollao 0:2d0f77943105 88 sw2.fall(&sw2_isr);
Nikollao 0:2d0f77943105 89 init_game();
Nikollao 0:2d0f77943105 90 calibrateJoystick();
Nikollao 0:2d0f77943105 91
Nikollao 0:2d0f77943105 92 ticker.attach(&timer_isr,0.1);
Nikollao 0:2d0f77943105 93 reset = level;
Nikollao 0:2d0f77943105 94
Nikollao 0:2d0f77943105 95 while (1) {
Nikollao 0:2d0f77943105 96
Nikollao 0:2d0f77943105 97 if (g_timer_flag) {
Nikollao 0:2d0f77943105 98
Nikollao 0:2d0f77943105 99 g_timer_flag = 0;
Nikollao 0:2d0f77943105 100 lcd.clear();
Nikollao 0:2d0f77943105 101 guidance();
Nikollao 0:2d0f77943105 102 hero();
Nikollao 0:2d0f77943105 103 if (level == 0) {
Nikollao 0:2d0f77943105 104
Nikollao 0:2d0f77943105 105 enemyRect();
Nikollao 0:2d0f77943105 106 enemyCircle();
Nikollao 0:2d0f77943105 107 } else if (level == 1) {
Nikollao 0:2d0f77943105 108
Nikollao 0:2d0f77943105 109 enemyRect();
Nikollao 0:2d0f77943105 110 enemyCircle();
Nikollao 0:2d0f77943105 111 enemyRect();
Nikollao 0:2d0f77943105 112 } else if (level == 2) {
Nikollao 0:2d0f77943105 113
Nikollao 0:2d0f77943105 114 } else if (level == 3) {
Nikollao 0:2d0f77943105 115
Nikollao 0:2d0f77943105 116 }
Nikollao 0:2d0f77943105 117 obstacles();
Nikollao 0:2d0f77943105 118 count++;
Nikollao 0:2d0f77943105 119 //heroX++;
Nikollao 0:2d0f77943105 120 heroY--;
Nikollao 0:2d0f77943105 121
Nikollao 0:2d0f77943105 122 if (heroY < -45) {
Nikollao 0:2d0f77943105 123 heroY = 0;
Nikollao 0:2d0f77943105 124 level++;
Nikollao 0:2d0f77943105 125 }
Nikollao 0:2d0f77943105 126
Nikollao 0:2d0f77943105 127 if (reset < level) {
Nikollao 0:2d0f77943105 128
Nikollao 0:2d0f77943105 129 reset = level;
Nikollao 0:2d0f77943105 130 count = 0;
Nikollao 0:2d0f77943105 131 rectX = rand() % 84;
Nikollao 0:2d0f77943105 132 rectY = 0;
Nikollao 0:2d0f77943105 133 circleX = 0;
Nikollao 0:2d0f77943105 134 circleY = rand() % 47;
Nikollao 0:2d0f77943105 135 }
Nikollao 0:2d0f77943105 136
Nikollao 0:2d0f77943105 137 pc.printf("x = %f y = %f button = %d ",joystick.x,joystick.y,joystick.button);
Nikollao 0:2d0f77943105 138
Nikollao 0:2d0f77943105 139 // check joystick direction
Nikollao 0:2d0f77943105 140 if (joystick.direction == UP)
Nikollao 0:2d0f77943105 141 pc.printf(" UP\n");
Nikollao 0:2d0f77943105 142 if (joystick.direction == DOWN)
Nikollao 0:2d0f77943105 143 pc.printf(" DOWN\n");
Nikollao 0:2d0f77943105 144 if (joystick.direction == LEFT)
Nikollao 0:2d0f77943105 145 pc.printf(" LEFT\n");
Nikollao 0:2d0f77943105 146 if (joystick.direction == RIGHT)
Nikollao 0:2d0f77943105 147 pc.printf(" RIGHT\n");
Nikollao 0:2d0f77943105 148 if (joystick.direction == CENTRE)
Nikollao 0:2d0f77943105 149 pc.printf(" CENTRE\n");
Nikollao 0:2d0f77943105 150 if (joystick.direction == UNKNOWN)
Nikollao 0:2d0f77943105 151 pc.printf(" Unsupported direction\n");
Nikollao 0:2d0f77943105 152 }
Nikollao 0:2d0f77943105 153 updateJoystick();
Nikollao 0:2d0f77943105 154 lcd.refresh();
Nikollao 0:2d0f77943105 155 sleep();
Nikollao 0:2d0f77943105 156 }
Nikollao 0:2d0f77943105 157 }
Nikollao 0:2d0f77943105 158
Nikollao 0:2d0f77943105 159 void init_serial()
Nikollao 0:2d0f77943105 160 {
Nikollao 0:2d0f77943105 161 // set to highest baud - ensure terminal software matches
Nikollao 0:2d0f77943105 162 pc.baud(115200);
Nikollao 0:2d0f77943105 163 }
Nikollao 0:2d0f77943105 164
Nikollao 0:2d0f77943105 165 void init_K64F()
Nikollao 0:2d0f77943105 166 {
Nikollao 0:2d0f77943105 167 // on-board LEDs are active-low, so set pin high to turn them off.
Nikollao 0:2d0f77943105 168 r_led = 1;
Nikollao 0:2d0f77943105 169 g_led = 1;
Nikollao 0:2d0f77943105 170 b_led = 1;
Nikollao 0:2d0f77943105 171
Nikollao 0:2d0f77943105 172 // since the on-board switches have external pull-ups, we should disable the internal pull-down
Nikollao 0:2d0f77943105 173 // resistors that are enabled by default using InterruptIn
Nikollao 0:2d0f77943105 174 sw2.mode(PullNone);
Nikollao 0:2d0f77943105 175 sw3.mode(PullNone);
Nikollao 0:2d0f77943105 176 }
Nikollao 0:2d0f77943105 177
Nikollao 0:2d0f77943105 178 void timer_isr ()
Nikollao 0:2d0f77943105 179 {
Nikollao 0:2d0f77943105 180
Nikollao 0:2d0f77943105 181 g_timer_flag = 1;
Nikollao 0:2d0f77943105 182 // lcd.refresh();
Nikollao 0:2d0f77943105 183 }
Nikollao 0:2d0f77943105 184
Nikollao 0:2d0f77943105 185 void game_timer_isr()
Nikollao 0:2d0f77943105 186 {
Nikollao 0:2d0f77943105 187
Nikollao 0:2d0f77943105 188 g_game_timer_flag = 1;
Nikollao 0:2d0f77943105 189 }
Nikollao 0:2d0f77943105 190
Nikollao 0:2d0f77943105 191 void sw2_isr()
Nikollao 0:2d0f77943105 192 {
Nikollao 0:2d0f77943105 193
Nikollao 0:2d0f77943105 194 g_sw2_flag = 1;
Nikollao 0:2d0f77943105 195 }
Nikollao 0:2d0f77943105 196
Nikollao 0:2d0f77943105 197 void enemyRect()
Nikollao 0:2d0f77943105 198 {
Nikollao 0:2d0f77943105 199
Nikollao 0:2d0f77943105 200 lcd.drawRect(rectX,rectY,5,4,1);
Nikollao 0:2d0f77943105 201 rectX = rectX + rand()%4 - 2;
Nikollao 0:2d0f77943105 202 //rectY = rand()%4-2;
Nikollao 0:2d0f77943105 203 //rectX++;
Nikollao 0:2d0f77943105 204 rectY++;
Nikollao 0:2d0f77943105 205 }
Nikollao 0:2d0f77943105 206
Nikollao 0:2d0f77943105 207 void hero()
Nikollao 0:2d0f77943105 208 {
Nikollao 0:2d0f77943105 209
Nikollao 0:2d0f77943105 210 lcd.drawLine(40,47+heroY,48,43+heroY,1);
Nikollao 0:2d0f77943105 211 lcd.drawLine(40,43+heroY,48,47+heroY,1);
Nikollao 0:2d0f77943105 212 lcd.drawLine(44,45+heroY,44,41+heroY,1);
Nikollao 0:2d0f77943105 213 lcd.drawCircle(44,39+heroY,2,0);
Nikollao 0:2d0f77943105 214 }
Nikollao 0:2d0f77943105 215
Nikollao 0:2d0f77943105 216 void enemyCircle()
Nikollao 0:2d0f77943105 217 {
Nikollao 0:2d0f77943105 218 if (count > 10) {
Nikollao 0:2d0f77943105 219 lcd.drawCircle(circleX,circleY,4,1);
Nikollao 0:2d0f77943105 220 circleY = circleY + rand() %4 - 2;
Nikollao 0:2d0f77943105 221
Nikollao 0:2d0f77943105 222 circleX++;
Nikollao 0:2d0f77943105 223 }
Nikollao 0:2d0f77943105 224 }
Nikollao 0:2d0f77943105 225
Nikollao 0:2d0f77943105 226 void init_game()
Nikollao 0:2d0f77943105 227 {
Nikollao 0:2d0f77943105 228
Nikollao 0:2d0f77943105 229 srand(time(NULL));
Nikollao 0:2d0f77943105 230 rectY = 0;
Nikollao 0:2d0f77943105 231 rectX = rand() %84 + 1;
Nikollao 0:2d0f77943105 232 circleY = rand() %48 + 1;
Nikollao 0:2d0f77943105 233 circleX = 0;
Nikollao 0:2d0f77943105 234 lcd.setBrightness(0.5); // put LED backlight on 50%
Nikollao 0:2d0f77943105 235
Nikollao 0:2d0f77943105 236 lcd.printString("Welcome to",11,1);
Nikollao 0:2d0f77943105 237 lcd.printString("Treasure Hunt!",1,3);
Nikollao 0:2d0f77943105 238 lcd.refresh();
Nikollao 0:2d0f77943105 239 wait(1);
Nikollao 0:2d0f77943105 240 lcd.clear();
Nikollao 0:2d0f77943105 241
Nikollao 0:2d0f77943105 242 while (1) {
Nikollao 0:2d0f77943105 243
Nikollao 0:2d0f77943105 244 if (g_game_timer_flag) {
Nikollao 0:2d0f77943105 245
Nikollao 0:2d0f77943105 246 g_game_timer_flag = 0;
Nikollao 0:2d0f77943105 247 updateJoystick();
Nikollao 0:2d0f77943105 248 lcd.clear();
Nikollao 0:2d0f77943105 249 int option = menu();
Nikollao 0:2d0f77943105 250
Nikollao 0:2d0f77943105 251 if (option == 0) {
Nikollao 0:2d0f77943105 252
Nikollao 0:2d0f77943105 253 lcd.printString("Start Game <",0,0);
Nikollao 0:2d0f77943105 254 lcd.printString("Settings",0,2);
Nikollao 0:2d0f77943105 255 lcd.printString("Exit",0,4);
Nikollao 0:2d0f77943105 256 } else if (option == 1) {
Nikollao 0:2d0f77943105 257
Nikollao 0:2d0f77943105 258 lcd.printString("Start Game",0,0);
Nikollao 0:2d0f77943105 259 lcd.printString("Settings <",0,2);
Nikollao 0:2d0f77943105 260 lcd.printString("Exit",0,4);
Nikollao 0:2d0f77943105 261 } else {
Nikollao 0:2d0f77943105 262
Nikollao 0:2d0f77943105 263 lcd.printString("Start Game",0,0);
Nikollao 0:2d0f77943105 264 lcd.printString("Settings",0,2);
Nikollao 0:2d0f77943105 265 lcd.printString("Exit <",0,4);
Nikollao 0:2d0f77943105 266 }
Nikollao 0:2d0f77943105 267 }
Nikollao 0:2d0f77943105 268 if (g_sw2_flag) {
Nikollao 0:2d0f77943105 269 break;
Nikollao 0:2d0f77943105 270 }
Nikollao 0:2d0f77943105 271
Nikollao 0:2d0f77943105 272 sleep();
Nikollao 0:2d0f77943105 273 }
Nikollao 0:2d0f77943105 274 }
Nikollao 0:2d0f77943105 275 void guidance()
Nikollao 0:2d0f77943105 276 {
Nikollao 0:2d0f77943105 277
Nikollao 0:2d0f77943105 278 if (level < 7) {
Nikollao 0:2d0f77943105 279
Nikollao 0:2d0f77943105 280 lcd.drawLine(42,0,42,4,1);
Nikollao 0:2d0f77943105 281 lcd.drawLine(42,0,40,2,1);
Nikollao 0:2d0f77943105 282 lcd.drawLine(42,0,44,2,1);
Nikollao 0:2d0f77943105 283 } else if (level == 7) {
Nikollao 0:2d0f77943105 284
Nikollao 0:2d0f77943105 285 lcd.drawLine(42,0,42,6,1);
Nikollao 0:2d0f77943105 286 lcd.drawLine(40,3,44,3,1);
Nikollao 0:2d0f77943105 287 lcd.drawLine(40,0,44,6,1);
Nikollao 0:2d0f77943105 288 lcd.drawLine(40,6,44,0,1);
Nikollao 0:2d0f77943105 289 } else if (level == 8) {
Nikollao 0:2d0f77943105 290
Nikollao 0:2d0f77943105 291 ticker.detach();
Nikollao 0:2d0f77943105 292 lcd.clear();
Nikollao 0:2d0f77943105 293 lcd.printString("Well done!",0,0);
Nikollao 0:2d0f77943105 294 lcd.refresh();
Nikollao 0:2d0f77943105 295 wait(2);
Nikollao 0:2d0f77943105 296 lcd.clear();
Nikollao 0:2d0f77943105 297 lcd.printString("Play again",0,0);
Nikollao 0:2d0f77943105 298 lcd.refresh();
Nikollao 0:2d0f77943105 299 }
Nikollao 0:2d0f77943105 300 }
Nikollao 0:2d0f77943105 301
Nikollao 0:2d0f77943105 302 void obstacles()
Nikollao 0:2d0f77943105 303 {
Nikollao 0:2d0f77943105 304
Nikollao 0:2d0f77943105 305 if (level == 1) {
Nikollao 0:2d0f77943105 306
Nikollao 0:2d0f77943105 307 lcd.drawRect(10,15,2,2,1);
Nikollao 0:2d0f77943105 308 lcd.drawRect(74,15,2,2,1);
Nikollao 0:2d0f77943105 309 } else if (level == 2) {
Nikollao 0:2d0f77943105 310
Nikollao 0:2d0f77943105 311 lcd.drawRect(10,15,2,2,1);
Nikollao 0:2d0f77943105 312 lcd.drawRect(74,15,2,2,1);
Nikollao 0:2d0f77943105 313 lcd.drawRect(10,28,2,2,1);
Nikollao 0:2d0f77943105 314 lcd.drawRect(74,28,2,2,1);
Nikollao 0:2d0f77943105 315 } else if (level == 3) {
Nikollao 0:2d0f77943105 316
Nikollao 0:2d0f77943105 317 lcd.drawRect(10,15,2,2,1);
Nikollao 0:2d0f77943105 318 lcd.drawRect(74,15,2,2,1);
Nikollao 0:2d0f77943105 319 lcd.drawRect(10,28,2,2,1);
Nikollao 0:2d0f77943105 320 lcd.drawRect(74,28,2,2,1);
Nikollao 0:2d0f77943105 321 lcd.drawRect(30,15,2,2,1);
Nikollao 0:2d0f77943105 322 lcd.drawRect(54,15,2,2,1);
Nikollao 0:2d0f77943105 323 lcd.drawRect(30,28,2,2,1);
Nikollao 0:2d0f77943105 324 lcd.drawRect(54,28,2,2,1);
Nikollao 0:2d0f77943105 325 } else if (level == 4) {
Nikollao 0:2d0f77943105 326
Nikollao 0:2d0f77943105 327 lcd.drawRect(10 + rand() %4 - 2,15 + rand() &4 -2,2,2,1);
Nikollao 0:2d0f77943105 328 lcd.drawRect(74,15,2,2,1);
Nikollao 0:2d0f77943105 329 lcd.drawRect(10,28,2,2,1);
Nikollao 0:2d0f77943105 330 lcd.drawRect(74,28,2,2,1);
Nikollao 0:2d0f77943105 331 }
Nikollao 0:2d0f77943105 332 }
Nikollao 0:2d0f77943105 333
Nikollao 0:2d0f77943105 334 void calibrateJoystick()
Nikollao 0:2d0f77943105 335 {
Nikollao 0:2d0f77943105 336 button.mode(PullDown);
Nikollao 0:2d0f77943105 337 // must not move during calibration
Nikollao 0:2d0f77943105 338 joystick.x0 = xPot; // initial positions in the range 0.0 to 1.0 (0.5 if centred exactly)
Nikollao 0:2d0f77943105 339 joystick.y0 = yPot;
Nikollao 0:2d0f77943105 340 }
Nikollao 0:2d0f77943105 341 void updateJoystick()
Nikollao 0:2d0f77943105 342 {
Nikollao 0:2d0f77943105 343 // read current joystick values relative to calibrated values (in range -0.5 to 0.5, 0.0 is centred)
Nikollao 0:2d0f77943105 344 joystick.x = xPot - joystick.x0;
Nikollao 0:2d0f77943105 345 joystick.y = yPot - joystick.y0;
Nikollao 0:2d0f77943105 346 // read button state
Nikollao 0:2d0f77943105 347 joystick.button = button;
Nikollao 0:2d0f77943105 348
Nikollao 0:2d0f77943105 349 // calculate direction depending on x,y values
Nikollao 0:2d0f77943105 350 // tolerance allows a little lee-way in case joystick not exactly in the stated direction
Nikollao 0:2d0f77943105 351 if ( fabs(joystick.y) < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
Nikollao 0:2d0f77943105 352 joystick.direction = CENTRE;
Nikollao 0:2d0f77943105 353 } else if ( joystick.y > DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
Nikollao 0:2d0f77943105 354 joystick.direction = UP;
Nikollao 0:2d0f77943105 355 } else if ( joystick.y < DIRECTION_TOLERANCE && fabs(joystick.x) < DIRECTION_TOLERANCE) {
Nikollao 0:2d0f77943105 356 joystick.direction = DOWN;
Nikollao 0:2d0f77943105 357 } else if ( joystick.x > DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
Nikollao 0:2d0f77943105 358 joystick.direction = RIGHT;
Nikollao 0:2d0f77943105 359 } else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
Nikollao 0:2d0f77943105 360 joystick.direction = LEFT;
Nikollao 0:2d0f77943105 361 } else {
Nikollao 0:2d0f77943105 362 joystick.direction = UNKNOWN;
Nikollao 0:2d0f77943105 363 }
Nikollao 0:2d0f77943105 364 }
Nikollao 0:2d0f77943105 365
Nikollao 0:2d0f77943105 366 int menu()
Nikollao 0:2d0f77943105 367 {
Nikollao 0:2d0f77943105 368
Nikollao 0:2d0f77943105 369 int option;
Nikollao 0:2d0f77943105 370
Nikollao 0:2d0f77943105 371 if (joystick.y <= 0.33) {
Nikollao 0:2d0f77943105 372 option = 0;
Nikollao 0:2d0f77943105 373 } else if (joystick.y <= 0.66) {
Nikollao 0:2d0f77943105 374 option = 1;
Nikollao 0:2d0f77943105 375 } else {
Nikollao 0:2d0f77943105 376 option = 2;
Nikollao 0:2d0f77943105 377 }
Nikollao 0:2d0f77943105 378 return option;
Nikollao 0:2d0f77943105 379 }
Nikollao 0:2d0f77943105 380 void error()
Nikollao 0:2d0f77943105 381 {
Nikollao 0:2d0f77943105 382
Nikollao 0:2d0f77943105 383 while (1) {
Nikollao 0:2d0f77943105 384
Nikollao 0:2d0f77943105 385 lcd.printString("Error!",0,0);
Nikollao 0:2d0f77943105 386
Nikollao 0:2d0f77943105 387 r_led = 0;
Nikollao 0:2d0f77943105 388 wait(0.2);
Nikollao 0:2d0f77943105 389 r_led = 1;
Nikollao 0:2d0f77943105 390 wait(0.2);
Nikollao 0:2d0f77943105 391 }
Nikollao 0:2d0f77943105 392 }