AirsoftTimer software based on mbed

Dependencies:   mbed TextLCD keypad

Committer:
sillevl
Date:
Wed Dec 31 15:27:43 2014 +0000
Revision:
11:50572814f73e
Child:
12:22e9ef610ea2
ShowBuzzer;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sillevl 11:50572814f73e 1
sillevl 11:50572814f73e 2 #include "ShowBuzzer.h"
sillevl 11:50572814f73e 3
sillevl 11:50572814f73e 4
sillevl 11:50572814f73e 5 static const char* NAME = "ShowBuzzer";
sillevl 11:50572814f73e 6
sillevl 11:50572814f73e 7 ShowBuzzer::ShowBuzzer(Board* board) : Game(board){
sillevl 11:50572814f73e 8 board->keyboard->attach(this,&ShowBuzzer::keyPressed);
sillevl 11:50572814f73e 9 board->keyboard->start();
sillevl 11:50572814f73e 10 board->leds->off(Leds::ALL);
sillevl 11:50572814f73e 11 }
sillevl 11:50572814f73e 12
sillevl 11:50572814f73e 13 void ShowBuzzer::run(){
sillevl 11:50572814f73e 14 board->lcd->printf("ShowBuzzer");
sillevl 11:50572814f73e 15 newRound();
sillevl 11:50572814f73e 16 while(true){
sillevl 11:50572814f73e 17
sillevl 11:50572814f73e 18 //wait for button press
sillevl 11:50572814f73e 19 Team team = waitForButtonPress();
sillevl 11:50572814f73e 20 //show leds
sillevl 11:50572814f73e 21 setLeds(team);
sillevl 11:50572814f73e 22 //show display
sillevl 11:50572814f73e 23 setDisplay(team);
sillevl 11:50572814f73e 24 //play sound
sillevl 11:50572814f73e 25 playSound();
sillevl 11:50572814f73e 26 //wait for 3 seconds
sillevl 11:50572814f73e 27 wait_ms(5000);
sillevl 11:50572814f73e 28 //start new round
sillevl 11:50572814f73e 29 newRound();
sillevl 11:50572814f73e 30
sillevl 11:50572814f73e 31 // don't return from this function yet (only if the game ends);
sillevl 11:50572814f73e 32 }
sillevl 11:50572814f73e 33 }
sillevl 11:50572814f73e 34
sillevl 11:50572814f73e 35 void ShowBuzzer::newRound(){
sillevl 11:50572814f73e 36 board->buzzer->playNote(200,50);
sillevl 11:50572814f73e 37 board->leds->off(Leds::ALL);
sillevl 11:50572814f73e 38 board->lcd->cls();
sillevl 11:50572814f73e 39 board->lcd->printf("*** WAITING ***");
sillevl 11:50572814f73e 40 }
sillevl 11:50572814f73e 41
sillevl 11:50572814f73e 42 ShowBuzzer::Team ShowBuzzer::waitForButtonPress(){
sillevl 11:50572814f73e 43 Team team;
sillevl 11:50572814f73e 44 while(true){
sillevl 11:50572814f73e 45 if(board->button->read() == 0){
sillevl 11:50572814f73e 46 team = TEAM_B;
sillevl 11:50572814f73e 47 break;
sillevl 11:50572814f73e 48 }
sillevl 11:50572814f73e 49 if(board->key->read() == 0){
sillevl 11:50572814f73e 50 team = TEAM_A;
sillevl 11:50572814f73e 51 break;
sillevl 11:50572814f73e 52 }
sillevl 11:50572814f73e 53 }
sillevl 11:50572814f73e 54 return team;
sillevl 11:50572814f73e 55 }
sillevl 11:50572814f73e 56
sillevl 11:50572814f73e 57 void ShowBuzzer::setLeds(Team team){
sillevl 11:50572814f73e 58 switch(team){
sillevl 11:50572814f73e 59 case TEAM_A:
sillevl 11:50572814f73e 60 board->leds->on(Leds::LEFT);
sillevl 11:50572814f73e 61 break;
sillevl 11:50572814f73e 62 case TEAM_B:
sillevl 11:50572814f73e 63 board->leds->on(Leds::RIGHT);
sillevl 11:50572814f73e 64 break;
sillevl 11:50572814f73e 65 default:
sillevl 11:50572814f73e 66 break;
sillevl 11:50572814f73e 67 }
sillevl 11:50572814f73e 68 }
sillevl 11:50572814f73e 69
sillevl 11:50572814f73e 70 void ShowBuzzer::setDisplay(Team team){
sillevl 11:50572814f73e 71 board->lcd->locate(0,0);
sillevl 11:50572814f73e 72 board->lcd->cls();
sillevl 11:50572814f73e 73 switch(team){
sillevl 11:50572814f73e 74 case TEAM_A:
sillevl 11:50572814f73e 75 board->lcd->printf("Team A");
sillevl 11:50572814f73e 76 break;
sillevl 11:50572814f73e 77 case TEAM_B:
sillevl 11:50572814f73e 78 board->lcd->printf("Team B");
sillevl 11:50572814f73e 79 break;
sillevl 11:50572814f73e 80 default:
sillevl 11:50572814f73e 81 break;
sillevl 11:50572814f73e 82 }
sillevl 11:50572814f73e 83 }
sillevl 11:50572814f73e 84
sillevl 11:50572814f73e 85 void ShowBuzzer::playSound(){
sillevl 11:50572814f73e 86 board->buzzer->playNote(698, 50);
sillevl 11:50572814f73e 87 board->buzzer->playNote(783, 50);
sillevl 11:50572814f73e 88 board->buzzer->playNote(880, 50);
sillevl 11:50572814f73e 89 board->buzzer->playNote(987, 50);
sillevl 11:50572814f73e 90 board->buzzer->playNote(1108, 50);
sillevl 11:50572814f73e 91 board->buzzer->playNote(1244, 50);
sillevl 11:50572814f73e 92 board->buzzer->playNote(1396, 50);
sillevl 11:50572814f73e 93 board->buzzer->playNote(1567, 50);
sillevl 11:50572814f73e 94 board->buzzer->playNote(1760, 50);
sillevl 11:50572814f73e 95 board->buzzer->playNote(1975, 50);
sillevl 11:50572814f73e 96 }
sillevl 11:50572814f73e 97
sillevl 11:50572814f73e 98 void ShowBuzzer::playCorrect(){
sillevl 11:50572814f73e 99 board->buzzer->playNote(2093, 100);
sillevl 11:50572814f73e 100 board->buzzer->playNote(2637, 100);
sillevl 11:50572814f73e 101 board->buzzer->playNote(3165, 100);
sillevl 11:50572814f73e 102 board->buzzer->playNote(3951, 100);
sillevl 11:50572814f73e 103 }
sillevl 11:50572814f73e 104
sillevl 11:50572814f73e 105 void ShowBuzzer::playWrong(){
sillevl 11:50572814f73e 106 board->buzzer->playNote(440, 1000);
sillevl 11:50572814f73e 107 }
sillevl 11:50572814f73e 108
sillevl 11:50572814f73e 109 uint32_t ShowBuzzer::keyPressed(uint32_t key){
sillevl 11:50572814f73e 110 if(key == 11){ playCorrect();}
sillevl 11:50572814f73e 111 if(key == 9){ playWrong();}
sillevl 11:50572814f73e 112 return 0;
sillevl 11:50572814f73e 113 }
sillevl 11:50572814f73e 114
sillevl 11:50572814f73e 115
sillevl 11:50572814f73e 116
sillevl 11:50572814f73e 117
sillevl 11:50572814f73e 118
sillevl 11:50572814f73e 119