Sound update
Dependencies: 4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed
Diff: main.cpp
- Revision:
- 20:73e4f12277bd
- Parent:
- 19:6d9bee043ede
- Child:
- 21:df9e8f45e14c
--- a/main.cpp Sun Dec 04 23:31:28 2022 +0000 +++ b/main.cpp Mon Dec 05 20:51:36 2022 +0000 @@ -3,12 +3,25 @@ #include "globals.h" #include "hockey.h" +#include "tetris.h" //#include "Speaker.h" #include "SDFileSystem.h" #include "uLCD_4DGL.h" + + +/////////////////////////// +// GLOBALS.H DEFINITIONS // +/////////////////////////// +// The following variables are declared as extern in "globals.h", and we define +// them here: +volatile bool game1 = false; +volatile bool game2 = false; + Serial pc(USBTX, USBRX); +Mutex pc_mutex; + //uLCD_4DGL uLCD(p28, p27, p29); uLCD_4DGL uLCD(p9,p10,p30); Mutex uLCD_mutex; @@ -16,22 +29,32 @@ BluefruitController blue(p13,p14); BusIn navSwitch(p15, p16, p17, p18, p19); -SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board - -DigitalOut myled(LED1); -//AnalogOut DACout(p20); +SDFileSystem sd(p5, p6, p7, p8, "sd"); PwmOut Rgb(p23); PwmOut rGb(p24); PwmOut rgB(p25); PwmOut PWMout(p21); +//AnalogOut DACout(p20); //wave_player waver(&DACout); -volatile bool game1 = false; -volatile bool game2 = false; -/* -void thread3(void const *argument) + +//////////////////////////////// +// MAIN.CPP LOCAL DEFINITIONS // +//////////////////////////////// +// The following variables are *not* from "globals.h" and are not meant for +// reference outside of main.cpp +DigitalOut myled(LED1); + + + +////////////////////// +// MAIN.CPP THREADS // +////////////////////// +void audioThread() { + while(true) Thread::wait(1000); + /* FILE *wave_file; PWMout.period(1.0/400000.0); while (game1 == false && game2 == false) { @@ -49,12 +72,11 @@ waver.play(wave_file); fclose(wave_file); } + */ } -*/ -void thread4(void const *argument) +void ledThread() { - /* float x = 0.0; while(1) { //get a new random number for PWM @@ -75,21 +97,30 @@ Thread::wait(4000.0 * rand() / float(RAND_MAX)); } } - */ } int main() { - printf("Starting thread 2\r\n"); - game2 = true; - Thread thread2(hockeyGame); - //Thread thread3(thread3); -// Thread thread4(thread4); + // Launch four threads + Thread thread1(tetrisGame, osPriorityHigh); + Thread thread2(hockeyGame, osPriorityHigh); + Thread thread3(audioThread, osPriorityLow); + Thread thread4(ledThread, osPriorityLow); + // The main thread goes on to blink LEDs while (true) { myled = 1; Thread::wait(500); myled = 0; Thread::wait(500); + + PRINTF("[MAIN] Thread stacks: %lu %lu %lu %lu\r\n", + thread1.used_stack(), + thread2.used_stack(), + thread3.used_stack(), + thread4.used_stack()); + + // Launch into the air hockey game + if (game2 != true) game2 = true; } }