ThumbIt Repository - use thumb joystick to navigate ball through maze.
Dependencies: 4DGL-uLCD-SE mbed
main.cpp@0:62fc2a3fb443, 2015-03-11 (annotated)
- Committer:
- pwilson39
- Date:
- Wed Mar 11 16:10:21 2015 +0000
- Revision:
- 0:62fc2a3fb443
Completion of Lab4 with shiftbrite
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pwilson39 | 0:62fc2a3fb443 | 1 | #include "mbed.h" |
pwilson39 | 0:62fc2a3fb443 | 2 | #include "uLCD_4DGL.h" |
pwilson39 | 0:62fc2a3fb443 | 3 | |
pwilson39 | 0:62fc2a3fb443 | 4 | uLCD_4DGL uLCD(p28, p27, p29); |
pwilson39 | 0:62fc2a3fb443 | 5 | AnalogIn AnalogX(p18); |
pwilson39 | 0:62fc2a3fb443 | 6 | AnalogIn AnalogY(p19); |
pwilson39 | 0:62fc2a3fb443 | 7 | |
pwilson39 | 0:62fc2a3fb443 | 8 | int grid_field[7][7]; |
pwilson39 | 0:62fc2a3fb443 | 9 | int xLocs[13]; |
pwilson39 | 0:62fc2a3fb443 | 10 | int yLocs[13]; |
pwilson39 | 0:62fc2a3fb443 | 11 | int round = 1; |
pwilson39 | 0:62fc2a3fb443 | 12 | |
pwilson39 | 0:62fc2a3fb443 | 13 | //Cycles through different colors on RGB LED |
pwilson39 | 0:62fc2a3fb443 | 14 | SPI spi(p11, p12, p13); |
pwilson39 | 0:62fc2a3fb443 | 15 | DigitalOut latch(p15); |
pwilson39 | 0:62fc2a3fb443 | 16 | DigitalOut enable(p16); |
pwilson39 | 0:62fc2a3fb443 | 17 | |
pwilson39 | 0:62fc2a3fb443 | 18 | //Methods |
pwilson39 | 0:62fc2a3fb443 | 19 | void lcdSetup(); |
pwilson39 | 0:62fc2a3fb443 | 20 | void createGrid(); |
pwilson39 | 0:62fc2a3fb443 | 21 | void drawGrid(); |
pwilson39 | 0:62fc2a3fb443 | 22 | void fillGrid(); |
pwilson39 | 0:62fc2a3fb443 | 23 | void initGrid(); |
pwilson39 | 0:62fc2a3fb443 | 24 | void createGrid1(); |
pwilson39 | 0:62fc2a3fb443 | 25 | void createGrid2(); |
pwilson39 | 0:62fc2a3fb443 | 26 | void createGrid3(); |
pwilson39 | 0:62fc2a3fb443 | 27 | void drawBorder(); |
pwilson39 | 0:62fc2a3fb443 | 28 | void drawRoundInfo(); |
pwilson39 | 0:62fc2a3fb443 | 29 | void moveBall(); |
pwilson39 | 0:62fc2a3fb443 | 30 | void RGB_LED(int red, int green, int blue); |
pwilson39 | 0:62fc2a3fb443 | 31 | |
pwilson39 | 0:62fc2a3fb443 | 32 | int main() |
pwilson39 | 0:62fc2a3fb443 | 33 | { |
pwilson39 | 0:62fc2a3fb443 | 34 | lcdSetup(); |
pwilson39 | 0:62fc2a3fb443 | 35 | createGrid(); |
pwilson39 | 0:62fc2a3fb443 | 36 | |
pwilson39 | 0:62fc2a3fb443 | 37 | // Round 1 |
pwilson39 | 0:62fc2a3fb443 | 38 | createGrid1(); |
pwilson39 | 0:62fc2a3fb443 | 39 | drawBorder(); |
pwilson39 | 0:62fc2a3fb443 | 40 | moveBall(); |
pwilson39 | 0:62fc2a3fb443 | 41 | round++; |
pwilson39 | 0:62fc2a3fb443 | 42 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 43 | drawRoundInfo(); |
pwilson39 | 0:62fc2a3fb443 | 44 | wait(2); |
pwilson39 | 0:62fc2a3fb443 | 45 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 46 | |
pwilson39 | 0:62fc2a3fb443 | 47 | // Round 2 |
pwilson39 | 0:62fc2a3fb443 | 48 | createGrid(); |
pwilson39 | 0:62fc2a3fb443 | 49 | createGrid2(); |
pwilson39 | 0:62fc2a3fb443 | 50 | drawBorder(); |
pwilson39 | 0:62fc2a3fb443 | 51 | moveBall(); |
pwilson39 | 0:62fc2a3fb443 | 52 | round++; |
pwilson39 | 0:62fc2a3fb443 | 53 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 54 | drawRoundInfo(); |
pwilson39 | 0:62fc2a3fb443 | 55 | wait(2); |
pwilson39 | 0:62fc2a3fb443 | 56 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 57 | |
pwilson39 | 0:62fc2a3fb443 | 58 | // Round 3 |
pwilson39 | 0:62fc2a3fb443 | 59 | createGrid(); |
pwilson39 | 0:62fc2a3fb443 | 60 | createGrid3(); |
pwilson39 | 0:62fc2a3fb443 | 61 | drawBorder(); |
pwilson39 | 0:62fc2a3fb443 | 62 | moveBall(); |
pwilson39 | 0:62fc2a3fb443 | 63 | round++; |
pwilson39 | 0:62fc2a3fb443 | 64 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 65 | drawRoundInfo(); |
pwilson39 | 0:62fc2a3fb443 | 66 | wait(2); |
pwilson39 | 0:62fc2a3fb443 | 67 | |
pwilson39 | 0:62fc2a3fb443 | 68 | } |
pwilson39 | 0:62fc2a3fb443 | 69 | |
pwilson39 | 0:62fc2a3fb443 | 70 | void lcdSetup() |
pwilson39 | 0:62fc2a3fb443 | 71 | { |
pwilson39 | 0:62fc2a3fb443 | 72 | uLCD.baudrate(3000000); //jack up baud rate to max for fast display |
pwilson39 | 0:62fc2a3fb443 | 73 | uLCD.background_color(WHITE); |
pwilson39 | 0:62fc2a3fb443 | 74 | uLCD.textbackground_color(WHITE); |
pwilson39 | 0:62fc2a3fb443 | 75 | uLCD.color(BLUE); |
pwilson39 | 0:62fc2a3fb443 | 76 | uLCD.text_width(2); |
pwilson39 | 0:62fc2a3fb443 | 77 | uLCD.text_height(2); |
pwilson39 | 0:62fc2a3fb443 | 78 | |
pwilson39 | 0:62fc2a3fb443 | 79 | // Setup shiftbrite |
pwilson39 | 0:62fc2a3fb443 | 80 | spi.format(16,0); |
pwilson39 | 0:62fc2a3fb443 | 81 | spi.frequency(500000); |
pwilson39 | 0:62fc2a3fb443 | 82 | enable=0; |
pwilson39 | 0:62fc2a3fb443 | 83 | latch=0; |
pwilson39 | 0:62fc2a3fb443 | 84 | |
pwilson39 | 0:62fc2a3fb443 | 85 | |
pwilson39 | 0:62fc2a3fb443 | 86 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 87 | |
pwilson39 | 0:62fc2a3fb443 | 88 | uLCD.printf("Maze Game\n"); |
pwilson39 | 0:62fc2a3fb443 | 89 | uLCD.printf("Try to get from the top, left to the bottom, right.\n"); |
pwilson39 | 0:62fc2a3fb443 | 90 | wait(3); |
pwilson39 | 0:62fc2a3fb443 | 91 | uLCD.printf("\nLet's Begin.."); |
pwilson39 | 0:62fc2a3fb443 | 92 | wait(2); |
pwilson39 | 0:62fc2a3fb443 | 93 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 94 | } |
pwilson39 | 0:62fc2a3fb443 | 95 | |
pwilson39 | 0:62fc2a3fb443 | 96 | void createGrid() |
pwilson39 | 0:62fc2a3fb443 | 97 | { |
pwilson39 | 0:62fc2a3fb443 | 98 | uLCD.background_color(WHITE); |
pwilson39 | 0:62fc2a3fb443 | 99 | uLCD.cls(); |
pwilson39 | 0:62fc2a3fb443 | 100 | |
pwilson39 | 0:62fc2a3fb443 | 101 | // Max a 7x7 Grid |
pwilson39 | 0:62fc2a3fb443 | 102 | // 18 pix width |
pwilson39 | 0:62fc2a3fb443 | 103 | int count = 0; |
pwilson39 | 0:62fc2a3fb443 | 104 | for(int i = 0; i < 127; i=i+18) { |
pwilson39 | 0:62fc2a3fb443 | 105 | xLocs[count] = i; |
pwilson39 | 0:62fc2a3fb443 | 106 | yLocs[count] = i; |
pwilson39 | 0:62fc2a3fb443 | 107 | uLCD.line(i,0,i, 127, BLACK); |
pwilson39 | 0:62fc2a3fb443 | 108 | uLCD.line(0, i,127, i, BLACK); |
pwilson39 | 0:62fc2a3fb443 | 109 | count++; |
pwilson39 | 0:62fc2a3fb443 | 110 | } |
pwilson39 | 0:62fc2a3fb443 | 111 | |
pwilson39 | 0:62fc2a3fb443 | 112 | |
pwilson39 | 0:62fc2a3fb443 | 113 | } |
pwilson39 | 0:62fc2a3fb443 | 114 | |
pwilson39 | 0:62fc2a3fb443 | 115 | void initGrid() |
pwilson39 | 0:62fc2a3fb443 | 116 | { |
pwilson39 | 0:62fc2a3fb443 | 117 | // Initialize all the grid locations with 0 |
pwilson39 | 0:62fc2a3fb443 | 118 | for(int a = 0; a < 8; a++) { |
pwilson39 | 0:62fc2a3fb443 | 119 | for(int b = 0; b < 8; b++) { |
pwilson39 | 0:62fc2a3fb443 | 120 | grid_field[a][b] = 0; |
pwilson39 | 0:62fc2a3fb443 | 121 | } |
pwilson39 | 0:62fc2a3fb443 | 122 | } |
pwilson39 | 0:62fc2a3fb443 | 123 | } |
pwilson39 | 0:62fc2a3fb443 | 124 | |
pwilson39 | 0:62fc2a3fb443 | 125 | void createGrid1() |
pwilson39 | 0:62fc2a3fb443 | 126 | { |
pwilson39 | 0:62fc2a3fb443 | 127 | initGrid(); |
pwilson39 | 0:62fc2a3fb443 | 128 | // For second, third row, fill in all but the end |
pwilson39 | 0:62fc2a3fb443 | 129 | for(int c = 0; c < 6; c++) { |
pwilson39 | 0:62fc2a3fb443 | 130 | grid_field[c][1] = 1; |
pwilson39 | 0:62fc2a3fb443 | 131 | grid_field[c][2] = 1; |
pwilson39 | 0:62fc2a3fb443 | 132 | } |
pwilson39 | 0:62fc2a3fb443 | 133 | |
pwilson39 | 0:62fc2a3fb443 | 134 | // For fifth, sixth row, fill 2nd to end |
pwilson39 | 0:62fc2a3fb443 | 135 | for(int d = 1; d < 7; d++) { |
pwilson39 | 0:62fc2a3fb443 | 136 | grid_field[d][4] = 1; |
pwilson39 | 0:62fc2a3fb443 | 137 | grid_field[d][5] = 1; |
pwilson39 | 0:62fc2a3fb443 | 138 | } |
pwilson39 | 0:62fc2a3fb443 | 139 | } |
pwilson39 | 0:62fc2a3fb443 | 140 | |
pwilson39 | 0:62fc2a3fb443 | 141 | void createGrid2() |
pwilson39 | 0:62fc2a3fb443 | 142 | { |
pwilson39 | 0:62fc2a3fb443 | 143 | initGrid(); |
pwilson39 | 0:62fc2a3fb443 | 144 | // For second, fill in all but the middle |
pwilson39 | 0:62fc2a3fb443 | 145 | for(int c = 0; c < 7; c++) { |
pwilson39 | 0:62fc2a3fb443 | 146 | if(c == 3) { |
pwilson39 | 0:62fc2a3fb443 | 147 | continue; |
pwilson39 | 0:62fc2a3fb443 | 148 | } |
pwilson39 | 0:62fc2a3fb443 | 149 | grid_field[c][1] = 1; |
pwilson39 | 0:62fc2a3fb443 | 150 | } |
pwilson39 | 0:62fc2a3fb443 | 151 | |
pwilson39 | 0:62fc2a3fb443 | 152 | //leave the 3rd row open |
pwilson39 | 0:62fc2a3fb443 | 153 | //Fourth row |
pwilson39 | 0:62fc2a3fb443 | 154 | for(int c = 1; c < 7; c++) { |
pwilson39 | 0:62fc2a3fb443 | 155 | grid_field[c][3] = 1; |
pwilson39 | 0:62fc2a3fb443 | 156 | } |
pwilson39 | 0:62fc2a3fb443 | 157 | // Leave the fifth row open |
pwilson39 | 0:62fc2a3fb443 | 158 | |
pwilson39 | 0:62fc2a3fb443 | 159 | // For sixth row, fill 2nd to end |
pwilson39 | 0:62fc2a3fb443 | 160 | for(int d = 0; d < 7; d++) { |
pwilson39 | 0:62fc2a3fb443 | 161 | if(d == 2) { |
pwilson39 | 0:62fc2a3fb443 | 162 | continue; |
pwilson39 | 0:62fc2a3fb443 | 163 | } |
pwilson39 | 0:62fc2a3fb443 | 164 | |
pwilson39 | 0:62fc2a3fb443 | 165 | grid_field[d][5] = 1; |
pwilson39 | 0:62fc2a3fb443 | 166 | } |
pwilson39 | 0:62fc2a3fb443 | 167 | } |
pwilson39 | 0:62fc2a3fb443 | 168 | |
pwilson39 | 0:62fc2a3fb443 | 169 | void createGrid3() |
pwilson39 | 0:62fc2a3fb443 | 170 | { |
pwilson39 | 0:62fc2a3fb443 | 171 | initGrid(); |
pwilson39 | 0:62fc2a3fb443 | 172 | |
pwilson39 | 0:62fc2a3fb443 | 173 | // For second, fill in all but the middle |
pwilson39 | 0:62fc2a3fb443 | 174 | for(int c = 0; c < 7; c++) { |
pwilson39 | 0:62fc2a3fb443 | 175 | if(c == 3) { |
pwilson39 | 0:62fc2a3fb443 | 176 | continue; |
pwilson39 | 0:62fc2a3fb443 | 177 | } |
pwilson39 | 0:62fc2a3fb443 | 178 | grid_field[c][1] = 1; |
pwilson39 | 0:62fc2a3fb443 | 179 | } |
pwilson39 | 0:62fc2a3fb443 | 180 | |
pwilson39 | 0:62fc2a3fb443 | 181 | //leave the 3rd row open |
pwilson39 | 0:62fc2a3fb443 | 182 | //Fourth row |
pwilson39 | 0:62fc2a3fb443 | 183 | for(int c = 0; c < 7; c++) { |
pwilson39 | 0:62fc2a3fb443 | 184 | if(c == 1 || c == 3 || c == 5) { |
pwilson39 | 0:62fc2a3fb443 | 185 | continue; |
pwilson39 | 0:62fc2a3fb443 | 186 | } |
pwilson39 | 0:62fc2a3fb443 | 187 | grid_field[c][3] = 1; |
pwilson39 | 0:62fc2a3fb443 | 188 | } |
pwilson39 | 0:62fc2a3fb443 | 189 | // Leave the fifth row open |
pwilson39 | 0:62fc2a3fb443 | 190 | |
pwilson39 | 0:62fc2a3fb443 | 191 | // For sixth row, fill 2nd to end |
pwilson39 | 0:62fc2a3fb443 | 192 | for(int d = 0; d < 7; d++) { |
pwilson39 | 0:62fc2a3fb443 | 193 | if(d == 2 || d == 3 || d == 4) { |
pwilson39 | 0:62fc2a3fb443 | 194 | continue; |
pwilson39 | 0:62fc2a3fb443 | 195 | } |
pwilson39 | 0:62fc2a3fb443 | 196 | |
pwilson39 | 0:62fc2a3fb443 | 197 | grid_field[d][5] = 1; |
pwilson39 | 0:62fc2a3fb443 | 198 | } |
pwilson39 | 0:62fc2a3fb443 | 199 | grid_field[3][4] = 1; |
pwilson39 | 0:62fc2a3fb443 | 200 | grid_field[3][6] = 1; |
pwilson39 | 0:62fc2a3fb443 | 201 | } |
pwilson39 | 0:62fc2a3fb443 | 202 | |
pwilson39 | 0:62fc2a3fb443 | 203 | void drawBorder() |
pwilson39 | 0:62fc2a3fb443 | 204 | { |
pwilson39 | 0:62fc2a3fb443 | 205 | for(int e = 0; e < 8; e++) { |
pwilson39 | 0:62fc2a3fb443 | 206 | for(int f = 0; f < 8; f++) { |
pwilson39 | 0:62fc2a3fb443 | 207 | if(grid_field[e][f] == 1) { |
pwilson39 | 0:62fc2a3fb443 | 208 | //Draw a filled square in the block using the values in the locations |
pwilson39 | 0:62fc2a3fb443 | 209 | uLCD.filled_rectangle(yLocs[e],yLocs[f], yLocs[e+1], yLocs[f+1], BLACK); |
pwilson39 | 0:62fc2a3fb443 | 210 | } |
pwilson39 | 0:62fc2a3fb443 | 211 | } |
pwilson39 | 0:62fc2a3fb443 | 212 | } |
pwilson39 | 0:62fc2a3fb443 | 213 | } |
pwilson39 | 0:62fc2a3fb443 | 214 | |
pwilson39 | 0:62fc2a3fb443 | 215 | void drawRoundInfo() |
pwilson39 | 0:62fc2a3fb443 | 216 | { |
pwilson39 | 0:62fc2a3fb443 | 217 | uLCD.locate(0,0); |
pwilson39 | 0:62fc2a3fb443 | 218 | uLCD.text_width(2); |
pwilson39 | 0:62fc2a3fb443 | 219 | uLCD.text_height(2); |
pwilson39 | 0:62fc2a3fb443 | 220 | if(round <= 3) { |
pwilson39 | 0:62fc2a3fb443 | 221 | uLCD.printf("Finished!\n"); |
pwilson39 | 0:62fc2a3fb443 | 222 | uLCD.printf("Next up, Round %d\n", round); |
pwilson39 | 0:62fc2a3fb443 | 223 | } else { |
pwilson39 | 0:62fc2a3fb443 | 224 | uLCD.printf("Game Over!"); |
pwilson39 | 0:62fc2a3fb443 | 225 | } |
pwilson39 | 0:62fc2a3fb443 | 226 | } |
pwilson39 | 0:62fc2a3fb443 | 227 | |
pwilson39 | 0:62fc2a3fb443 | 228 | void moveBall() |
pwilson39 | 0:62fc2a3fb443 | 229 | { |
pwilson39 | 0:62fc2a3fb443 | 230 | int posX = 0; |
pwilson39 | 0:62fc2a3fb443 | 231 | int posY = 0; |
pwilson39 | 0:62fc2a3fb443 | 232 | bool win = false; |
pwilson39 | 0:62fc2a3fb443 | 233 | bool movement = true; |
pwilson39 | 0:62fc2a3fb443 | 234 | int prevPosX = 0; |
pwilson39 | 0:62fc2a3fb443 | 235 | int prevPosY = 0; |
pwilson39 | 0:62fc2a3fb443 | 236 | int radius = 4; |
pwilson39 | 0:62fc2a3fb443 | 237 | int x, y, AnalogXReading, AnalogYReading; |
pwilson39 | 0:62fc2a3fb443 | 238 | |
pwilson39 | 0:62fc2a3fb443 | 239 | while(!win) { |
pwilson39 | 0:62fc2a3fb443 | 240 | AnalogXReading = AnalogX.read()*128; |
pwilson39 | 0:62fc2a3fb443 | 241 | AnalogYReading = AnalogY.read()*128; |
pwilson39 | 0:62fc2a3fb443 | 242 | |
pwilson39 | 0:62fc2a3fb443 | 243 | // Get reading |
pwilson39 | 0:62fc2a3fb443 | 244 | if(AnalogXReading > 118) { |
pwilson39 | 0:62fc2a3fb443 | 245 | if(posX > 0 && grid_field[posX-1][posY] == 0) { |
pwilson39 | 0:62fc2a3fb443 | 246 | posX--; |
pwilson39 | 0:62fc2a3fb443 | 247 | movement = true; |
pwilson39 | 0:62fc2a3fb443 | 248 | RGB_LED(0, 50, 0); |
pwilson39 | 0:62fc2a3fb443 | 249 | } else { |
pwilson39 | 0:62fc2a3fb443 | 250 | RGB_LED(50, 0, 0); |
pwilson39 | 0:62fc2a3fb443 | 251 | } |
pwilson39 | 0:62fc2a3fb443 | 252 | } |
pwilson39 | 0:62fc2a3fb443 | 253 | |
pwilson39 | 0:62fc2a3fb443 | 254 | if(AnalogXReading < 10 && grid_field[posX+1][posY] == 0) { |
pwilson39 | 0:62fc2a3fb443 | 255 | if(posX < 7) { |
pwilson39 | 0:62fc2a3fb443 | 256 | posX++; |
pwilson39 | 0:62fc2a3fb443 | 257 | movement = true; |
pwilson39 | 0:62fc2a3fb443 | 258 | RGB_LED(0, 50, 0); |
pwilson39 | 0:62fc2a3fb443 | 259 | } else { |
pwilson39 | 0:62fc2a3fb443 | 260 | RGB_LED(50, 0, 0); |
pwilson39 | 0:62fc2a3fb443 | 261 | } |
pwilson39 | 0:62fc2a3fb443 | 262 | } |
pwilson39 | 0:62fc2a3fb443 | 263 | |
pwilson39 | 0:62fc2a3fb443 | 264 | if(AnalogYReading > 118 && grid_field[posX][posY - 1] == 0) { |
pwilson39 | 0:62fc2a3fb443 | 265 | if(posY > 0) { |
pwilson39 | 0:62fc2a3fb443 | 266 | posY--; |
pwilson39 | 0:62fc2a3fb443 | 267 | movement = true; |
pwilson39 | 0:62fc2a3fb443 | 268 | RGB_LED(0, 50, 0); |
pwilson39 | 0:62fc2a3fb443 | 269 | } else { |
pwilson39 | 0:62fc2a3fb443 | 270 | RGB_LED(50, 0, 0); |
pwilson39 | 0:62fc2a3fb443 | 271 | } |
pwilson39 | 0:62fc2a3fb443 | 272 | } |
pwilson39 | 0:62fc2a3fb443 | 273 | if(AnalogYReading < 10 && grid_field[posX][posY + 1] == 0) { |
pwilson39 | 0:62fc2a3fb443 | 274 | if(posY < 7) { |
pwilson39 | 0:62fc2a3fb443 | 275 | posY++; |
pwilson39 | 0:62fc2a3fb443 | 276 | movement = true; |
pwilson39 | 0:62fc2a3fb443 | 277 | RGB_LED(0, 50, 0); |
pwilson39 | 0:62fc2a3fb443 | 278 | } else { |
pwilson39 | 0:62fc2a3fb443 | 279 | RGB_LED(50, 0, 0); |
pwilson39 | 0:62fc2a3fb443 | 280 | } |
pwilson39 | 0:62fc2a3fb443 | 281 | } |
pwilson39 | 0:62fc2a3fb443 | 282 | |
pwilson39 | 0:62fc2a3fb443 | 283 | // Redraw the ball |
pwilson39 | 0:62fc2a3fb443 | 284 | if(movement) { |
pwilson39 | 0:62fc2a3fb443 | 285 | x = (yLocs[prevPosX] + yLocs[prevPosX + 1]) / 2; |
pwilson39 | 0:62fc2a3fb443 | 286 | y = (yLocs[prevPosY] + yLocs[prevPosY + 1]) / 2; |
pwilson39 | 0:62fc2a3fb443 | 287 | uLCD.circle(x, y, radius, WHITE); |
pwilson39 | 0:62fc2a3fb443 | 288 | x = (yLocs[posX] + yLocs[posX + 1]) / 2; |
pwilson39 | 0:62fc2a3fb443 | 289 | y = (yLocs[posY] + yLocs[posY + 1]) / 2; |
pwilson39 | 0:62fc2a3fb443 | 290 | uLCD.circle(x, y, radius, BLUE); |
pwilson39 | 0:62fc2a3fb443 | 291 | prevPosX = posX; |
pwilson39 | 0:62fc2a3fb443 | 292 | prevPosY = posY; |
pwilson39 | 0:62fc2a3fb443 | 293 | movement = false; |
pwilson39 | 0:62fc2a3fb443 | 294 | } |
pwilson39 | 0:62fc2a3fb443 | 295 | wait(.2); |
pwilson39 | 0:62fc2a3fb443 | 296 | |
pwilson39 | 0:62fc2a3fb443 | 297 | if(posX == 6 && posY == 6) { |
pwilson39 | 0:62fc2a3fb443 | 298 | win = true; |
pwilson39 | 0:62fc2a3fb443 | 299 | } |
pwilson39 | 0:62fc2a3fb443 | 300 | } |
pwilson39 | 0:62fc2a3fb443 | 301 | } |
pwilson39 | 0:62fc2a3fb443 | 302 | |
pwilson39 | 0:62fc2a3fb443 | 303 | //Use SPI hardware to write color values to LED driver chip |
pwilson39 | 0:62fc2a3fb443 | 304 | void RGB_LED(int red, int green, int blue) |
pwilson39 | 0:62fc2a3fb443 | 305 | { |
pwilson39 | 0:62fc2a3fb443 | 306 | unsigned int low_color=0; |
pwilson39 | 0:62fc2a3fb443 | 307 | unsigned int high_color=0; |
pwilson39 | 0:62fc2a3fb443 | 308 | high_color=(blue<<4)|((red&0x3C0)>>6); |
pwilson39 | 0:62fc2a3fb443 | 309 | low_color=(((red&0x3F)<<10)|(green)); |
pwilson39 | 0:62fc2a3fb443 | 310 | spi.write(high_color); |
pwilson39 | 0:62fc2a3fb443 | 311 | spi.write(low_color); |
pwilson39 | 0:62fc2a3fb443 | 312 | latch=1; |
pwilson39 | 0:62fc2a3fb443 | 313 | latch=0; |
pwilson39 | 0:62fc2a3fb443 | 314 | } |