My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Fri Apr 29 19:35:13 2016 +0000
Revision:
15:c7af2ea5f164
Parent:
14:91ae0afe9037
Child:
16:a6ca6858af24
overlap done, menu done, keep improving!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nikollao 5:ffa498d7071f 1 /**
Nikollao 5:ffa498d7071f 2 @file main.cpp
Nikollao 5:ffa498d7071f 3 @brief Game implementation
Nikollao 4:f31bdc212241 4
Nikollao 5:ffa498d7071f 5 */
Nikollao 5:ffa498d7071f 6 #include "main.h"
Nikollao 0:2d0f77943105 7 #include "stdlib.h"
Nikollao 2:af5b5d42e835 8
Nikollao 0:2d0f77943105 9 int main()
Nikollao 0:2d0f77943105 10 {
Nikollao 6:c11bb31a06b3 11 lcd.init();
Nikollao 6:c11bb31a06b3 12 init_K64F();
Nikollao 6:c11bb31a06b3 13 init_serial();
Nikollao 11:53caf3d944a9 14
Nikollao 5:ffa498d7071f 15 init_game(); ///initialize game
Nikollao 5:ffa498d7071f 16 calibrateJoystick(); ///calibrate joystick
Nikollao 14:91ae0afe9037 17 button.rise(&button_isr); ///assign rise with ISR
Nikollao 14:91ae0afe9037 18 button1.rise(&button1_isr);
Nikollao 15:c7af2ea5f164 19 menu();
Nikollao 14:91ae0afe9037 20 ticker.attach(&timer_isr,0.05); ///attach ticker with ISR every 0.1 sec
Nikollao 5:ffa498d7071f 21 reset = level; ///set reset = level to check later if level has increased
Nikollao 11:53caf3d944a9 22 // buzzer.start();
Nikollao 7:f31a4b4beb91 23 //buzzer.write(0.5);
Nikollao 11:53caf3d944a9 24 //buzzer.period_ms(4);
Nikollao 9:ce2d9c42edea 25
Nikollao 0:2d0f77943105 26 while (1) {
Nikollao 0:2d0f77943105 27
Nikollao 0:2d0f77943105 28 if (g_timer_flag) {
Nikollao 0:2d0f77943105 29
Nikollao 6:c11bb31a06b3 30 g_timer_flag = 0; ///reset flag
Nikollao 0:2d0f77943105 31 lcd.clear();
Nikollao 6:c11bb31a06b3 32 guidance();
Nikollao 0:2d0f77943105 33 hero();
Nikollao 3:d2cc054e8605 34 enemies();
Nikollao 0:2d0f77943105 35 obstacles();
Nikollao 0:2d0f77943105 36
Nikollao 5:ffa498d7071f 37 if (reset < level) { ///if level has increased
Nikollao 0:2d0f77943105 38
Nikollao 6:c11bb31a06b3 39 reset = level; ///update reset
Nikollao 5:ffa498d7071f 40 rectX = rand() % 84; ///set the position of rect enemy
Nikollao 0:2d0f77943105 41 rectY = 0;
Nikollao 5:ffa498d7071f 42 circleX = 0; ///set position of circle enemy
Nikollao 6:c11bb31a06b3 43 circleY = rand() % 47;
Nikollao 0:2d0f77943105 44 }
Nikollao 6:c11bb31a06b3 45 pc.printf("x = %f y = %f button = %d \n",joystick.x,joystick.y,joystick.button);
Nikollao 6:c11bb31a06b3 46 pc.printf("heroY = %d , heroX = %d , n = %d \n",heroY, heroX, n);
Nikollao 0:2d0f77943105 47 }
Nikollao 6:c11bb31a06b3 48 checkOverlap();
Nikollao 0:2d0f77943105 49 updateJoystick();
Nikollao 1:12803d645d32 50 //callibrateJoystick();
Nikollao 0:2d0f77943105 51 lcd.refresh();
Nikollao 0:2d0f77943105 52 sleep();
Nikollao 0:2d0f77943105 53 }
Nikollao 0:2d0f77943105 54 }
Nikollao 0:2d0f77943105 55
Nikollao 0:2d0f77943105 56 void init_serial()
Nikollao 0:2d0f77943105 57 {
Nikollao 0:2d0f77943105 58 // set to highest baud - ensure terminal software matches
Nikollao 0:2d0f77943105 59 pc.baud(115200);
Nikollao 0:2d0f77943105 60 }
Nikollao 0:2d0f77943105 61
Nikollao 0:2d0f77943105 62 void init_K64F()
Nikollao 0:2d0f77943105 63 {
Nikollao 0:2d0f77943105 64 // on-board LEDs are active-low, so set pin high to turn them off.
Nikollao 0:2d0f77943105 65 r_led = 1;
Nikollao 0:2d0f77943105 66 g_led = 1;
Nikollao 0:2d0f77943105 67 b_led = 1;
Nikollao 15:c7af2ea5f164 68
Nikollao 15:c7af2ea5f164 69 blue_led = 1;
Nikollao 15:c7af2ea5f164 70 left_led = 1;
Nikollao 15:c7af2ea5f164 71 centre_led = 1;
Nikollao 15:c7af2ea5f164 72 right_led = 1;
Nikollao 15:c7af2ea5f164 73
Nikollao 0:2d0f77943105 74
Nikollao 0:2d0f77943105 75 // since the on-board switches have external pull-ups, we should disable the internal pull-down
Nikollao 0:2d0f77943105 76 // resistors that are enabled by default using InterruptIn
Nikollao 0:2d0f77943105 77 sw2.mode(PullNone);
Nikollao 0:2d0f77943105 78 sw3.mode(PullNone);
Nikollao 11:53caf3d944a9 79 button.mode(PullDown);
Nikollao 11:53caf3d944a9 80 button1.mode(PullDown);
Nikollao 0:2d0f77943105 81 }
Nikollao 0:2d0f77943105 82
Nikollao 0:2d0f77943105 83 void timer_isr ()
Nikollao 0:2d0f77943105 84 {
Nikollao 0:2d0f77943105 85 g_timer_flag = 1;
Nikollao 0:2d0f77943105 86 }
Nikollao 0:2d0f77943105 87
Nikollao 0:2d0f77943105 88 void game_timer_isr()
Nikollao 0:2d0f77943105 89 {
Nikollao 0:2d0f77943105 90 g_game_timer_flag = 1;
Nikollao 0:2d0f77943105 91 }
Nikollao 0:2d0f77943105 92
Nikollao 0:2d0f77943105 93 void sw2_isr()
Nikollao 0:2d0f77943105 94 {
Nikollao 0:2d0f77943105 95 g_sw2_flag = 1;
Nikollao 0:2d0f77943105 96 }
Nikollao 0:2d0f77943105 97
Nikollao 4:f31bdc212241 98 void sw3_isr()
Nikollao 4:f31bdc212241 99 {
Nikollao 1:12803d645d32 100 g_sw3_flag = 1;
Nikollao 1:12803d645d32 101 }
Nikollao 1:12803d645d32 102
Nikollao 1:12803d645d32 103 void button_isr()
Nikollao 1:12803d645d32 104 {
Nikollao 1:12803d645d32 105 g_button_flag =1;
Nikollao 1:12803d645d32 106 }
Nikollao 1:12803d645d32 107
Nikollao 11:53caf3d944a9 108 void button1_isr() {
Nikollao 11:53caf3d944a9 109
Nikollao 11:53caf3d944a9 110 g_button1_flag =1;
Nikollao 11:53caf3d944a9 111 }
Nikollao 11:53caf3d944a9 112
Nikollao 1:12803d645d32 113 void timeout_isr()
Nikollao 1:12803d645d32 114 {
Nikollao 1:12803d645d32 115 if (button) {
Nikollao 4:f31bdc212241 116 pc.printf("button is pressed! \n");
Nikollao 1:12803d645d32 117 }
Nikollao 7:f31a4b4beb91 118 }