Power Grid Board Game Timer. Acts like a chess timer for 3-6 people. Uses an ADXL accelerometer to pause the timer and change players. Uses an LCD screen to prompt the players for input, read that input, and change between rounds.

Dependencies:   DmTouch_UniGraphic UniGraphic-forLdelaney17FinalProject mbed

Committer:
ldelaney17
Date:
Wed Jan 25 10:03:52 2017 +0000
Revision:
4:e14c199c2466
Parent:
3:22c644f16365
everything except the sound works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ldelaney17 0:1abea3982908 1 #include "mbed.h"
ldelaney17 0:1abea3982908 2 #include "acc.h"
ldelaney17 1:ba0f395e8c11 3 #include "display.h"
ldelaney17 1:ba0f395e8c11 4 #include "DmTouch.h"
ldelaney17 1:ba0f395e8c11 5 #include "lcd_prompts.h"
ldelaney17 2:e6788e73de54 6 #include "game.h"
ldelaney17 1:ba0f395e8c11 7 #include <sstream>
ldelaney17 4:e14c199c2466 8 #include "Song.h"
ldelaney17 1:ba0f395e8c11 9
ldelaney17 0:1abea3982908 10 DigitalOut gpo(D0);
ldelaney17 0:1abea3982908 11 DigitalOut led(LED_RED);
ldelaney17 0:1abea3982908 12 DigitalOut led_blue(LED_BLUE);
ldelaney17 4:e14c199c2466 13 DigitalOut led_green(LED_GREEN);
ldelaney17 0:1abea3982908 14 I2C connection(D14, D15);
ldelaney17 0:1abea3982908 15 InterruptIn acc_int(D8);
ldelaney17 1:ba0f395e8c11 16 PinName dataBus[] = {PTC16, PTC17, PTB9, PTA1, PTB23, PTA2, PTC2, PTC3};
ldelaney17 1:ba0f395e8c11 17 ILI932x myLCD(BUS_8, dataBus, PTB18, PTB19, PTC1, PTC8, PTC9, "myLCD", 240, 320);
ldelaney17 1:ba0f395e8c11 18 DmTouch touch(DmTouch::DM_TFT24_104, PTD2, PTD3, PTD1, PTC0, PTC7);
ldelaney17 4:e14c199c2466 19 PwmOut myBuzzer(A5);
ldelaney17 4:e14c199c2466 20
ldelaney17 1:ba0f395e8c11 21 Timeout read_again;
ldelaney17 1:ba0f395e8c11 22 int num_choices_global;
ldelaney17 1:ba0f395e8c11 23 int prompt_input_val;
ldelaney17 1:ba0f395e8c11 24 Serial pc(USBTX, USBRX);
ldelaney17 1:ba0f395e8c11 25 bool waiting_for_touch;
ldelaney17 2:e6788e73de54 26 int num_players;
ldelaney17 2:e6788e73de54 27 int current_player;
ldelaney17 4:e14c199c2466 28 int current_player_index;
ldelaney17 2:e6788e73de54 29 Timer current_clock;
ldelaney17 2:e6788e73de54 30 vector<float> player_timers;
ldelaney17 2:e6788e73de54 31 vector<int> player_order;
ldelaney17 4:e14c199c2466 32 float bonus_time;
ldelaney17 4:e14c199c2466 33 Timeout time_before_warning;
ldelaney17 4:e14c199c2466 34 Timeout time_after_warning;
ldelaney17 4:e14c199c2466 35 Song * jeopardy, * scale, * beep;
ldelaney17 4:e14c199c2466 36 Timeout note_duration;
ldelaney17 4:e14c199c2466 37 bool clock_running;
ldelaney17 4:e14c199c2466 38 int step_number;
ldelaney17 1:ba0f395e8c11 39
ldelaney17 1:ba0f395e8c11 40 void setup();
ldelaney17 0:1abea3982908 41
ldelaney17 0:1abea3982908 42 int main()
ldelaney17 0:1abea3982908 43 {
ldelaney17 1:ba0f395e8c11 44 setup();
ldelaney17 4:e14c199c2466 45 pc.printf("completed setup\r\n");
ldelaney17 4:e14c199c2466 46 //jeopardy->play();
ldelaney17 1:ba0f395e8c11 47 int n;
ldelaney17 0:1abea3982908 48 while (true) {
ldelaney17 4:e14c199c2466 49 display_timer();
ldelaney17 1:ba0f395e8c11 50 if (waiting_for_touch == false){
ldelaney17 4:e14c199c2466 51 //the only time we hit this point in main is while waiting for the next step
ldelaney17 4:e14c199c2466 52 next_step(); //next_step will take care of pausing the timers
ldelaney17 1:ba0f395e8c11 53 }
ldelaney17 1:ba0f395e8c11 54 else {//waiting_for_touch is true
ldelaney17 4:e14c199c2466 55 //pc.printf("waiting for x\r\n"); //used for debugging
ldelaney17 1:ba0f395e8c11 56 }
ldelaney17 0:1abea3982908 57 led = !led; // toggle led
ldelaney17 0:1abea3982908 58 if (acc_int){
ldelaney17 0:1abea3982908 59 int buf = get_int_type();
ldelaney17 3:22c644f16365 60 if (buf == 1){
ldelaney17 4:e14c199c2466 61 toggle_pause();
ldelaney17 4:e14c199c2466 62 led_green = !led_green;
ldelaney17 3:22c644f16365 63 }
ldelaney17 3:22c644f16365 64 else if (buf == 2){
ldelaney17 4:e14c199c2466 65 next_player();
ldelaney17 4:e14c199c2466 66 display_timer();
ldelaney17 4:e14c199c2466 67 led_blue = !led_blue;
ldelaney17 3:22c644f16365 68 }
ldelaney17 0:1abea3982908 69 }
ldelaney17 0:1abea3982908 70 wait(0.2f);
ldelaney17 1:ba0f395e8c11 71 pc.printf("completed a loop through main \r\n");
ldelaney17 1:ba0f395e8c11 72 wait(0.2f);
ldelaney17 0:1abea3982908 73 }
ldelaney17 1:ba0f395e8c11 74 }
ldelaney17 1:ba0f395e8c11 75
ldelaney17 1:ba0f395e8c11 76 void setup(){
ldelaney17 1:ba0f395e8c11 77 acc_init( 10 , 0.5 , 6 , 318.75 );
ldelaney17 1:ba0f395e8c11 78 led_blue = 1;
ldelaney17 4:e14c199c2466 79 led_green = 1;
ldelaney17 1:ba0f395e8c11 80 touch.init();
ldelaney17 1:ba0f395e8c11 81 touch.setOrientation(3);
ldelaney17 1:ba0f395e8c11 82 display_init();
ldelaney17 1:ba0f395e8c11 83 prompt_init();
ldelaney17 1:ba0f395e8c11 84 waiting_for_touch = false;
ldelaney17 2:e6788e73de54 85 game_setup();
ldelaney17 0:1abea3982908 86 }