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
- Committer:
- Siriagus
- Date:
- 2015-05-01
- Revision:
- 6:edb48de563a9
- Parent:
- 5:100d960fc6d5
- Child:
- 7:678873947b29
File content as of revision 6:edb48de563a9:
/** @brief Simple platform game developed for ELEC2645 Embedded Systems Project at University of Leeds @author Andreas Garmannslund **/ #include "mbed.h" #include "N5110.h" #include "PowerControl.h" #include "PinDetect.h" #include <string> #include <ctime> #include "Joystick.h" #include "StateManager.h" #include "State.h" #include "images.h" #include "InputManager.h" // Redefine pin names for simple access. #define JOY_H p17 #define JOY_V p16 #define JOY_BTN p15 #define LED_POT p20 #define BUTTON_A p28 #define BUTTON_B p27 #define BUTTON_C p29 // Input and Output N5110 *lcd; // VCC, SCE, RST, D/C, MOSI, SCLK and LED InputManager *input; // Brightness potentiometer AnalogIn ledPot(LED_POT); // Debugging Serial pc(USBTX, USBRX); BusOut leds(LED1, LED2, LED3, LED4); // @brief Clears the screen and fill it with the image in the argument. void clearAndDrawImage(const int img[BANKS][WIDTH]) { for (int i = 0; i < BANKS; ++i) { for (int j = 0; j < WIDTH; ++j) { lcd->buffer[j][i] = img[i][j]; } } lcd->refresh(); } // States void init(); void cleanUp(); StateManager* fsm; int main() { init(); time_t dt = time(NULL); while(true) { input->joystick->update(); lcd->setBrightness(1.0 - ledPot); // Update brightness of screen // update fsm->update(dt); // render lcd->clear(); fsm->render(); lcd->refresh(); Sleep(); } cleanUp(); return 0; } void ledToggle() { leds[0] = !leds[0]; } int ctr = 0; void ledToggle4() {leds[3] = !leds[3];} void ledToggle2() { leds[1] = !leds[1]; if (++ctr > 4) input->addBtnPressInterrupt(input->btnB, ledToggle4); } void ledToggle3() {leds[2] = !leds[2];} void init() { // Init LCD lcd = new N5110(p7, p8, p9, p10, p11, p13, p26); lcd->init(); lcd->normalMode(); lcd->setBrightness(1.0 - ledPot); // Update brightness of screen // Input input = new InputManager(BUTTON_A, BUTTON_B, BUTTON_C, JOY_V, JOY_H, JOY_BTN); //input->addBtnPressInterrupt(input->btnA, ledToggle); // input->addBtnPressInterrupt(input->btnB, ledToggle2); //input->addBtnPressInterrupt(input->btnC, ledToggle3); fsm = new StateManager(lcd, input); fsm->changeState(MAIN_MENU); } void cleanUp() { delete lcd; delete input; }