My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Mon Mar 21 09:29:46 2016 +0000
Revision:
2:af5b5d42e835
Parent:
1:12803d645d32
Child:
3:d2cc054e8605
improve your man control and menu

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