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