My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Sat Mar 26 14:41:40 2016 +0000
Revision:
5:ffa498d7071f
Parent:
4:f31bdc212241
Child:
6:c11bb31a06b3
Oxygen added to the code, working on intersection!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nikollao 5:ffa498d7071f 1 /**
Nikollao 5:ffa498d7071f 2 @file main.h
Nikollao 5:ffa498d7071f 3 @brief Header file contains functions and variables
Nikollao 5:ffa498d7071f 4 @brief Treasure Hunt - Embedded Systems Project
Nikollao 5:ffa498d7071f 5 @brief Revision 1.0
Nikollao 5:ffa498d7071f 6 @author Nikollao Sulollari
Nikollao 5:ffa498d7071f 7 @Date 26/03/2016
Nikollao 5:ffa498d7071f 8 */
Nikollao 5:ffa498d7071f 9
Nikollao 5:ffa498d7071f 10 #ifndef MAIN_H
Nikollao 5:ffa498d7071f 11 #define MAIN_H
Nikollao 5:ffa498d7071f 12 #include "mbed.h"
Nikollao 5:ffa498d7071f 13
Nikollao 5:ffa498d7071f 14
Nikollao 5:ffa498d7071f 15 /**
Nikollao 5:ffa498d7071f 16 @nameSpace led
Nikollao 5:ffa498d7071f 17 @brief GPO output for status of LED
Nikollao 5:ffa498d7071f 18 */
Nikollao 2:af5b5d42e835 19 DigitalOut r_led(LED_RED);
Nikollao 2:af5b5d42e835 20 DigitalOut g_led(LED_GREEN);
Nikollao 2:af5b5d42e835 21 DigitalOut b_led(LED_BLUE);
Nikollao 2:af5b5d42e835 22
Nikollao 2:af5b5d42e835 23 // K64F on-board switches
Nikollao 2:af5b5d42e835 24 InterruptIn sw2(SW2);
Nikollao 2:af5b5d42e835 25 InterruptIn sw3(SW3);
Nikollao 2:af5b5d42e835 26
Nikollao 2:af5b5d42e835 27 InterruptIn button(PTB2);
Nikollao 2:af5b5d42e835 28 AnalogIn xPot(PTB3);
Nikollao 2:af5b5d42e835 29 AnalogIn yPot(PTB10);
Nikollao 2:af5b5d42e835 30 PwmOut speaker(PTC11);
Nikollao 2:af5b5d42e835 31
Nikollao 5:ffa498d7071f 32 /**
Nikollao 5:ffa498d7071f 33 Displays an error message
Nikollao 5:ffa498d7071f 34 */
Nikollao 2:af5b5d42e835 35 void error();
Nikollao 5:ffa498d7071f 36
Nikollao 5:ffa498d7071f 37 /**
Nikollao 5:ffa498d7071f 38 set-up serial port
Nikollao 5:ffa498d7071f 39 */
Nikollao 2:af5b5d42e835 40 void init_serial();
Nikollao 5:ffa498d7071f 41
Nikollao 5:ffa498d7071f 42 /**
Nikollao 5:ffa498d7071f 43 set-up the on-board LEDs and switches
Nikollao 5:ffa498d7071f 44 */
Nikollao 2:af5b5d42e835 45 void init_K64F();
Nikollao 5:ffa498d7071f 46
Nikollao 5:ffa498d7071f 47 /**
Nikollao 5:ffa498d7071f 48 Set-up random variables and game menu
Nikollao 5:ffa498d7071f 49 */
Nikollao 2:af5b5d42e835 50 void init_game();
Nikollao 5:ffa498d7071f 51
Nikollao 5:ffa498d7071f 52 /**
Nikollao 5:ffa498d7071f 53 Set-up flag to 1
Nikollao 5:ffa498d7071f 54 */
Nikollao 5:ffa498d7071f 55
Nikollao 5:ffa498d7071f 56 /**
Nikollao 5:ffa498d7071f 57 Set-up flag to 1
Nikollao 5:ffa498d7071f 58 */
Nikollao 2:af5b5d42e835 59 void timer_isr();
Nikollao 5:ffa498d7071f 60
Nikollao 5:ffa498d7071f 61 /**
Nikollao 5:ffa498d7071f 62 Set-up flag to 1
Nikollao 5:ffa498d7071f 63 */
Nikollao 5:ffa498d7071f 64
Nikollao 5:ffa498d7071f 65 /**
Nikollao 5:ffa498d7071f 66 Set-up flag to 1
Nikollao 5:ffa498d7071f 67 */
Nikollao 2:af5b5d42e835 68 void game_timer_isr();
Nikollao 5:ffa498d7071f 69
Nikollao 5:ffa498d7071f 70 /**
Nikollao 5:ffa498d7071f 71 Set-up flag to 1
Nikollao 5:ffa498d7071f 72 */
Nikollao 2:af5b5d42e835 73 void sw2_isr();
Nikollao 5:ffa498d7071f 74
Nikollao 5:ffa498d7071f 75 /**
Nikollao 5:ffa498d7071f 76 Set-up flag to 1
Nikollao 5:ffa498d7071f 77 */
Nikollao 2:af5b5d42e835 78 void sw3_isr();
Nikollao 5:ffa498d7071f 79
Nikollao 5:ffa498d7071f 80 /**
Nikollao 5:ffa498d7071f 81 Set-up flag to 1
Nikollao 5:ffa498d7071f 82 */
Nikollao 2:af5b5d42e835 83 void button_isr();
Nikollao 5:ffa498d7071f 84
Nikollao 5:ffa498d7071f 85 /**
Nikollao 5:ffa498d7071f 86 Set-up flag to 1
Nikollao 5:ffa498d7071f 87 */
Nikollao 2:af5b5d42e835 88 void timeout_isr();
Nikollao 2:af5b5d42e835 89
Nikollao 5:ffa498d7071f 90 /**
Nikollao 5:ffa498d7071f 91 Set current position to default position of Joystick
Nikollao 5:ffa498d7071f 92 */
Nikollao 2:af5b5d42e835 93 void calibrateJoystick();
Nikollao 5:ffa498d7071f 94
Nikollao 5:ffa498d7071f 95 /**
Nikollao 5:ffa498d7071f 96 Update the values of the joystick to get current position
Nikollao 5:ffa498d7071f 97 */
Nikollao 2:af5b5d42e835 98 void updateJoystick();
Nikollao 2:af5b5d42e835 99
Nikollao 5:ffa498d7071f 100 /**
Nikollao 5:ffa498d7071f 101 Create an enemy rectangular shape
Nikollao 5:ffa498d7071f 102 */
Nikollao 2:af5b5d42e835 103 void enemyRect();
Nikollao 5:ffa498d7071f 104
Nikollao 5:ffa498d7071f 105 /**
Nikollao 5:ffa498d7071f 106 Create circle shape enemy
Nikollao 5:ffa498d7071f 107 */
Nikollao 2:af5b5d42e835 108 void enemyCircle();
Nikollao 5:ffa498d7071f 109
Nikollao 5:ffa498d7071f 110 /**
Nikollao 5:ffa498d7071f 111 creates the hero of the game
Nikollao 5:ffa498d7071f 112 */
Nikollao 2:af5b5d42e835 113 void hero();
Nikollao 5:ffa498d7071f 114
Nikollao 5:ffa498d7071f 115 /**
Nikollao 5:ffa498d7071f 116 Shows the right direction
Nikollao 5:ffa498d7071f 117 */
Nikollao 2:af5b5d42e835 118 void guidance();
Nikollao 5:ffa498d7071f 119
Nikollao 5:ffa498d7071f 120 /**
Nikollao 5:ffa498d7071f 121 Locates obstacles in the screen
Nikollao 5:ffa498d7071f 122 */
Nikollao 2:af5b5d42e835 123 void obstacles();
Nikollao 5:ffa498d7071f 124
Nikollao 5:ffa498d7071f 125 /**
Nikollao 5:ffa498d7071f 126 Gets enemies depending on the level
Nikollao 5:ffa498d7071f 127 */
Nikollao 3:d2cc054e8605 128 void enemies();
Nikollao 5:ffa498d7071f 129
Nikollao 5:ffa498d7071f 130 /**
Nikollao 5:ffa498d7071f 131 Get s vslue of the .y position, control menu
Nikollao 5:ffa498d7071f 132 */
Nikollao 2:af5b5d42e835 133 int menu();
Nikollao 4:f31bdc212241 134
Nikollao 5:ffa498d7071f 135 /**
Nikollao 5:ffa498d7071f 136 Check for intrersection
Nikollao 5:ffa498d7071f 137 @param i loops through x direction
Nikollao 5:ffa498d7071f 138 @param j loops through y direction
Nikollao 5:ffa498d7071f 139 @returns the number of pixels aroun the hero detected
Nikollao 5:ffa498d7071f 140 */
Nikollao 5:ffa498d7071f 141 int intersection(int i, int j);
Nikollao 5:ffa498d7071f 142
Nikollao 5:ffa498d7071f 143 volatile int rectY; /*! <set the Y coordinate of the rectangular enemy> */
Nikollao 5:ffa498d7071f 144
Nikollao 5:ffa498d7071f 145 volatile int rectX ;/*! <set the X coordinate of the rectangular enemy> */
Nikollao 5:ffa498d7071f 146
Nikollao 5:ffa498d7071f 147 volatile int circleX;/*! <set the Y coordinate of the circular enemy> */
Nikollao 5:ffa498d7071f 148
Nikollao 5:ffa498d7071f 149 volatile int circleY;/*! <set the X coordinate of the circular enemy> */
Nikollao 5:ffa498d7071f 150
Nikollao 5:ffa498d7071f 151 volatile int heroX;/*! <set the X coordinate of the hero> */
Nikollao 5:ffa498d7071f 152
Nikollao 5:ffa498d7071f 153 volatile int heroY;/*! <set the Y coordinate of the hero> */
Nikollao 5:ffa498d7071f 154
Nikollao 5:ffa498d7071f 155 volatile int level = 0; /*! <set level of the game> */
Nikollao 2:af5b5d42e835 156
Nikollao 5:ffa498d7071f 157 volatile int g_timer_flag = 0; /*! <set timer flag in the isr, timer trigger interrupt> */
Nikollao 5:ffa498d7071f 158
Nikollao 5:ffa498d7071f 159 volatile int g_game_timer_flag = 0; /*! <set timer flag in the isr, timer trigger interrupt> */
Nikollao 5:ffa498d7071f 160
Nikollao 5:ffa498d7071f 161 volatile int g_sw2_flag = 0; /*! <set timer flag in the isr, event trigger interrupt> */
Nikollao 5:ffa498d7071f 162
Nikollao 5:ffa498d7071f 163 volatile int g_sw3_flag = 0; /*! <set timer flag in the isr, event trigger interrupt> */
Nikollao 5:ffa498d7071f 164
Nikollao 5:ffa498d7071f 165 volatile int g_button_flag = 0; /*! <set timer flag in the isr, event trigger interrupt> */
Nikollao 2:af5b5d42e835 166
Nikollao 5:ffa498d7071f 167 volatile int option = 0; /*! <set option to generate menut> */
Nikollao 5:ffa498d7071f 168
Nikollao 5:ffa498d7071f 169 volatile int play = 0; /*! <used as a variable to check if its the first try*/
Nikollao 5:ffa498d7071f 170
Nikollao 5:ffa498d7071f 171 volatile int tries = 0;/*! <saves number of trials> */
Nikollao 4:f31bdc212241 172
Nikollao 5:ffa498d7071f 173 int reset = 0; /*! <updates level of the game> */
Nikollao 4:f31bdc212241 174
Nikollao 5:ffa498d7071f 175 int check[10][10];/*! <array used to check for intersection> */
Nikollao 4:f31bdc212241 176
Nikollao 5:ffa498d7071f 177 #endif
Nikollao 5:ffa498d7071f 178