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.
Dependencies: mbed N5110 ShiftReg PinDetect
main.cpp@0:1f92de30d43e, 2015-04-26 (annotated)
- Committer:
- Siriagus
- Date:
- Sun Apr 26 17:20:09 2015 +0000
- Revision:
- 0:1f92de30d43e
- Child:
- 1:0cfe2255092a
Added Joystick support.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Siriagus | 0:1f92de30d43e | 1 | /** |
Siriagus | 0:1f92de30d43e | 2 | @brief Simple platform game developed for ELEC2645 Embedded Systems Project at University of Leeds |
Siriagus | 0:1f92de30d43e | 3 | |
Siriagus | 0:1f92de30d43e | 4 | @author Andreas Garmannslund |
Siriagus | 0:1f92de30d43e | 5 | **/ |
Siriagus | 0:1f92de30d43e | 6 | |
Siriagus | 0:1f92de30d43e | 7 | #include "mbed.h" |
Siriagus | 0:1f92de30d43e | 8 | #include "N5110.h" |
Siriagus | 0:1f92de30d43e | 9 | #include "Joystick.h" |
Siriagus | 0:1f92de30d43e | 10 | #include "map.h" |
Siriagus | 0:1f92de30d43e | 11 | #include <ctime> |
Siriagus | 0:1f92de30d43e | 12 | |
Siriagus | 0:1f92de30d43e | 13 | // Components |
Siriagus | 0:1f92de30d43e | 14 | N5110 *lcd; // VCC, SCE, RST, D/C, MOSI, SCLK and LED |
Siriagus | 0:1f92de30d43e | 15 | Joystick *joystick; |
Siriagus | 0:1f92de30d43e | 16 | |
Siriagus | 0:1f92de30d43e | 17 | // Brightness potentiometer |
Siriagus | 0:1f92de30d43e | 18 | AnalogIn ledPot(p20); |
Siriagus | 0:1f92de30d43e | 19 | |
Siriagus | 0:1f92de30d43e | 20 | // Buttons |
Siriagus | 0:1f92de30d43e | 21 | DigitalIn btnA(p27); |
Siriagus | 0:1f92de30d43e | 22 | DigitalIn btnB(p28); |
Siriagus | 0:1f92de30d43e | 23 | DigitalIn btnC(p29); |
Siriagus | 0:1f92de30d43e | 24 | |
Siriagus | 0:1f92de30d43e | 25 | // Debugging |
Siriagus | 0:1f92de30d43e | 26 | Serial pc(USBTX, USBRX); |
Siriagus | 0:1f92de30d43e | 27 | BusOut leds(LED1, LED2, LED3, LED4); |
Siriagus | 0:1f92de30d43e | 28 | |
Siriagus | 0:1f92de30d43e | 29 | // @brief Clears the screen and fill it with the static map layout. |
Siriagus | 0:1f92de30d43e | 30 | void clearAndRedrawMap() |
Siriagus | 0:1f92de30d43e | 31 | { |
Siriagus | 0:1f92de30d43e | 32 | for (int i = 0; i < BANKS; ++i) |
Siriagus | 0:1f92de30d43e | 33 | { |
Siriagus | 0:1f92de30d43e | 34 | for (int j = 0; j < WIDTH; ++j) |
Siriagus | 0:1f92de30d43e | 35 | { |
Siriagus | 0:1f92de30d43e | 36 | lcd->buffer[j][i] = map[i][j]; |
Siriagus | 0:1f92de30d43e | 37 | } |
Siriagus | 0:1f92de30d43e | 38 | } |
Siriagus | 0:1f92de30d43e | 39 | lcd->refresh(); |
Siriagus | 0:1f92de30d43e | 40 | } |
Siriagus | 0:1f92de30d43e | 41 | |
Siriagus | 0:1f92de30d43e | 42 | int main() |
Siriagus | 0:1f92de30d43e | 43 | { |
Siriagus | 0:1f92de30d43e | 44 | // Init LCD |
Siriagus | 0:1f92de30d43e | 45 | lcd = new N5110(p7, p8, p9, p10, p11, p13, p26); |
Siriagus | 0:1f92de30d43e | 46 | lcd->init(); |
Siriagus | 0:1f92de30d43e | 47 | lcd->normalMode(); |
Siriagus | 0:1f92de30d43e | 48 | lcd->setBrightness(1.0 - ledPot); // Update brightness of screen |
Siriagus | 0:1f92de30d43e | 49 | |
Siriagus | 0:1f92de30d43e | 50 | // Init joystick |
Siriagus | 0:1f92de30d43e | 51 | joystick = new Joystick(p17, p16, p15); |
Siriagus | 0:1f92de30d43e | 52 | joystick->calibrate(); |
Siriagus | 0:1f92de30d43e | 53 | |
Siriagus | 0:1f92de30d43e | 54 | // Game loop |
Siriagus | 0:1f92de30d43e | 55 | while(true) |
Siriagus | 0:1f92de30d43e | 56 | { |
Siriagus | 0:1f92de30d43e | 57 | clearAndRedrawMap(); |
Siriagus | 0:1f92de30d43e | 58 | |
Siriagus | 0:1f92de30d43e | 59 | joystick->update(); |
Siriagus | 0:1f92de30d43e | 60 | pc.printf("Joystick direction: %d\n", joystick->getDirection()); |
Siriagus | 0:1f92de30d43e | 61 | |
Siriagus | 0:1f92de30d43e | 62 | lcd->setBrightness(1.0 - ledPot); // Update brightness of screen |
Siriagus | 0:1f92de30d43e | 63 | |
Siriagus | 0:1f92de30d43e | 64 | wait (0.1); |
Siriagus | 0:1f92de30d43e | 65 | } |
Siriagus | 0:1f92de30d43e | 66 | |
Siriagus | 0:1f92de30d43e | 67 | delete lcd; |
Siriagus | 0:1f92de30d43e | 68 | delete joystick; |
Siriagus | 0:1f92de30d43e | 69 | |
Siriagus | 0:1f92de30d43e | 70 | return 0; |
Siriagus | 0:1f92de30d43e | 71 | } |
Siriagus | 0:1f92de30d43e | 72 |