Sound update

Dependencies:   4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed

Committer:
jaybalar
Date:
Fri Dec 09 21:28:32 2022 +0000
Revision:
31:b08cc3c126d6
Parent:
30:4d8aa9229bdd
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jstephens78 0:da114b98e013 1 #include "mbed.h"
dangulo7 1:d8cc5013651e 2 #include "rtos.h"
jstephens78 12:5d913b57da7c 3
jstephens78 12:5d913b57da7c 4 #include "globals.h"
jstephens78 12:5d913b57da7c 5 #include "hockey.h"
jstephens78 20:73e4f12277bd 6 #include "tetris.h"
jstephens78 12:5d913b57da7c 7
jsanchez307 26:163d7ca8c42d 8 //#include "Speaker.h"
jstephens78 10:f5a84133bd65 9 #include "SDFileSystem.h"
dangulo7 1:d8cc5013651e 10 #include "uLCD_4DGL.h"
jstephens78 0:da114b98e013 11
jstephens78 20:73e4f12277bd 12
jaybalar 28:bccd14334bb9 13 #include "cylonbyc.h"
jaybalar 28:bccd14334bb9 14
jaybalar 28:bccd14334bb9 15 #define sample_freq 11025.0
jaybalar 28:bccd14334bb9 16
jstephens78 20:73e4f12277bd 17
jstephens78 20:73e4f12277bd 18 ///////////////////////////
jstephens78 20:73e4f12277bd 19 // GLOBALS.H DEFINITIONS //
jstephens78 20:73e4f12277bd 20 ///////////////////////////
jstephens78 20:73e4f12277bd 21 // The following variables are declared as extern in "globals.h", and we define
jstephens78 20:73e4f12277bd 22 // them here:
jstephens78 20:73e4f12277bd 23 volatile bool game1 = false;
jstephens78 20:73e4f12277bd 24 volatile bool game2 = false;
jsanchez307 26:163d7ca8c42d 25 volatile int menu_flag = 0;
jstephens78 20:73e4f12277bd 26
jstephens78 19:6d9bee043ede 27 Serial pc(USBTX, USBRX);
jstephens78 20:73e4f12277bd 28 Mutex pc_mutex;
jstephens78 20:73e4f12277bd 29
jstephens78 19:6d9bee043ede 30 //uLCD_4DGL uLCD(p28, p27, p29);
jsanchez307 23:214c0c828d98 31 uLCD_4DGL uLCD(p13,p14,p30);
jstephens78 17:3517251daf96 32 Mutex uLCD_mutex;
jstephens78 17:3517251daf96 33
jsanchez307 23:214c0c828d98 34 BluefruitController blue(p28,p27);
jsanchez307 23:214c0c828d98 35 //BusIn navSwitch(p15, p16, p17, p19, p20);
jsanchez307 23:214c0c828d98 36 Nav_Switch myNav(p20, p16, p17, p15, p19); // pins(up, down, left, right, fire)
jstephens78 16:6cf744b2623a 37
jstephens78 20:73e4f12277bd 38 SDFileSystem sd(p5, p6, p7, p8, "sd");
jstephens78 16:6cf744b2623a 39 PwmOut Rgb(p23);
jstephens78 16:6cf744b2623a 40 PwmOut rGb(p24);
jstephens78 16:6cf744b2623a 41 PwmOut rgB(p25);
jaybalar 28:bccd14334bb9 42
jaybalar 28:bccd14334bb9 43 Ticker sampletick;
jaybalar 28:bccd14334bb9 44 AnalogOut speaker(p18);
jaybalar 28:bccd14334bb9 45 //Speaker DACout(p18);
jsanchez307 26:163d7ca8c42d 46 //wave_player waver(&DACout);
jstephens78 12:5d913b57da7c 47
jstephens78 0:da114b98e013 48
jstephens78 20:73e4f12277bd 49 ////////////////////////////////
jstephens78 20:73e4f12277bd 50 // MAIN.CPP LOCAL DEFINITIONS //
jstephens78 20:73e4f12277bd 51 ////////////////////////////////
jstephens78 20:73e4f12277bd 52 // The following variables are *not* from "globals.h" and are not meant for
jstephens78 20:73e4f12277bd 53 // reference outside of main.cpp
jstephens78 21:df9e8f45e14c 54 DigitalOut led1(LED1);
jstephens78 21:df9e8f45e14c 55 DigitalOut led2(LED2);
jstephens78 21:df9e8f45e14c 56 DigitalOut led3(LED3);
jstephens78 21:df9e8f45e14c 57 DigitalOut led4(LED4);
jstephens78 20:73e4f12277bd 58
jstephens78 20:73e4f12277bd 59
jstephens78 20:73e4f12277bd 60
jstephens78 20:73e4f12277bd 61 //////////////////////
jstephens78 20:73e4f12277bd 62 // MAIN.CPP THREADS //
jstephens78 20:73e4f12277bd 63 //////////////////////
jaybalar 28:bccd14334bb9 64 int i = 0;
jaybalar 28:bccd14334bb9 65 int j = 0;
jaybalar 28:bccd14334bb9 66 int k = 0;
jaybalar 28:bccd14334bb9 67 void audio_sample ()
jaybalar 28:bccd14334bb9 68 {
jaybalar 28:bccd14334bb9 69 if (game1) {
jaybalar 28:bccd14334bb9 70 speaker.write_u16(tetris[i]);
jaybalar 28:bccd14334bb9 71 i++;
jaybalar 28:bccd14334bb9 72 }
jaybalar 30:4d8aa9229bdd 73 if (game2) {
jaybalar 28:bccd14334bb9 74 speaker.write_u16(air_hockey[j]);
jaybalar 28:bccd14334bb9 75 j++;
jaybalar 28:bccd14334bb9 76 }
jaybalar 30:4d8aa9229bdd 77 if (!game1 && !game2) {
jaybalar 28:bccd14334bb9 78 speaker.write_u16(mii_menu[k]);
jaybalar 28:bccd14334bb9 79 k++;
jaybalar 28:bccd14334bb9 80 }
jaybalar 30:4d8aa9229bdd 81 if (k>= 71904) {
jaybalar 28:bccd14334bb9 82 k = 0;
jaybalar 28:bccd14334bb9 83 }
jaybalar 28:bccd14334bb9 84 if (i>= 72584) {
jaybalar 28:bccd14334bb9 85 i = 0;
jaybalar 28:bccd14334bb9 86 }
jaybalar 28:bccd14334bb9 87 if (j>= 72488) {
jaybalar 28:bccd14334bb9 88 j = 0;
jaybalar 28:bccd14334bb9 89 }
jaybalar 28:bccd14334bb9 90 }
jaybalar 27:a09981ebd532 91
jstephens78 20:73e4f12277bd 92 void audioThread()
jstephens78 11:e00a208bd85a 93 {
jstephens78 21:df9e8f45e14c 94 while (true) {
jaybalar 27:a09981ebd532 95 //FILE *wave_file;
jstephens78 21:df9e8f45e14c 96 while (game1 == false && game2 == false) {
jaybalar 28:bccd14334bb9 97 sampletick.attach(&audio_sample, 1.0 / sample_freq);
jaybalar 28:bccd14334bb9 98 //DACout.PlayNote(369.99, 0.4, 1);
jaybalar 28:bccd14334bb9 99 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 100 // DACout.PlayNote(466.16, 0.2, 1);
jaybalar 28:bccd14334bb9 101 // DACout.PlayNote(554.37, 0.2, 1);
jaybalar 28:bccd14334bb9 102 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 103 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 104 // DACout.PlayNote(466.16, 0.4, 1);
jaybalar 28:bccd14334bb9 105 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 106 // DACout.PlayNote(369.99, 0.4, 1);
jaybalar 28:bccd14334bb9 107 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 108 // DACout.PlayNote(293.66, 0.2, 1);
jaybalar 28:bccd14334bb9 109 // DACout.PlayNote(293.66, 0.2, 1);
jaybalar 28:bccd14334bb9 110 // DACout.PlayNote(293.66, 0.2, 1);
jaybalar 28:bccd14334bb9 111 // DACout.PlayNote(0, 0.8, 1);
jaybalar 28:bccd14334bb9 112 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 113 // DACout.PlayNote(277.18, 0.4, 1);
jaybalar 28:bccd14334bb9 114 // DACout.PlayNote(293.66, 0.2, 1);
jaybalar 28:bccd14334bb9 115 // DACout.PlayNote(369.99, 0.2, 1);
jaybalar 28:bccd14334bb9 116 // DACout.PlayNote(466.16, 0.2, 1);
jaybalar 28:bccd14334bb9 117 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 118 // DACout.PlayNote(554.37, 0.2, 1);
jaybalar 28:bccd14334bb9 119 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 120 // DACout.PlayNote(466.16, 0.4, 1);
jaybalar 28:bccd14334bb9 121 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 122 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 123 // DACout.PlayNote(369.99, 0.4, 1);
jaybalar 28:bccd14334bb9 124 // DACout.PlayNote(659.25, 0.4, 1);
jaybalar 28:bccd14334bb9 125 // DACout.PlayNote(622.25, 0.4, 1);
jaybalar 28:bccd14334bb9 126 // DACout.PlayNote(587.33, 0.4, 1);
jaybalar 28:bccd14334bb9 127 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 128 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 129 //
jaybalar 28:bccd14334bb9 130 //
jaybalar 28:bccd14334bb9 131 //
jaybalar 28:bccd14334bb9 132 // DACout.PlayNote(392.00, 0.4, 1);
jaybalar 28:bccd14334bb9 133 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 134 // DACout.PlayNote(554.37, 0.2, 1);
jaybalar 28:bccd14334bb9 135 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 136 // DACout.PlayNote(369.99, 0.2, 1);
jaybalar 28:bccd14334bb9 137 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 138 // DACout.PlayNote(554.37, 0.4, 1);
jaybalar 28:bccd14334bb9 139 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 140 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 141 // DACout.PlayNote(329.00, 0.4, 1);
jaybalar 28:bccd14334bb9 142 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 143 // DACout.PlayNote(523.25, 0.4, 1);
jaybalar 28:bccd14334bb9 144 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 145 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 146 // DACout.PlayNote(329.00, 0.4, 1);
jaybalar 28:bccd14334bb9 147 // DACout.PlayNote(369.99, 0.4, 1);
jaybalar 28:bccd14334bb9 148 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 149 // DACout.PlayNote(329.63, 0.4, 1);
jaybalar 28:bccd14334bb9 150 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 151 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 152 // DACout.PlayNote(277.18, 0.2, 1);
jaybalar 28:bccd14334bb9 153 // DACout.PlayNote(277.18, 0.2, 1);
jaybalar 28:bccd14334bb9 154 // DACout.PlayNote(277.18, 0.2, 1);
jaybalar 28:bccd14334bb9 155 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 156 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 157 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 158 // DACout.PlayNote(277.18, 0.2, 1);
jaybalar 28:bccd14334bb9 159 // DACout.PlayNote(277.18, 0.2, 1);
jaybalar 28:bccd14334bb9 160 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 161 // DACout.PlayNote(277.18, 0.4, 1);
jaybalar 28:bccd14334bb9 162 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 163 // DACout.PlayNote(0, 0.4, 1);
jaybalar 28:bccd14334bb9 164 // DACout.PlayNote(311.13, 0.4, 1);
jaybalar 28:bccd14334bb9 165 // if(game1 == true || game2 == true) break;
jaybalar 28:bccd14334bb9 166 // DACout.PlayNote(293.66, 0.4, 1);
jaybalar 27:a09981ebd532 167
jaybalar 27:a09981ebd532 168 /*led2 = true;
jstephens78 21:df9e8f45e14c 169 wave_file=fopen("/sd/MiiMenu.wav","r");
jaybalar 27:a09981ebd532 170 PRINTF("Opening");
jstephens78 21:df9e8f45e14c 171 waver.play(wave_file);
jstephens78 21:df9e8f45e14c 172 fclose(wave_file);
jaybalar 27:a09981ebd532 173 led2 = false;*/
jstephens78 21:df9e8f45e14c 174 }
jstephens78 21:df9e8f45e14c 175 while (game1 == true && game2 == false) {
jaybalar 31:b08cc3c126d6 176 sampletick.attach(&audio_sample, 1.0 / sample_freq);
jaybalar 28:bccd14334bb9 177 //DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 178 // DACout.PlayNote(493.88, 0.3, 1);
jaybalar 28:bccd14334bb9 179 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 180 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 181 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 182 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 183 // DACout.PlayNote(493.88, 0.3, 1);
jaybalar 28:bccd14334bb9 184 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 28:bccd14334bb9 185 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 186 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 28:bccd14334bb9 187 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 188 // DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 189 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 190 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 191 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 192 // DACout.PlayNote(493.88, 0.3, 1);
jaybalar 28:bccd14334bb9 193 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 194 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 195 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 196 // DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 197 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 198 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 28:bccd14334bb9 199 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 28:bccd14334bb9 200 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 201 //
jaybalar 28:bccd14334bb9 202 // DACout.PlayNote(583.33, 0.3, 1);
jaybalar 28:bccd14334bb9 203 // DACout.PlayNote(698.46, 0.3, 1);
jaybalar 28:bccd14334bb9 204 // DACout.PlayNote(880.00, 0.3, 1);
jaybalar 28:bccd14334bb9 205 // DACout.PlayNote(783.99, 0.3, 1);
jaybalar 28:bccd14334bb9 206 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 207 // DACout.PlayNote(698.46, 0.3, 1);
jaybalar 28:bccd14334bb9 208 // DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 209 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 210 // DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 211 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 212 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 213 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 214 // DACout.PlayNote(493.88, 0.3, 1);
jaybalar 28:bccd14334bb9 215 // DACout.PlayNote(493.88, 0.3, 1);
jaybalar 28:bccd14334bb9 216 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 217 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 218 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 219 // DACout.PlayNote(659.25, 0.3, 1);
jaybalar 28:bccd14334bb9 220 // DACout.PlayNote(523.35, 0.3, 1);
jaybalar 28:bccd14334bb9 221 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 222 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 28:bccd14334bb9 223 // DACout.PlayNote(440.00, 0.3, 1);
jaybalar 27:a09981ebd532 224 /* led2 = true;
jstephens78 21:df9e8f45e14c 225 wave_file=fopen("/sd/tetris.wav","r");
jstephens78 21:df9e8f45e14c 226 waver.play(wave_file);
jstephens78 21:df9e8f45e14c 227 fclose(wave_file);
jaybalar 27:a09981ebd532 228 led2 = false;*/
jstephens78 21:df9e8f45e14c 229 }
jstephens78 21:df9e8f45e14c 230 while (game2 == true && game1 == false) {
jaybalar 31:b08cc3c126d6 231 sampletick.attach(&audio_sample, 1.0 / sample_freq);
jaybalar 28:bccd14334bb9 232 //DACout.PlayNote(329.63, 0.6, 1);
jaybalar 28:bccd14334bb9 233 // DACout.PlayNote(349.23, 0.6, 1);
jaybalar 28:bccd14334bb9 234 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 235 // DACout.PlayNote(523.25, 0.15, 1);
jaybalar 28:bccd14334bb9 236 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 237 // DACout.PlayNote(493.88, 0.15, 1);
jaybalar 28:bccd14334bb9 238 // DACout.PlayNote(523.25, 0.15, 1);
jaybalar 28:bccd14334bb9 239 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 240 // DACout.PlayNote(329.63, 0.15, 1);
jaybalar 28:bccd14334bb9 241 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 242 // DACout.PlayNote(261.63, 0.15, 1);
jaybalar 28:bccd14334bb9 243 // DACout.PlayNote(293.66, 0.15, 1);
jaybalar 28:bccd14334bb9 244 // DACout.PlayNote(329.33, 0.15, 1);
jaybalar 28:bccd14334bb9 245 // DACout.PlayNote(293.66, 0.6, 1);
jaybalar 28:bccd14334bb9 246 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 247 // DACout.PlayNote(293.66, 1.2, 1);
jaybalar 28:bccd14334bb9 248 // DACout.PlayNote(329.63, 0.6, 1);
jaybalar 28:bccd14334bb9 249 // DACout.PlayNote(349.23, 0.3, 1);
jaybalar 28:bccd14334bb9 250 // DACout.PlayNote(329.63, 0.15, 1);
jaybalar 28:bccd14334bb9 251 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 252 // DACout.PlayNote(349.23, 0.15, 1);
jaybalar 28:bccd14334bb9 253 //
jaybalar 28:bccd14334bb9 254 //
jaybalar 28:bccd14334bb9 255 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 256 // DACout.PlayNote(523.25, 0.15, 1);
jaybalar 28:bccd14334bb9 257 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 258 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 259 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 260 // DACout.PlayNote(587.33, 0.1, 1);
jaybalar 28:bccd14334bb9 261 // DACout.PlayNote(659.25, 0.1, 1);
jaybalar 28:bccd14334bb9 262 // DACout.PlayNote(698.46, 0.15, 1);
jaybalar 28:bccd14334bb9 263 // DACout.PlayNote(659.25, 0.15, 1);
jaybalar 28:bccd14334bb9 264 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 265 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 266 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 267 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 268 // DACout.PlayNote(440.00, 0.15, 1);
jaybalar 28:bccd14334bb9 269 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 270 // DACout.PlayNote(440.00, 0.15, 1);
jaybalar 28:bccd14334bb9 271 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 272 // DACout.PlayNote(587.33, 0.1, 1);
jaybalar 28:bccd14334bb9 273 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 274 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 275 // DACout.PlayNote(587.33, 0.1, 1);
jaybalar 28:bccd14334bb9 276 // DACout.PlayNote(659.25, 0.1, 1);
jaybalar 28:bccd14334bb9 277 // DACout.PlayNote(698.46, 0.15, 1);
jaybalar 28:bccd14334bb9 278 // DACout.PlayNote(659.25, 0.15, 1);
jaybalar 28:bccd14334bb9 279 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 280 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 281 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 282 // DACout.PlayNote(392.00, 0.3, 1);
jaybalar 28:bccd14334bb9 283 // DACout.PlayNote(392.00, 0.6, 1);
jaybalar 28:bccd14334bb9 284 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 285 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 286 // DACout.PlayNote(587.33, 0.1, 1);
jaybalar 28:bccd14334bb9 287 // DACout.PlayNote(659.25, 0.1, 1);
jaybalar 28:bccd14334bb9 288 // DACout.PlayNote(698.46, 0.15, 1);
jaybalar 28:bccd14334bb9 289 // DACout.PlayNote(659.25, 0.15, 1);
jaybalar 28:bccd14334bb9 290 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 291 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 292 // DACout.PlayNote(523.25, 0.3, 1);
jaybalar 28:bccd14334bb9 293 // DACout.PlayNote(783.99, 0.3, 1);
jaybalar 28:bccd14334bb9 294 // DACout.PlayNote(783.99, 0.6, 1);
jaybalar 28:bccd14334bb9 295 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 296 // DACout.PlayNote(783.99, 0.15, 1);
jaybalar 28:bccd14334bb9 297 // DACout.PlayNote(783.99, 0.1, 1);
jaybalar 28:bccd14334bb9 298 // DACout.PlayNote(880.00, 0.1, 1);
jaybalar 28:bccd14334bb9 299 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 300 // DACout.PlayNote(932.33, 0.15, 1);
jaybalar 28:bccd14334bb9 301 // DACout.PlayNote(880.00, 0.15, 1);
jaybalar 28:bccd14334bb9 302 // DACout.PlayNote(783.99, 0.15, 1);
jaybalar 28:bccd14334bb9 303 // DACout.PlayNote(698.46, 0.6, 1);
jaybalar 28:bccd14334bb9 304 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 305 // DACout.PlayNote(830.61, 0.15, 1);
jaybalar 28:bccd14334bb9 306 // DACout.PlayNote(783.99, 0.15, 1);
jaybalar 28:bccd14334bb9 307 // DACout.PlayNote(698.46, 0.15, 1);
jaybalar 28:bccd14334bb9 308 // DACout.PlayNote(622.25, 0.3, 1);
jaybalar 28:bccd14334bb9 309 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 310 // DACout.PlayNote(739.99, 0.15, 1);
jaybalar 28:bccd14334bb9 311 // DACout.PlayNote(698.46, 0.1, 1);
jaybalar 28:bccd14334bb9 312 // DACout.PlayNote(698.46, 0.15, 1);
jaybalar 28:bccd14334bb9 313 // DACout.PlayNote(622.25, 0.15, 1);
jaybalar 28:bccd14334bb9 314 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 315 // DACout.PlayNote(554.37, 0.15, 1);
jaybalar 28:bccd14334bb9 316 // DACout.PlayNote(415.30, 0.15, 1);
jaybalar 28:bccd14334bb9 317 // DACout.PlayNote(349.23, 0.15, 1);
jaybalar 28:bccd14334bb9 318 // DACout.PlayNote(277.18, 0.15, 1);
jaybalar 28:bccd14334bb9 319 // DACout.PlayNote(311.13, 0.3, 1);
jaybalar 28:bccd14334bb9 320 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 321 // DACout.PlayNote(554.37, 0.3, 1);
jaybalar 28:bccd14334bb9 322 // DACout.PlayNote(587.33, 0.6, 1);
jaybalar 28:bccd14334bb9 323 // DACout.PlayNote(587.33, 0.6, 1);
jaybalar 28:bccd14334bb9 324 // DACout.PlayNote(587.33, 0.15, 1);
jaybalar 28:bccd14334bb9 325 // DACout.PlayNote(392.00, 0.15, 1);
jaybalar 28:bccd14334bb9 326 // if(game1 != true && game2 == false) break;
jaybalar 28:bccd14334bb9 327 // DACout.PlayNote(587.33, 0.3, 1);
jaybalar 28:bccd14334bb9 328 // DACout.PlayNote(783.99, 0.3, 1);
jaybalar 28:bccd14334bb9 329 // DACout.PlayNote(783.99, 0.6, 1);
jaybalar 28:bccd14334bb9 330 // DACout.PlayNote(783.99, 1.2, 1);
jaybalar 28:bccd14334bb9 331 // if(game1 != true && game2 == false) break;
jaybalar 27:a09981ebd532 332 /*led2 = true;
jstephens78 21:df9e8f45e14c 333 wave_file=fopen("/sd/WiiPlayAirHockey.wav","r");
jstephens78 21:df9e8f45e14c 334 waver.play(wave_file);
jstephens78 21:df9e8f45e14c 335 fclose(wave_file);
jaybalar 27:a09981ebd532 336 led2 = false;*/
jstephens78 21:df9e8f45e14c 337 }
dangulo7 1:d8cc5013651e 338 }
jaybalar 27:a09981ebd532 339 }
dangulo7 1:d8cc5013651e 340
jstephens78 20:73e4f12277bd 341 void ledThread()
jstephens78 11:e00a208bd85a 342 {
jstephens78 11:e00a208bd85a 343 float x = 0.0;
dangulo7 1:d8cc5013651e 344 while(1) {
jaybalar 28:bccd14334bb9 345 if (!game1 && !game2) {
jaybalar 28:bccd14334bb9 346 //get a new random number for PWM
jaybalar 28:bccd14334bb9 347 x = rand() / float(RAND_MAX);
jaybalar 28:bccd14334bb9 348 //add some exponential brightness scaling
jaybalar 28:bccd14334bb9 349 //for more of a fast flash effect
jaybalar 28:bccd14334bb9 350 x = x*x*x;
jaybalar 28:bccd14334bb9 351 Rgb = x;
jaybalar 28:bccd14334bb9 352 rGb = x;
jaybalar 28:bccd14334bb9 353 rgB = x;
jaybalar 28:bccd14334bb9 354 //fast update rate for welding flashes
jaybalar 28:bccd14334bb9 355 Thread::wait(20);
jaybalar 28:bccd14334bb9 356 //add a random pause between welds
jaybalar 28:bccd14334bb9 357 if (rand() / float(RAND_MAX) > 0.95) {
jaybalar 28:bccd14334bb9 358 Rgb = 0;
jaybalar 28:bccd14334bb9 359 rGb = 0;
jaybalar 28:bccd14334bb9 360 rgB = 0;
jaybalar 28:bccd14334bb9 361 Thread::wait(4000.0 * rand() / float(RAND_MAX));
jaybalar 28:bccd14334bb9 362 }
jaybalar 28:bccd14334bb9 363 }
jaybalar 28:bccd14334bb9 364 else if (game1) {
jaybalar 28:bccd14334bb9 365
dangulo7 1:d8cc5013651e 366 }
jstephens78 11:e00a208bd85a 367 }
dangulo7 1:d8cc5013651e 368 }
jstephens78 16:6cf744b2623a 369
jstephens78 11:e00a208bd85a 370 int main()
jstephens78 11:e00a208bd85a 371 {
jstephens78 20:73e4f12277bd 372 // Launch four threads
jstephens78 20:73e4f12277bd 373 Thread thread1(tetrisGame, osPriorityHigh);
jstephens78 20:73e4f12277bd 374 Thread thread2(hockeyGame, osPriorityHigh);
jaybalar 27:a09981ebd532 375 Thread thread3(audioThread, osPriorityLow);
jstephens78 20:73e4f12277bd 376 Thread thread4(ledThread, osPriorityLow);
jsanchez307 26:163d7ca8c42d 377
jstephens78 20:73e4f12277bd 378 // The main thread goes on to blink LEDs
jaybalar 27:a09981ebd532 379 //Speaker mySpeaker(p18);
jaybalar 27:a09981ebd532 380 // loops forever playing two notes on speaker using analog samples
jaybalar 27:a09981ebd532 381 //PRINTF("test");
jaybalar 27:a09981ebd532 382 // while(1) {
jaybalar 27:a09981ebd532 383 // //mySpeaker.PlayNote(969.0, 0.5, 1.0);
jaybalar 27:a09981ebd532 384 //// mySpeaker.PlayNote(800.0, 0.5, 1.0);
jaybalar 27:a09981ebd532 385 // //PRINTF("loop");
jaybalar 27:a09981ebd532 386 // }
jstephens78 12:5d913b57da7c 387 while (true) {
jstephens78 21:df9e8f45e14c 388 led1 = 1;
jstephens78 12:5d913b57da7c 389 Thread::wait(500);
jstephens78 21:df9e8f45e14c 390 led1 = 0;
jstephens78 12:5d913b57da7c 391 Thread::wait(500);
jsanchez307 26:163d7ca8c42d 392 if(!game1 && !game2 && menu_flag==0){
jsanchez307 26:163d7ca8c42d 393 uLCD.cls();
dangulo7 24:3b29ae4d6171 394 uLCD.color(WHITE);
dangulo7 25:c3eb6c1a2dfb 395 uLCD.text_height(2);
dangulo7 25:c3eb6c1a2dfb 396 uLCD.text_width(2);
dangulo7 25:c3eb6c1a2dfb 397 uLCD.locate(2,0);
dangulo7 25:c3eb6c1a2dfb 398 uLCD.printf("MENU:\n");
dangulo7 24:3b29ae4d6171 399 uLCD.printf("UP:\n");
dangulo7 24:3b29ae4d6171 400 uLCD.printf("Tetris \n");
dangulo7 24:3b29ae4d6171 401 uLCD.printf("\n");
dangulo7 24:3b29ae4d6171 402 uLCD.printf("DOWN:\n");
dangulo7 24:3b29ae4d6171 403 uLCD.printf("Air\n");
dangulo7 24:3b29ae4d6171 404 uLCD.printf("Hockey");
jsanchez307 26:163d7ca8c42d 405 menu_flag=1;
dangulo7 24:3b29ae4d6171 406 }
jstephens78 20:73e4f12277bd 407
jsanchez307 26:163d7ca8c42d 408 //DACout.PlayNote(50, 1.0/2.5, 0.08);
jsanchez307 26:163d7ca8c42d 409
jstephens78 20:73e4f12277bd 410 PRINTF("[MAIN] Thread stacks: %lu %lu %lu %lu\r\n",
jstephens78 20:73e4f12277bd 411 thread1.used_stack(),
jstephens78 20:73e4f12277bd 412 thread2.used_stack(),
jaybalar 27:a09981ebd532 413 thread3.used_stack(),
jstephens78 20:73e4f12277bd 414 thread4.used_stack());
jstephens78 20:73e4f12277bd 415
jstephens78 20:73e4f12277bd 416 // Launch into the air hockey game
jsanchez307 26:163d7ca8c42d 417 if (game1 != true && game2 != true && myNav.up()){
dangulo7 24:3b29ae4d6171 418 uLCD.cls();
dangulo7 24:3b29ae4d6171 419 game1 = true;
dangulo7 24:3b29ae4d6171 420 }
jsanchez307 26:163d7ca8c42d 421 if (game2 != true && game1 != true && myNav.down()){
dangulo7 24:3b29ae4d6171 422 uLCD.cls();
dangulo7 24:3b29ae4d6171 423 game2 = true;
dangulo7 24:3b29ae4d6171 424 }
jstephens78 0:da114b98e013 425 }
jstephens78 0:da114b98e013 426 }