My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Committer:
Nikollao
Date:
Mon May 02 11:02:36 2016 +0000
Revision:
17:2d424db3975f
Parent:
16:a6ca6858af24
Child:
18:5405ee7e243b
FSM implemented!

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 16:a6ca6858af24 14 init_game(); ///initialize game
Nikollao 17:2d424db3975f 15 led_output = fsm[fsm_state];
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 16:a6ca6858af24 19
Nikollao 16:a6ca6858af24 20 game_ticker.attach(&game_timer_isr,0.2);
Nikollao 15:c7af2ea5f164 21 menu();
Nikollao 16:a6ca6858af24 22 game_ticker.detach();
Nikollao 16:a6ca6858af24 23
Nikollao 16:a6ca6858af24 24 ticker.attach(&timer_isr,game_speed); ///attach ticker with ISR every 0.1 sec
Nikollao 5:ffa498d7071f 25 reset = level; ///set reset = level to check later if level has increased
Nikollao 16:a6ca6858af24 26
Nikollao 0:2d0f77943105 27 while (1) {
Nikollao 0:2d0f77943105 28
Nikollao 0:2d0f77943105 29 if (g_timer_flag) {
Nikollao 0:2d0f77943105 30
Nikollao 6:c11bb31a06b3 31 g_timer_flag = 0; ///reset flag
Nikollao 0:2d0f77943105 32 lcd.clear();
Nikollao 6:c11bb31a06b3 33 guidance();
Nikollao 17:2d424db3975f 34 hero();
Nikollao 3:d2cc054e8605 35 enemies();
Nikollao 0:2d0f77943105 36 obstacles();
Nikollao 0:2d0f77943105 37
Nikollao 5:ffa498d7071f 38 if (reset < level) { ///if level has increased
Nikollao 0:2d0f77943105 39
Nikollao 6:c11bb31a06b3 40 reset = level; ///update reset
Nikollao 5:ffa498d7071f 41 rectX = rand() % 84; ///set the position of rect enemy
Nikollao 0:2d0f77943105 42 rectY = 0;
Nikollao 5:ffa498d7071f 43 circleX = 0; ///set position of circle enemy
Nikollao 6:c11bb31a06b3 44 circleY = rand() % 47;
Nikollao 0:2d0f77943105 45 }
Nikollao 6:c11bb31a06b3 46 pc.printf("x = %f y = %f button = %d \n",joystick.x,joystick.y,joystick.button);
Nikollao 6:c11bb31a06b3 47 pc.printf("heroY = %d , heroX = %d , n = %d \n",heroY, heroX, n);
Nikollao 16:a6ca6858af24 48 checkOverlap();
Nikollao 16:a6ca6858af24 49 updateJoystick();
Nikollao 16:a6ca6858af24 50 //callibrateJoystick();
Nikollao 16:a6ca6858af24 51 lcd.refresh();
Nikollao 0:2d0f77943105 52 }
Nikollao 0:2d0f77943105 53 sleep();
Nikollao 0:2d0f77943105 54 }
Nikollao 0:2d0f77943105 55 }
Nikollao 0:2d0f77943105 56
Nikollao 0:2d0f77943105 57 void init_serial()
Nikollao 0:2d0f77943105 58 {
Nikollao 0:2d0f77943105 59 // set to highest baud - ensure terminal software matches
Nikollao 0:2d0f77943105 60 pc.baud(115200);
Nikollao 0:2d0f77943105 61 }
Nikollao 0:2d0f77943105 62
Nikollao 0:2d0f77943105 63 void init_K64F()
Nikollao 0:2d0f77943105 64 {
Nikollao 0:2d0f77943105 65 // on-board LEDs are active-low, so set pin high to turn them off.
Nikollao 0:2d0f77943105 66 r_led = 1;
Nikollao 0:2d0f77943105 67 g_led = 1;
Nikollao 0:2d0f77943105 68 b_led = 1;
Nikollao 15:c7af2ea5f164 69
Nikollao 15:c7af2ea5f164 70 blue_led = 1;
Nikollao 0:2d0f77943105 71
Nikollao 0:2d0f77943105 72 // since the on-board switches have external pull-ups, we should disable the internal pull-down
Nikollao 0:2d0f77943105 73 // resistors that are enabled by default using InterruptIn
Nikollao 0:2d0f77943105 74 sw2.mode(PullNone);
Nikollao 0:2d0f77943105 75 sw3.mode(PullNone);
Nikollao 11:53caf3d944a9 76 button.mode(PullDown);
Nikollao 11:53caf3d944a9 77 button1.mode(PullDown);
Nikollao 0:2d0f77943105 78 }
Nikollao 0:2d0f77943105 79
Nikollao 0:2d0f77943105 80 void timer_isr ()
Nikollao 0:2d0f77943105 81 {
Nikollao 0:2d0f77943105 82 g_timer_flag = 1;
Nikollao 0:2d0f77943105 83 }
Nikollao 0:2d0f77943105 84
Nikollao 0:2d0f77943105 85 void game_timer_isr()
Nikollao 0:2d0f77943105 86 {
Nikollao 0:2d0f77943105 87 g_game_timer_flag = 1;
Nikollao 0:2d0f77943105 88 }
Nikollao 0:2d0f77943105 89
Nikollao 0:2d0f77943105 90 void sw2_isr()
Nikollao 0:2d0f77943105 91 {
Nikollao 0:2d0f77943105 92 g_sw2_flag = 1;
Nikollao 0:2d0f77943105 93 }
Nikollao 0:2d0f77943105 94
Nikollao 4:f31bdc212241 95 void sw3_isr()
Nikollao 4:f31bdc212241 96 {
Nikollao 1:12803d645d32 97 g_sw3_flag = 1;
Nikollao 1:12803d645d32 98 }
Nikollao 1:12803d645d32 99
Nikollao 1:12803d645d32 100 void button_isr()
Nikollao 1:12803d645d32 101 {
Nikollao 1:12803d645d32 102 g_button_flag =1;
Nikollao 1:12803d645d32 103 }
Nikollao 1:12803d645d32 104
Nikollao 11:53caf3d944a9 105 void button1_isr() {
Nikollao 11:53caf3d944a9 106
Nikollao 11:53caf3d944a9 107 g_button1_flag =1;
Nikollao 11:53caf3d944a9 108 }
Nikollao 11:53caf3d944a9 109
Nikollao 1:12803d645d32 110 void timeout_isr()
Nikollao 1:12803d645d32 111 {
Nikollao 1:12803d645d32 112 if (button) {
Nikollao 16:a6ca6858af24 113 pc.printf("timeout \n");
Nikollao 1:12803d645d32 114 }
Nikollao 16:a6ca6858af24 115 }