ELEC 2645 Embedded System Project Name: Wang Luyu SID: 200985894

Dependencies:   N5110 mbed

main.h

Committer:
wangwanglouisa
Date:
2016-05-05
Revision:
0:075d80c9688d

File content as of revision 0:075d80c9688d:

/**
@file main.h
@brief University of Leeds
@brief ELEC 2645 Embedded System Project
@brief Header file containing functions prototypes, defines and global variables.
@brief The initial documentation was given by Dr.Craig Evans
@author Wang Luyu
@date   May 2016
*/

#include "mbed.h"
#include "N5110.h"

// change this to alter tolerance of joystick direction
#define DIRECTION_TOLERANCE 0.05

/**  
@namespace N5110 lcd
@brief lcd connection
@brief VCC - PTE26
@brief SCE - PTA0
@brief RST - PTC4
@brief D/C - PTD0
@brief MOSI - PTD2
@brief SCLK - PTD1
@brief LED - PTC3 
*/
//    VCC,SCE,RST,D/C,MOSI,SCLK,LED
N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3);


/**  
@namespace Yellow LED
@brief LED shows the situation of the game
@brief When the pacman 'eat' the 'food', the yellow LED would lit up
*/
// on-board LEDs
Ticker ticker;
DigitalOut yellow_led(PTC2);
// Can also power (VCC) directly from VOUT (3.3 V) -
// Can give better performance due to current limitation from GPIO pin


/**  
@namespace button
@brief lcd pin connection
*/
// connections for joystick
InterruptIn button(PTB11);
/**
@namespace ypot
@brief The y axis potentiometer of joystick
*/
AnalogIn yPot(PTB2);
/**
@namespace xpot
@brief The x axis potentiometer of joystick
*/
AnalogIn xPot(PTB3);

int gameover_flag = 0;  /*!< set gameover flag */

int x_square = rand()%(82-2)+2;  /*!< set the x axis of the point */

int y_square = rand()%(46-2)+2;  /*!< set the y axis of the point */

//0-up 1-down 2-left 3-right
int direction = 0;  /*!< set joystick direction */

// define pacman-x
int Pacman_X = 8;        /*!< set the x axis initial value centre pixel of the pacman */
// define pacman-y
int Pacman_Y = 22;       /*!< set the y axis initial value centre pixel of the pacman */

// define wall-x
int Wall_X = 0;        /*!< set the x axis initial value of the wall */
// define wall-y
int Wall_Y = 0;        /*!< set the y axis initial value of the wall */

// timer to regularly read the joystick
Ticker pollJoystick;
// Serial for debug

int score = 0; /*!< set the initial score value */

volatile int printFlag = 0; /*!< set flag of printing */

/**  
@namespace Joystickbutton
@brief Define the joysitck button 
@brief When joystick button = true, you press the button
@brief Your score would show on the screen
*/
volatile int joystickbutton = false;

/**  
@namespace Joystickbutton
@brief Use the joystick button to see the currently score
*/
void joystickbutton_isr();

/**  
@namespace Eat
@brief Define the pixel that touch the point to 'eat'
@brief All around of the pacman can 'eat' the 'food'
*/
void eat();

/**  
@namespace Food
@brief Define the point
@brief When the point is eaten, it would appear another one
@brief The eaten food would disappeared
*/
void food();

// create enumerated type (0,1,2,3 etc. for direction)
// could be extended for diagonals etc.
enum DirectionName {
    UP,
    DOWN,
    LEFT,
    RIGHT,
    CENTRE,
    UNKNOWN
};

// struct for Joystick
typedef struct JoyStick Joystick;
struct JoyStick {
    float x;    // current x value
    float x0;   // 'centred' x value
    float y;    // current y value
    float y0;   // 'centred' y value
    int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
    DirectionName direction;  // current direction
};

/**  
@namespace Joystick
@brief Create struct variable
*/
// create struct variable
Joystick joystick;

/**  
@namespace CalibrateJoystick
@brief Set calibrateJoystick 
*/
// function prototypes
void calibrateJoystick();

/**  
@namespace UpdateJoystick
@brief Set the speed of updateJoystick
*/
void updateJoystick();

/**  
@namespace YellowLED
@brief Set-up the on-board LEDs
*/
// set-up the on-board LEDs
void yellow();