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 wave_player mbed-rtos 4180Final SDFileSystem
play.cpp@2:6a29bd55d023, 2020-04-26 (annotated)
- Committer:
- William12
- Date:
- Sun Apr 26 19:18:46 2020 +0000
- Revision:
- 2:6a29bd55d023
- Child:
- 3:927028389e55
included play code
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| William12 | 2:6a29bd55d023 | 1 | #include "mbed.h" |
| William12 | 2:6a29bd55d023 | 2 | #include "uLCD_4DGL.h" |
| William12 | 2:6a29bd55d023 | 3 | #include "Nav_Switch.h" |
| William12 | 2:6a29bd55d023 | 4 | //#include "SDFileSystem.h" |
| William12 | 2:6a29bd55d023 | 5 | #include "microphone.h" |
| William12 | 2:6a29bd55d023 | 6 | //#include "rtos.h" |
| William12 | 2:6a29bd55d023 | 7 | |
| William12 | 2:6a29bd55d023 | 8 | Nav_Switch myNav(p9, p6, p7, p5, p8); //pin order on Sparkfun breakout |
| William12 | 2:6a29bd55d023 | 9 | uLCD_4DGL uLCD(p28, p27, p30); // serial tx, serial rx, reset pin; |
| William12 | 2:6a29bd55d023 | 10 | PwmOut myled(LED1); |
| William12 | 2:6a29bd55d023 | 11 | //SDFileSystem sd(p11, p12, p13, p10, "sd"); |
| William12 | 2:6a29bd55d023 | 12 | microphone mymic1(p15); |
| William12 | 2:6a29bd55d023 | 13 | AnalogIn pot(p16); |
| William12 | 2:6a29bd55d023 | 14 | |
| William12 | 2:6a29bd55d023 | 15 | int rounds = 3; |
| William12 | 2:6a29bd55d023 | 16 | int round_time = 15; //seconds |
| William12 | 2:6a29bd55d023 | 17 | int curRound = 1; |
| William12 | 2:6a29bd55d023 | 18 | int score1 = 0; |
| William12 | 2:6a29bd55d023 | 19 | int score2 = 0; |
| William12 | 2:6a29bd55d023 | 20 | int scores1[7] = {0}; |
| William12 | 2:6a29bd55d023 | 21 | int scores2[7] = {0}; |
| William12 | 2:6a29bd55d023 | 22 | int curTime = 0; |
| William12 | 2:6a29bd55d023 | 23 | int wonRnds1 = 0; |
| William12 | 2:6a29bd55d023 | 24 | int wonRnds2 = 0; |
| William12 | 2:6a29bd55d023 | 25 | int highScoresArr[10] = {100, 90, 83, 73, 64, 54, 44, 34, 24, 14}; |
| William12 | 2:6a29bd55d023 | 26 | int s = 0; |
| William12 | 2:6a29bd55d023 | 27 | int timer = 0; |
| William12 | 2:6a29bd55d023 | 28 | int tick = 0; |
| William12 | 2:6a29bd55d023 | 29 | |
| William12 | 2:6a29bd55d023 | 30 | Timer play_time; |
| William12 | 2:6a29bd55d023 | 31 | |
| William12 | 2:6a29bd55d023 | 32 | |
| William12 | 2:6a29bd55d023 | 33 | void play_draw(){ |
| William12 | 2:6a29bd55d023 | 34 | uLCD.background_color(GREEN); |
| William12 | 2:6a29bd55d023 | 35 | uLCD.cls(); |
| William12 | 2:6a29bd55d023 | 36 | uLCD.filled_rectangle(0, 0, 200, 15, RED); |
| William12 | 2:6a29bd55d023 | 37 | // header |
| William12 | 2:6a29bd55d023 | 38 | uLCD.color(BLACK); |
| William12 | 2:6a29bd55d023 | 39 | uLCD.locate(5,0); |
| William12 | 2:6a29bd55d023 | 40 | uLCD.text_height(2); |
| William12 | 2:6a29bd55d023 | 41 | uLCD.text_width(2); |
| William12 | 2:6a29bd55d023 | 42 | uLCD.textbackground_color(RED); |
| William12 | 2:6a29bd55d023 | 43 | uLCD.printf("PLAY"); |
| William12 | 2:6a29bd55d023 | 44 | uLCD.text_height(1); |
| William12 | 2:6a29bd55d023 | 45 | uLCD.text_width(1); |
| William12 | 2:6a29bd55d023 | 46 | uLCD.locate(14,1); |
| William12 | 2:6a29bd55d023 | 47 | uLCD.printf("Rnd%1d", curRound); |
| William12 | 2:6a29bd55d023 | 48 | // Scores headers |
| William12 | 2:6a29bd55d023 | 49 | uLCD.textbackground_color(GREEN); |
| William12 | 2:6a29bd55d023 | 50 | uLCD.color(BLUE); |
| William12 | 2:6a29bd55d023 | 51 | uLCD.locate(5,3); |
| William12 | 2:6a29bd55d023 | 52 | uLCD.printf("Player 1:"); |
| William12 | 2:6a29bd55d023 | 53 | uLCD.color(PURPLE); |
| William12 | 2:6a29bd55d023 | 54 | uLCD.locate(5,11); |
| William12 | 2:6a29bd55d023 | 55 | uLCD.printf("Player 2:"); |
| William12 | 2:6a29bd55d023 | 56 | // Scores |
| William12 | 2:6a29bd55d023 | 57 | uLCD.text_height(4); |
| William12 | 2:6a29bd55d023 | 58 | uLCD.text_width(4); |
| William12 | 2:6a29bd55d023 | 59 | |
| William12 | 2:6a29bd55d023 | 60 | } |
| William12 | 2:6a29bd55d023 | 61 | |
| William12 | 2:6a29bd55d023 | 62 | void update_LEDS |
| William12 | 2:6a29bd55d023 | 63 | |
| William12 | 2:6a29bd55d023 | 64 | void play() { |
| William12 | 2:6a29bd55d023 | 65 | play_draw(); |
| William12 | 2:6a29bd55d023 | 66 | play_time.reset(); |
| William12 | 2:6a29bd55d023 | 67 | play_time.start(); |
| William12 | 2:6a29bd55d023 | 68 | while (play_time.read() < round_time*1000) { |
| William12 | 2:6a29bd55d023 | 69 | if (myNav.fire()) { //open pause menu |
| William12 | 2:6a29bd55d023 | 70 | uLCD.filled_rectangle(60, 68, 65, 82, GREEN); //the pause draw functions shoudl be contained within pause |
| William12 | 2:6a29bd55d023 | 71 | uLCD.filled_rectangle(70, 68, 75, 82, GREEN); |
| William12 | 2:6a29bd55d023 | 72 | wait(.1); |
| William12 | 2:6a29bd55d023 | 73 | //pause(); |
| William12 | 2:6a29bd55d023 | 74 | } |
| William12 | 2:6a29bd55d023 | 75 | |
| William12 | 2:6a29bd55d023 | 76 | if (int(play_time.read()) % 8 == 0) { //Use an 8kHz audio sample rate (phone quality audio); |
| William12 | 2:6a29bd55d023 | 77 | tick = get_sound(); // this should be added to every iter |
| William12 | 2:6a29bd55d023 | 78 | score1 += tick; |
| William12 | 2:6a29bd55d023 | 79 | //score2 = curTime+2000; |
| William12 | 2:6a29bd55d023 | 80 | |
| William12 | 2:6a29bd55d023 | 81 | ///DRAWS SCORES ON SCREEN |
| William12 | 2:6a29bd55d023 | 82 | uLCD.color(BLUE); |
| William12 | 2:6a29bd55d023 | 83 | uLCD.locate(0,1); |
| William12 | 2:6a29bd55d023 | 84 | uLCD.printf("%4d", tick); |
| William12 | 2:6a29bd55d023 | 85 | uLCD.color(PURPLE); |
| William12 | 2:6a29bd55d023 | 86 | uLCD.locate(0,3); |
| William12 | 2:6a29bd55d023 | 87 | uLCD.printf("%4d", score1); |
| William12 | 2:6a29bd55d023 | 88 | |
| William12 | 2:6a29bd55d023 | 89 | /* |
| William12 | 2:6a29bd55d023 | 90 | // Time bar |
| William12 | 2:6a29bd55d023 | 91 | double roundTime = 15.0; // in secs |
| William12 | 2:6a29bd55d023 | 92 | int length = (int) ( (double)curTime / roundTime * 127.0); |
| William12 | 2:6a29bd55d023 | 93 | uLCD.filled_rectangle(0, 65, length, 85, DGREEN); |
| William12 | 2:6a29bd55d023 | 94 | if (length >= 127) { |
| William12 | 2:6a29bd55d023 | 95 | nextRound(); |
| William12 | 2:6a29bd55d023 | 96 | } |
| William12 | 2:6a29bd55d023 | 97 | curTime++; |
| William12 | 2:6a29bd55d023 | 98 | */ |
| William12 | 2:6a29bd55d023 | 99 | } |
| William12 | 2:6a29bd55d023 | 100 | timer++; |
| William12 | 2:6a29bd55d023 | 101 | } |
| William12 | 2:6a29bd55d023 | 102 | } |
| William12 | 2:6a29bd55d023 | 103 | |
| William12 | 2:6a29bd55d023 | 104 | int main() |
| William12 | 2:6a29bd55d023 | 105 | { |
| William12 | 2:6a29bd55d023 | 106 | play(); |
| William12 | 2:6a29bd55d023 | 107 | } |