Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:2ab3e61fa258, 2016-04-29 (annotated)
- Committer:
- Honeymeister
- Date:
- Fri Apr 29 16:12:09 2016 +0000
- Revision:
- 1:2ab3e61fa258
- Parent:
- 0:46009d41b72b
- Child:
- 2:fae6fef4f5ad
nearly done the ting. halfway through calibrating joystick.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Honeymeister | 0:46009d41b72b | 1 | #include "mbed.h" |
| Honeymeister | 0:46009d41b72b | 2 | #include "N5110.h" |
| Honeymeister | 0:46009d41b72b | 3 | |
| Honeymeister | 0:46009d41b72b | 4 | // VCC, SCE, RST, D/C, MOSI, SCLK, LED |
| Honeymeister | 0:46009d41b72b | 5 | N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3); |
| Honeymeister | 0:46009d41b72b | 6 | BusOut leds(PTC5 , PTC7); |
| Honeymeister | 0:46009d41b72b | 7 | AnalogIn pot(PTB10); |
| Honeymeister | 0:46009d41b72b | 8 | |
| Honeymeister | 0:46009d41b72b | 9 | // change this to alter tolerance of joystick direction |
| Honeymeister | 0:46009d41b72b | 10 | #define DIRECTION_TOLERANCE 0.05 |
| Honeymeister | 0:46009d41b72b | 11 | |
| Honeymeister | 0:46009d41b72b | 12 | // connections for joystick |
| Honeymeister | 0:46009d41b72b | 13 | DigitalIn button(PTB11); |
| Honeymeister | 0:46009d41b72b | 14 | AnalogIn xPot(PTB2); |
| Honeymeister | 0:46009d41b72b | 15 | AnalogIn yPot(PTB3); |
| Honeymeister | 0:46009d41b72b | 16 | |
| Honeymeister | 0:46009d41b72b | 17 | |
| Honeymeister | 0:46009d41b72b | 18 | int nx= 84; |
| Honeymeister | 0:46009d41b72b | 19 | int ny= 48; |
| Honeymeister | 0:46009d41b72b | 20 | int i; |
| Honeymeister | 0:46009d41b72b | 21 | int j; |
| Honeymeister | 0:46009d41b72b | 22 | int NextGen[84][48]= {0}; |
| Honeymeister | 1:2ab3e61fa258 | 23 | void splashScreen(); |
| Honeymeister | 1:2ab3e61fa258 | 24 | void clearCells(); |
| Honeymeister | 1:2ab3e61fa258 | 25 | void Wall(); |
| Honeymeister | 1:2ab3e61fa258 | 26 | void snakeBody(char x,char y); |
| Honeymeister | 1:2ab3e61fa258 | 27 | |
| Honeymeister | 1:2ab3e61fa258 | 28 | // timer to regularly read the joystick |
| Honeymeister | 1:2ab3e61fa258 | 29 | Ticker pollJoystick; |
| Honeymeister | 1:2ab3e61fa258 | 30 | |
| Honeymeister | 1:2ab3e61fa258 | 31 | // create enumerated type (0,1,2,3 etc. for direction) |
| Honeymeister | 1:2ab3e61fa258 | 32 | // could be extended for diagonals etc. |
| Honeymeister | 1:2ab3e61fa258 | 33 | enum DirectionName { |
| Honeymeister | 1:2ab3e61fa258 | 34 | UP, |
| Honeymeister | 1:2ab3e61fa258 | 35 | DOWN, |
| Honeymeister | 1:2ab3e61fa258 | 36 | LEFT, |
| Honeymeister | 1:2ab3e61fa258 | 37 | RIGHT, |
| Honeymeister | 1:2ab3e61fa258 | 38 | CENTRE, |
| Honeymeister | 1:2ab3e61fa258 | 39 | UNKNOWN |
| Honeymeister | 1:2ab3e61fa258 | 40 | }; |
| Honeymeister | 1:2ab3e61fa258 | 41 | |
| Honeymeister | 1:2ab3e61fa258 | 42 | // struct for Joystick |
| Honeymeister | 1:2ab3e61fa258 | 43 | typedef struct JoyStick Joystick; |
| Honeymeister | 1:2ab3e61fa258 | 44 | struct JoyStick { |
| Honeymeister | 1:2ab3e61fa258 | 45 | float x; // current x value |
| Honeymeister | 1:2ab3e61fa258 | 46 | float x0; // 'centred' x value |
| Honeymeister | 1:2ab3e61fa258 | 47 | float y; // current y value |
| Honeymeister | 1:2ab3e61fa258 | 48 | float y0; // 'centred' y value |
| Honeymeister | 1:2ab3e61fa258 | 49 | int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed) |
| Honeymeister | 1:2ab3e61fa258 | 50 | DirectionName direction; // current direction |
| Honeymeister | 1:2ab3e61fa258 | 51 | }; |
| Honeymeister | 1:2ab3e61fa258 | 52 | |
| Honeymeister | 1:2ab3e61fa258 | 53 | // create struct variable |
| Honeymeister | 1:2ab3e61fa258 | 54 | Joystick joystick; |
| Honeymeister | 1:2ab3e61fa258 | 55 | |
| Honeymeister | 1:2ab3e61fa258 | 56 | int printFlag = 0; |
| Honeymeister | 1:2ab3e61fa258 | 57 | |
| Honeymeister | 1:2ab3e61fa258 | 58 | // function prototypes |
| Honeymeister | 1:2ab3e61fa258 | 59 | void calibrateJoystick(); |
| Honeymeister | 1:2ab3e61fa258 | 60 | void updateJoystick(); |
| Honeymeister | 1:2ab3e61fa258 | 61 | |
| Honeymeister | 1:2ab3e61fa258 | 62 | int main() |
| Honeymeister | 1:2ab3e61fa258 | 63 | { |
| Honeymeister | 1:2ab3e61fa258 | 64 | srand(time(NULL)); |
| Honeymeister | 1:2ab3e61fa258 | 65 | |
| Honeymeister | 1:2ab3e61fa258 | 66 | wait(2); |
| Honeymeister | 1:2ab3e61fa258 | 67 | lcd.init(); |
| Honeymeister | 1:2ab3e61fa258 | 68 | splashScreen(); |
| Honeymeister | 1:2ab3e61fa258 | 69 | wait(2); |
| Honeymeister | 1:2ab3e61fa258 | 70 | clearCells(); |
| Honeymeister | 1:2ab3e61fa258 | 71 | Wall(); |
| Honeymeister | 1:2ab3e61fa258 | 72 | wait(0.5); |
| Honeymeister | 1:2ab3e61fa258 | 73 | snakeBody(42,24); |
| Honeymeister | 1:2ab3e61fa258 | 74 | calibrateJoystick(); // get centred values of joystick |
| Honeymeister | 1:2ab3e61fa258 | 75 | pollJoystick.attach(&updateJoystick,1.0/10.0); // read joystick 10 times per second |
| Honeymeister | 1:2ab3e61fa258 | 76 | while (1){ |
| Honeymeister | 1:2ab3e61fa258 | 77 | |
| Honeymeister | 1:2ab3e61fa258 | 78 | lcd.setBrightness(pot*0.001f); |
| Honeymeister | 1:2ab3e61fa258 | 79 | } |
| Honeymeister | 1:2ab3e61fa258 | 80 | } |
| Honeymeister | 1:2ab3e61fa258 | 81 | |
| Honeymeister | 1:2ab3e61fa258 | 82 | |
| Honeymeister | 1:2ab3e61fa258 | 83 | int main() |
| Honeymeister | 1:2ab3e61fa258 | 84 | { |
| Honeymeister | 1:2ab3e61fa258 | 85 | |
| Honeymeister | 1:2ab3e61fa258 | 86 | |
| Honeymeister | 1:2ab3e61fa258 | 87 | while(1) { |
| Honeymeister | 1:2ab3e61fa258 | 88 | |
| Honeymeister | 1:2ab3e61fa258 | 89 | if (printFlag) { // if flag set, clear flag and print joystick values to serial port |
| Honeymeister | 1:2ab3e61fa258 | 90 | printFlag = 0; |
| Honeymeister | 1:2ab3e61fa258 | 91 | serial.printf("x = %f y = %f button = %d ",joystick.x,joystick.y,joystick.button); |
| Honeymeister | 1:2ab3e61fa258 | 92 | |
| Honeymeister | 1:2ab3e61fa258 | 93 | // check joystick direction |
| Honeymeister | 1:2ab3e61fa258 | 94 | if (joystick.direction == UP) |
| Honeymeister | 1:2ab3e61fa258 | 95 | serial.printf(" UP\n"); |
| Honeymeister | 1:2ab3e61fa258 | 96 | if (joystick.direction == DOWN) |
| Honeymeister | 1:2ab3e61fa258 | 97 | serial.printf(" DOWN\n"); |
| Honeymeister | 1:2ab3e61fa258 | 98 | if (joystick.direction == LEFT) |
| Honeymeister | 1:2ab3e61fa258 | 99 | serial.printf(" LEFT\n"); |
| Honeymeister | 1:2ab3e61fa258 | 100 | if (joystick.direction == RIGHT) |
| Honeymeister | 1:2ab3e61fa258 | 101 | serial.printf(" RIGHT\n"); |
| Honeymeister | 1:2ab3e61fa258 | 102 | if (joystick.direction == CENTRE) |
| Honeymeister | 1:2ab3e61fa258 | 103 | serial.printf(" CENTRE\n"); |
| Honeymeister | 1:2ab3e61fa258 | 104 | if (joystick.direction == UNKNOWN) |
| Honeymeister | 1:2ab3e61fa258 | 105 | serial.printf(" Unsupported direction\n"); |
| Honeymeister | 1:2ab3e61fa258 | 106 | |
| Honeymeister | 1:2ab3e61fa258 | 107 | } |
| Honeymeister | 1:2ab3e61fa258 | 108 | |
| Honeymeister | 1:2ab3e61fa258 | 109 | } |
| Honeymeister | 1:2ab3e61fa258 | 110 | } |
| Honeymeister | 1:2ab3e61fa258 | 111 | |
| Honeymeister | 0:46009d41b72b | 112 | |
| Honeymeister | 0:46009d41b72b | 113 | void splashScreen() //This is the first screen the user sees when the game is turned on |
| Honeymeister | 0:46009d41b72b | 114 | { |
| Honeymeister | 0:46009d41b72b | 115 | |
| Honeymeister | 0:46009d41b72b | 116 | lcd.printString("Welcome To",15,1); |
| Honeymeister | 0:46009d41b72b | 117 | wait(1); |
| Honeymeister | 0:46009d41b72b | 118 | lcd.printString("D.Honeywell's",3,2); |
| Honeymeister | 0:46009d41b72b | 119 | lcd.printString("------------------",1,3); |
| Honeymeister | 0:46009d41b72b | 120 | wait(2); |
| Honeymeister | 0:46009d41b72b | 121 | lcd.printString("E",15,4); |
| Honeymeister | 0:46009d41b72b | 122 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 123 | lcd.printString("EP",15,4); |
| Honeymeister | 0:46009d41b72b | 124 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 125 | lcd.printString("EPI",15,4); |
| Honeymeister | 0:46009d41b72b | 126 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 127 | lcd.printString("EPIC",15,4); |
| Honeymeister | 0:46009d41b72b | 128 | lcd.printString("EPIC ",15,4); |
| Honeymeister | 0:46009d41b72b | 129 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 130 | lcd.printString("EPIC G",15,4); |
| Honeymeister | 0:46009d41b72b | 131 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 132 | lcd.printString("EPIC GA",15,4); |
| Honeymeister | 0:46009d41b72b | 133 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 134 | lcd.printString("EPIC GAM",15,4); |
| Honeymeister | 0:46009d41b72b | 135 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 136 | lcd.printString("EPIC GAME",15,4); |
| Honeymeister | 0:46009d41b72b | 137 | wait(0.3); |
| Honeymeister | 0:46009d41b72b | 138 | // lcd.drawRect(0,0,82,46,0); |
| Honeymeister | 0:46009d41b72b | 139 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 140 | // lcd.drawRect(0,0,78,42,0); |
| Honeymeister | 0:46009d41b72b | 141 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 142 | // lcd.drawRect(0,0,74,38,0); |
| Honeymeister | 0:46009d41b72b | 143 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 144 | // lcd.drawRect(0,0,70,34,0); |
| Honeymeister | 0:46009d41b72b | 145 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 146 | // lcd.drawRect(0,0,66,30,0); |
| Honeymeister | 0:46009d41b72b | 147 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 148 | // lcd.drawRect(0,0,62,26,0); |
| Honeymeister | 0:46009d41b72b | 149 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 150 | // lcd.drawRect(0,0,58,22,0); |
| Honeymeister | 0:46009d41b72b | 151 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 152 | // lcd.drawRect(0,0,54,18,0); |
| Honeymeister | 0:46009d41b72b | 153 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 154 | // lcd.drawRect(0,0,50,14,0); |
| Honeymeister | 0:46009d41b72b | 155 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 156 | // lcd.drawRect(0,0,46,10,0); |
| Honeymeister | 0:46009d41b72b | 157 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 158 | // lcd.drawRect(0,0,42,6,0); |
| Honeymeister | 0:46009d41b72b | 159 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 160 | // lcd.drawRect(0,0,38,2,0); |
| Honeymeister | 0:46009d41b72b | 161 | // wait(0.1); |
| Honeymeister | 0:46009d41b72b | 162 | |
| Honeymeister | 0:46009d41b72b | 163 | |
| Honeymeister | 0:46009d41b72b | 164 | |
| Honeymeister | 0:46009d41b72b | 165 | } |
| Honeymeister | 0:46009d41b72b | 166 | |
| Honeymeister | 0:46009d41b72b | 167 | |
| Honeymeister | 0:46009d41b72b | 168 | void clearCells() |
| Honeymeister | 0:46009d41b72b | 169 | { |
| Honeymeister | 0:46009d41b72b | 170 | for (int i = 0; i < nx ; i++) { |
| Honeymeister | 0:46009d41b72b | 171 | for (int j = 0; j < ny ; j++) { |
| Honeymeister | 0:46009d41b72b | 172 | lcd.clearPixel(i,j); |
| Honeymeister | 0:46009d41b72b | 173 | |
| Honeymeister | 0:46009d41b72b | 174 | } |
| Honeymeister | 0:46009d41b72b | 175 | } |
| Honeymeister | 0:46009d41b72b | 176 | lcd.refresh(); |
| Honeymeister | 0:46009d41b72b | 177 | |
| Honeymeister | 0:46009d41b72b | 178 | } |
| Honeymeister | 0:46009d41b72b | 179 | |
| Honeymeister | 0:46009d41b72b | 180 | |
| Honeymeister | 0:46009d41b72b | 181 | |
| Honeymeister | 0:46009d41b72b | 182 | void snakeBody(char x, char y) |
| Honeymeister | 0:46009d41b72b | 183 | |
| Honeymeister | 0:46009d41b72b | 184 | { |
| Honeymeister | 0:46009d41b72b | 185 | lcd.setPixel(x,y); |
| Honeymeister | 0:46009d41b72b | 186 | lcd.setPixel(x+1,y); |
| Honeymeister | 0:46009d41b72b | 187 | lcd.setPixel(x+2,y); |
| Honeymeister | 0:46009d41b72b | 188 | lcd.setPixel(x+3,y); |
| Honeymeister | 0:46009d41b72b | 189 | lcd.setPixel(x+4,y); |
| Honeymeister | 0:46009d41b72b | 190 | lcd.setPixel(x+5,y); |
| Honeymeister | 0:46009d41b72b | 191 | lcd.setPixel(x+6,y); |
| Honeymeister | 0:46009d41b72b | 192 | lcd.setPixel(x+7,y); |
| Honeymeister | 0:46009d41b72b | 193 | lcd.setPixel(x+8,y); |
| Honeymeister | 0:46009d41b72b | 194 | lcd.setPixel(x+9,y); |
| Honeymeister | 0:46009d41b72b | 195 | lcd.setPixel(x+10,y); |
| Honeymeister | 0:46009d41b72b | 196 | lcd.setPixel(x,y+1); |
| Honeymeister | 0:46009d41b72b | 197 | lcd.setPixel(x+1,y+1); |
| Honeymeister | 0:46009d41b72b | 198 | lcd.setPixel(x+2,y+1); |
| Honeymeister | 0:46009d41b72b | 199 | lcd.setPixel(x+3,y+1); |
| Honeymeister | 0:46009d41b72b | 200 | lcd.setPixel(x+4,y+1); |
| Honeymeister | 0:46009d41b72b | 201 | lcd.setPixel(x+5,y+1); |
| Honeymeister | 0:46009d41b72b | 202 | lcd.setPixel(x+6,y+1); |
| Honeymeister | 0:46009d41b72b | 203 | lcd.setPixel(x+7,y+1); |
| Honeymeister | 0:46009d41b72b | 204 | lcd.setPixel(x+8,y+1); |
| Honeymeister | 0:46009d41b72b | 205 | lcd.setPixel(x+9,y+1); |
| Honeymeister | 0:46009d41b72b | 206 | lcd.setPixel(x+10,y+1); |
| Honeymeister | 0:46009d41b72b | 207 | |
| Honeymeister | 0:46009d41b72b | 208 | |
| Honeymeister | 0:46009d41b72b | 209 | lcd.refresh(); |
| Honeymeister | 0:46009d41b72b | 210 | |
| Honeymeister | 0:46009d41b72b | 211 | } |
| Honeymeister | 0:46009d41b72b | 212 | |
| Honeymeister | 0:46009d41b72b | 213 | int Rand (int Min = 1, int Max = 83) |
| Honeymeister | 0:46009d41b72b | 214 | { |
| Honeymeister | 0:46009d41b72b | 215 | static bool First = true; |
| Honeymeister | 0:46009d41b72b | 216 | if (First) srand (time (NULL)), First = false; |
| Honeymeister | 0:46009d41b72b | 217 | while (7) |
| Honeymeister | 0:46009d41b72b | 218 | { |
| Honeymeister | 0:46009d41b72b | 219 | int S = rand () % (Max - Min + 1) + Min; |
| Honeymeister | 0:46009d41b72b | 220 | if (!((S - 1) % 3)) return S; |
| Honeymeister | 0:46009d41b72b | 221 | } |
| Honeymeister | 0:46009d41b72b | 222 | } |
| Honeymeister | 0:46009d41b72b | 223 | |
| Honeymeister | 0:46009d41b72b | 224 | void Wall () |
| Honeymeister | 0:46009d41b72b | 225 | |
| Honeymeister | 0:46009d41b72b | 226 | { |
| Honeymeister | 0:46009d41b72b | 227 | |
| Honeymeister | 0:46009d41b72b | 228 | lcd.drawRect(0,0,82,46,0); |
| Honeymeister | 0:46009d41b72b | 229 | lcd.drawRect(1,1,80,44,0); |
| Honeymeister | 0:46009d41b72b | 230 | |
| Honeymeister | 0:46009d41b72b | 231 | } |
| Honeymeister | 0:46009d41b72b | 232 | |
| Honeymeister | 0:46009d41b72b | 233 |