James Cummins / Mbed 2 deprecated el17jnc

Dependencies:   mbed

Committer:
JamesCummins
Date:
Mon Apr 08 12:45:44 2019 +0000
Revision:
8:4e306b16a941
Parent:
7:6eb9cade57ab
Child:
9:ce0a12fb205b
Menu working correctly (calibrated compared to few mins ago)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JamesCummins 0:7c96d84b673e 1 /*
JamesCummins 0:7c96d84b673e 2 ELEC2645 Embedded Systems Project
JamesCummins 0:7c96d84b673e 3 School of Electronic & Electrical Engineering
JamesCummins 0:7c96d84b673e 4 University of Leeds
JamesCummins 0:7c96d84b673e 5 Name: James Nathan Cummins
JamesCummins 0:7c96d84b673e 6 Username: el17jnc
JamesCummins 0:7c96d84b673e 7 Student ID Number: 201096364
JamesCummins 0:7c96d84b673e 8 Date: 22/03/19
JamesCummins 0:7c96d84b673e 9 */
JamesCummins 0:7c96d84b673e 10
JamesCummins 0:7c96d84b673e 11 #include "Gamepad.h"
JamesCummins 0:7c96d84b673e 12 #include "mbed.h"
JamesCummins 1:99d524f81566 13 #include "N5110.h"
JamesCummins 0:7c96d84b673e 14
JamesCummins 6:952ac12c7f00 15 Gamepad gamepad;
JamesCummins 0:7c96d84b673e 16 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
JamesCummins 7:6eb9cade57ab 17 void startscreen();
JamesCummins 7:6eb9cade57ab 18 int menu();
JamesCummins 0:7c96d84b673e 19
JamesCummins 8:4e306b16a941 20
JamesCummins 8:4e306b16a941 21 ////////////////Main Command///////////////////
JamesCummins 8:4e306b16a941 22
JamesCummins 8:4e306b16a941 23
JamesCummins 0:7c96d84b673e 24 int main(){
JamesCummins 6:952ac12c7f00 25 gamepad.init();
JamesCummins 0:7c96d84b673e 26 lcd.init();
JamesCummins 4:2f01b85e57f9 27 wait(1);
JamesCummins 7:6eb9cade57ab 28 startscreen();
JamesCummins 7:6eb9cade57ab 29 int choice_selected = menu();
JamesCummins 0:7c96d84b673e 30 }
JamesCummins 8:4e306b16a941 31
JamesCummins 8:4e306b16a941 32
JamesCummins 8:4e306b16a941 33 //////////////Start up functions///////////////////
JamesCummins 8:4e306b16a941 34
JamesCummins 0:7c96d84b673e 35
JamesCummins 7:6eb9cade57ab 36 void startscreen() {
JamesCummins 1:99d524f81566 37 lcd.clear();
JamesCummins 5:7e8f5fad7b6b 38 char gamename[] = {'L', 'A', 'B', 'Y', 'R', 'I', 'N', 'T', 'H', ' ', ' ', '\0'};
JamesCummins 3:f2e5ffd2b94c 39 int i = 0;
JamesCummins 5:7e8f5fad7b6b 40 for(int a = 0; a < 35; a++){
JamesCummins 4:2f01b85e57f9 41 lcd.clear();
JamesCummins 4:2f01b85e57f9 42 lcd.drawCircle(24+2*a, 21, 3, FILL_BLACK);
JamesCummins 4:2f01b85e57f9 43 for (i = 0; i < a/3; i++) {
JamesCummins 4:2f01b85e57f9 44 lcd.printChar(gamename[i], 15+i*6, 2);
JamesCummins 4:2f01b85e57f9 45 lcd.refresh();
JamesCummins 4:2f01b85e57f9 46 }
JamesCummins 7:6eb9cade57ab 47 wait_ms(50);
JamesCummins 4:2f01b85e57f9 48 }
JamesCummins 5:7e8f5fad7b6b 49 lcd.printString("Press start", 9, 4);
JamesCummins 5:7e8f5fad7b6b 50 lcd.printString("to play >", 15, 5);
JamesCummins 6:952ac12c7f00 51 lcd.refresh();
JamesCummins 6:952ac12c7f00 52 bool advance = false;
JamesCummins 6:952ac12c7f00 53 while (!advance){
JamesCummins 6:952ac12c7f00 54 if (gamepad.check_event(gamepad.START_PRESSED)){
JamesCummins 6:952ac12c7f00 55 lcd.clear();
JamesCummins 6:952ac12c7f00 56 lcd.refresh();
JamesCummins 6:952ac12c7f00 57 advance = true;
JamesCummins 6:952ac12c7f00 58 }
JamesCummins 6:952ac12c7f00 59 else { advance = false; }
JamesCummins 6:952ac12c7f00 60 }
JamesCummins 0:7c96d84b673e 61 }
JamesCummins 7:6eb9cade57ab 62
JamesCummins 7:6eb9cade57ab 63 int menu(){
JamesCummins 7:6eb9cade57ab 64 struct Selection{
JamesCummins 7:6eb9cade57ab 65 int output;
JamesCummins 7:6eb9cade57ab 66 int next_state[3];
JamesCummins 7:6eb9cade57ab 67 };
JamesCummins 7:6eb9cade57ab 68
JamesCummins 7:6eb9cade57ab 69 Selection fsm[3] = {
JamesCummins 7:6eb9cade57ab 70 {0,{2,1,0}},
JamesCummins 7:6eb9cade57ab 71 {2,{0,2,1}},
JamesCummins 7:6eb9cade57ab 72 {4,{1,0,2}}
JamesCummins 7:6eb9cade57ab 73 };
JamesCummins 7:6eb9cade57ab 74 int state = 0; //start with the arrow on the top option
JamesCummins 7:6eb9cade57ab 75 int next = 2; //next_state = 2 so that by default it doesn't change arrow position
JamesCummins 7:6eb9cade57ab 76 while(!gamepad.check_event(gamepad.A_PRESSED)){
JamesCummins 7:6eb9cade57ab 77 state = fsm[state].next_state[next];
JamesCummins 7:6eb9cade57ab 78 lcd.clear();
JamesCummins 7:6eb9cade57ab 79 if(gamepad.get_direction() == N){ next = 0;}
JamesCummins 7:6eb9cade57ab 80 else if(gamepad.get_direction() == S){ next = 1;}
JamesCummins 7:6eb9cade57ab 81 else {next = 2;}
JamesCummins 7:6eb9cade57ab 82
JamesCummins 7:6eb9cade57ab 83 lcd.printString(">", 0, fsm[state].output);
JamesCummins 7:6eb9cade57ab 84 lcd.printString("Classic", 36, 0);
JamesCummins 7:6eb9cade57ab 85 lcd.printString("BrickBreak", 18, 2);
JamesCummins 7:6eb9cade57ab 86 lcd.printString("Options", 36, 4);
JamesCummins 7:6eb9cade57ab 87 lcd.printString("(Click A)", 30, 5);
JamesCummins 7:6eb9cade57ab 88 lcd.refresh();
JamesCummins 7:6eb9cade57ab 89 wait(0.25);
JamesCummins 7:6eb9cade57ab 90 }
JamesCummins 7:6eb9cade57ab 91 lcd.clear();
JamesCummins 7:6eb9cade57ab 92 lcd.refresh();
JamesCummins 7:6eb9cade57ab 93 return state;
JamesCummins 7:6eb9cade57ab 94 }