
ELEC 2645 Embedded System Project Name: Wang Luyu SID: 200985894
main.h@0:075d80c9688d, 2016-05-05 (annotated)
- Committer:
- wangwanglouisa
- Date:
- Thu May 05 09:35:12 2016 +0000
- Revision:
- 0:075d80c9688d
Final test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wangwanglouisa | 0:075d80c9688d | 1 | /** |
wangwanglouisa | 0:075d80c9688d | 2 | @file main.h |
wangwanglouisa | 0:075d80c9688d | 3 | @brief University of Leeds |
wangwanglouisa | 0:075d80c9688d | 4 | @brief ELEC 2645 Embedded System Project |
wangwanglouisa | 0:075d80c9688d | 5 | @brief Header file containing functions prototypes, defines and global variables. |
wangwanglouisa | 0:075d80c9688d | 6 | @brief The initial documentation was given by Dr.Craig Evans |
wangwanglouisa | 0:075d80c9688d | 7 | @author Wang Luyu |
wangwanglouisa | 0:075d80c9688d | 8 | @date May 2016 |
wangwanglouisa | 0:075d80c9688d | 9 | */ |
wangwanglouisa | 0:075d80c9688d | 10 | |
wangwanglouisa | 0:075d80c9688d | 11 | #include "mbed.h" |
wangwanglouisa | 0:075d80c9688d | 12 | #include "N5110.h" |
wangwanglouisa | 0:075d80c9688d | 13 | |
wangwanglouisa | 0:075d80c9688d | 14 | // change this to alter tolerance of joystick direction |
wangwanglouisa | 0:075d80c9688d | 15 | #define DIRECTION_TOLERANCE 0.05 |
wangwanglouisa | 0:075d80c9688d | 16 | |
wangwanglouisa | 0:075d80c9688d | 17 | /** |
wangwanglouisa | 0:075d80c9688d | 18 | @namespace N5110 lcd |
wangwanglouisa | 0:075d80c9688d | 19 | @brief lcd connection |
wangwanglouisa | 0:075d80c9688d | 20 | @brief VCC - PTE26 |
wangwanglouisa | 0:075d80c9688d | 21 | @brief SCE - PTA0 |
wangwanglouisa | 0:075d80c9688d | 22 | @brief RST - PTC4 |
wangwanglouisa | 0:075d80c9688d | 23 | @brief D/C - PTD0 |
wangwanglouisa | 0:075d80c9688d | 24 | @brief MOSI - PTD2 |
wangwanglouisa | 0:075d80c9688d | 25 | @brief SCLK - PTD1 |
wangwanglouisa | 0:075d80c9688d | 26 | @brief LED - PTC3 |
wangwanglouisa | 0:075d80c9688d | 27 | */ |
wangwanglouisa | 0:075d80c9688d | 28 | // VCC,SCE,RST,D/C,MOSI,SCLK,LED |
wangwanglouisa | 0:075d80c9688d | 29 | N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3); |
wangwanglouisa | 0:075d80c9688d | 30 | |
wangwanglouisa | 0:075d80c9688d | 31 | |
wangwanglouisa | 0:075d80c9688d | 32 | /** |
wangwanglouisa | 0:075d80c9688d | 33 | @namespace Yellow LED |
wangwanglouisa | 0:075d80c9688d | 34 | @brief LED shows the situation of the game |
wangwanglouisa | 0:075d80c9688d | 35 | @brief When the pacman 'eat' the 'food', the yellow LED would lit up |
wangwanglouisa | 0:075d80c9688d | 36 | */ |
wangwanglouisa | 0:075d80c9688d | 37 | // on-board LEDs |
wangwanglouisa | 0:075d80c9688d | 38 | Ticker ticker; |
wangwanglouisa | 0:075d80c9688d | 39 | DigitalOut yellow_led(PTC2); |
wangwanglouisa | 0:075d80c9688d | 40 | // Can also power (VCC) directly from VOUT (3.3 V) - |
wangwanglouisa | 0:075d80c9688d | 41 | // Can give better performance due to current limitation from GPIO pin |
wangwanglouisa | 0:075d80c9688d | 42 | |
wangwanglouisa | 0:075d80c9688d | 43 | |
wangwanglouisa | 0:075d80c9688d | 44 | /** |
wangwanglouisa | 0:075d80c9688d | 45 | @namespace button |
wangwanglouisa | 0:075d80c9688d | 46 | @brief lcd pin connection |
wangwanglouisa | 0:075d80c9688d | 47 | */ |
wangwanglouisa | 0:075d80c9688d | 48 | // connections for joystick |
wangwanglouisa | 0:075d80c9688d | 49 | InterruptIn button(PTB11); |
wangwanglouisa | 0:075d80c9688d | 50 | /** |
wangwanglouisa | 0:075d80c9688d | 51 | @namespace ypot |
wangwanglouisa | 0:075d80c9688d | 52 | @brief The y axis potentiometer of joystick |
wangwanglouisa | 0:075d80c9688d | 53 | */ |
wangwanglouisa | 0:075d80c9688d | 54 | AnalogIn yPot(PTB2); |
wangwanglouisa | 0:075d80c9688d | 55 | /** |
wangwanglouisa | 0:075d80c9688d | 56 | @namespace xpot |
wangwanglouisa | 0:075d80c9688d | 57 | @brief The x axis potentiometer of joystick |
wangwanglouisa | 0:075d80c9688d | 58 | */ |
wangwanglouisa | 0:075d80c9688d | 59 | AnalogIn xPot(PTB3); |
wangwanglouisa | 0:075d80c9688d | 60 | |
wangwanglouisa | 0:075d80c9688d | 61 | int gameover_flag = 0; /*!< set gameover flag */ |
wangwanglouisa | 0:075d80c9688d | 62 | |
wangwanglouisa | 0:075d80c9688d | 63 | int x_square = rand()%(82-2)+2; /*!< set the x axis of the point */ |
wangwanglouisa | 0:075d80c9688d | 64 | |
wangwanglouisa | 0:075d80c9688d | 65 | int y_square = rand()%(46-2)+2; /*!< set the y axis of the point */ |
wangwanglouisa | 0:075d80c9688d | 66 | |
wangwanglouisa | 0:075d80c9688d | 67 | //0-up 1-down 2-left 3-right |
wangwanglouisa | 0:075d80c9688d | 68 | int direction = 0; /*!< set joystick direction */ |
wangwanglouisa | 0:075d80c9688d | 69 | |
wangwanglouisa | 0:075d80c9688d | 70 | // define pacman-x |
wangwanglouisa | 0:075d80c9688d | 71 | int Pacman_X = 8; /*!< set the x axis initial value centre pixel of the pacman */ |
wangwanglouisa | 0:075d80c9688d | 72 | // define pacman-y |
wangwanglouisa | 0:075d80c9688d | 73 | int Pacman_Y = 22; /*!< set the y axis initial value centre pixel of the pacman */ |
wangwanglouisa | 0:075d80c9688d | 74 | |
wangwanglouisa | 0:075d80c9688d | 75 | // define wall-x |
wangwanglouisa | 0:075d80c9688d | 76 | int Wall_X = 0; /*!< set the x axis initial value of the wall */ |
wangwanglouisa | 0:075d80c9688d | 77 | // define wall-y |
wangwanglouisa | 0:075d80c9688d | 78 | int Wall_Y = 0; /*!< set the y axis initial value of the wall */ |
wangwanglouisa | 0:075d80c9688d | 79 | |
wangwanglouisa | 0:075d80c9688d | 80 | // timer to regularly read the joystick |
wangwanglouisa | 0:075d80c9688d | 81 | Ticker pollJoystick; |
wangwanglouisa | 0:075d80c9688d | 82 | // Serial for debug |
wangwanglouisa | 0:075d80c9688d | 83 | |
wangwanglouisa | 0:075d80c9688d | 84 | int score = 0; /*!< set the initial score value */ |
wangwanglouisa | 0:075d80c9688d | 85 | |
wangwanglouisa | 0:075d80c9688d | 86 | volatile int printFlag = 0; /*!< set flag of printing */ |
wangwanglouisa | 0:075d80c9688d | 87 | |
wangwanglouisa | 0:075d80c9688d | 88 | /** |
wangwanglouisa | 0:075d80c9688d | 89 | @namespace Joystickbutton |
wangwanglouisa | 0:075d80c9688d | 90 | @brief Define the joysitck button |
wangwanglouisa | 0:075d80c9688d | 91 | @brief When joystick button = true, you press the button |
wangwanglouisa | 0:075d80c9688d | 92 | @brief Your score would show on the screen |
wangwanglouisa | 0:075d80c9688d | 93 | */ |
wangwanglouisa | 0:075d80c9688d | 94 | volatile int joystickbutton = false; |
wangwanglouisa | 0:075d80c9688d | 95 | |
wangwanglouisa | 0:075d80c9688d | 96 | /** |
wangwanglouisa | 0:075d80c9688d | 97 | @namespace Joystickbutton |
wangwanglouisa | 0:075d80c9688d | 98 | @brief Use the joystick button to see the currently score |
wangwanglouisa | 0:075d80c9688d | 99 | */ |
wangwanglouisa | 0:075d80c9688d | 100 | void joystickbutton_isr(); |
wangwanglouisa | 0:075d80c9688d | 101 | |
wangwanglouisa | 0:075d80c9688d | 102 | /** |
wangwanglouisa | 0:075d80c9688d | 103 | @namespace Eat |
wangwanglouisa | 0:075d80c9688d | 104 | @brief Define the pixel that touch the point to 'eat' |
wangwanglouisa | 0:075d80c9688d | 105 | @brief All around of the pacman can 'eat' the 'food' |
wangwanglouisa | 0:075d80c9688d | 106 | */ |
wangwanglouisa | 0:075d80c9688d | 107 | void eat(); |
wangwanglouisa | 0:075d80c9688d | 108 | |
wangwanglouisa | 0:075d80c9688d | 109 | /** |
wangwanglouisa | 0:075d80c9688d | 110 | @namespace Food |
wangwanglouisa | 0:075d80c9688d | 111 | @brief Define the point |
wangwanglouisa | 0:075d80c9688d | 112 | @brief When the point is eaten, it would appear another one |
wangwanglouisa | 0:075d80c9688d | 113 | @brief The eaten food would disappeared |
wangwanglouisa | 0:075d80c9688d | 114 | */ |
wangwanglouisa | 0:075d80c9688d | 115 | void food(); |
wangwanglouisa | 0:075d80c9688d | 116 | |
wangwanglouisa | 0:075d80c9688d | 117 | // create enumerated type (0,1,2,3 etc. for direction) |
wangwanglouisa | 0:075d80c9688d | 118 | // could be extended for diagonals etc. |
wangwanglouisa | 0:075d80c9688d | 119 | enum DirectionName { |
wangwanglouisa | 0:075d80c9688d | 120 | UP, |
wangwanglouisa | 0:075d80c9688d | 121 | DOWN, |
wangwanglouisa | 0:075d80c9688d | 122 | LEFT, |
wangwanglouisa | 0:075d80c9688d | 123 | RIGHT, |
wangwanglouisa | 0:075d80c9688d | 124 | CENTRE, |
wangwanglouisa | 0:075d80c9688d | 125 | UNKNOWN |
wangwanglouisa | 0:075d80c9688d | 126 | }; |
wangwanglouisa | 0:075d80c9688d | 127 | |
wangwanglouisa | 0:075d80c9688d | 128 | // struct for Joystick |
wangwanglouisa | 0:075d80c9688d | 129 | typedef struct JoyStick Joystick; |
wangwanglouisa | 0:075d80c9688d | 130 | struct JoyStick { |
wangwanglouisa | 0:075d80c9688d | 131 | float x; // current x value |
wangwanglouisa | 0:075d80c9688d | 132 | float x0; // 'centred' x value |
wangwanglouisa | 0:075d80c9688d | 133 | float y; // current y value |
wangwanglouisa | 0:075d80c9688d | 134 | float y0; // 'centred' y value |
wangwanglouisa | 0:075d80c9688d | 135 | int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed) |
wangwanglouisa | 0:075d80c9688d | 136 | DirectionName direction; // current direction |
wangwanglouisa | 0:075d80c9688d | 137 | }; |
wangwanglouisa | 0:075d80c9688d | 138 | |
wangwanglouisa | 0:075d80c9688d | 139 | /** |
wangwanglouisa | 0:075d80c9688d | 140 | @namespace Joystick |
wangwanglouisa | 0:075d80c9688d | 141 | @brief Create struct variable |
wangwanglouisa | 0:075d80c9688d | 142 | */ |
wangwanglouisa | 0:075d80c9688d | 143 | // create struct variable |
wangwanglouisa | 0:075d80c9688d | 144 | Joystick joystick; |
wangwanglouisa | 0:075d80c9688d | 145 | |
wangwanglouisa | 0:075d80c9688d | 146 | /** |
wangwanglouisa | 0:075d80c9688d | 147 | @namespace CalibrateJoystick |
wangwanglouisa | 0:075d80c9688d | 148 | @brief Set calibrateJoystick |
wangwanglouisa | 0:075d80c9688d | 149 | */ |
wangwanglouisa | 0:075d80c9688d | 150 | // function prototypes |
wangwanglouisa | 0:075d80c9688d | 151 | void calibrateJoystick(); |
wangwanglouisa | 0:075d80c9688d | 152 | |
wangwanglouisa | 0:075d80c9688d | 153 | /** |
wangwanglouisa | 0:075d80c9688d | 154 | @namespace UpdateJoystick |
wangwanglouisa | 0:075d80c9688d | 155 | @brief Set the speed of updateJoystick |
wangwanglouisa | 0:075d80c9688d | 156 | */ |
wangwanglouisa | 0:075d80c9688d | 157 | void updateJoystick(); |
wangwanglouisa | 0:075d80c9688d | 158 | |
wangwanglouisa | 0:075d80c9688d | 159 | /** |
wangwanglouisa | 0:075d80c9688d | 160 | @namespace YellowLED |
wangwanglouisa | 0:075d80c9688d | 161 | @brief Set-up the on-board LEDs |
wangwanglouisa | 0:075d80c9688d | 162 | */ |
wangwanglouisa | 0:075d80c9688d | 163 | // set-up the on-board LEDs |
wangwanglouisa | 0:075d80c9688d | 164 | void yellow(); |