Lab3Part4
Dependencies: mbed mbed-rtos wave_player_appbd 4DGL-uLCD-SE SDFileSystem
main.cpp
- Committer:
- TCNoodleshop
- Date:
- 2019-10-07
- Revision:
- 5:471ccc07dbaf
- Parent:
- 4:79863d2ea5a0
File content as of revision 5:471ccc07dbaf:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" #include "SDFileSystem.h" #include "wave_player.h" #include "string.h" uLCD_4DGL uLCD(p9, p10, p11); // serial tx, serial rx, reset pin; SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card PwmOut Red(p21); PwmOut Green(p22); PwmOut Blue(p23); Serial pc(USBTX,USBRX); //Analog Out Jack AnalogOut DACout(p18); //On Board Speaker PwmOut PWMout(p26); wave_player waver(&DACout,&PWMout); // mutex to make the lcd lib thread safe Mutex lcd_mutex; // Thread 1 // Increments counter on screen void thread1(void const *args) { int i = 0; while(true) { // thread loop pc.printf("Thread 1\n\r"); lcd_mutex.lock(); uLCD.locate(1,2); uLCD.printf("%2D",i); lcd_mutex.unlock(); i++; Thread::wait(1000); // wait 1 s } } // Thread 2 // Plays tick sound void thread2(void const *args) { FILE *wave_file=fopen("/sd/mydir/sample.wav","r"); while(true) { // thread loop pc.printf("Thread 2\n\r"); waver.play(wave_file); Thread::wait(1000); // wait 1s } } // Thread 3 // Flashes led between red and blue void thread3(void const *args) { bool flag = 0; while(true) { // main is the next thread pc.printf("Thread 3\n\r"); flag = !flag; if(flag == 0) // make led red { Red = 1; Green = 0; Blue = 0; } else // make led blue { Red = 0; Green = 0; Blue = 1; } Thread::wait(500); // wait 0.5 } } int main() { bool flag = 0; Thread t1(thread1); //start thread1 //Thread t2(thread2); //start thread2 Thread t3(thread3); //start thread3 // Flashes screen background between red and blue while(true) { // main is the next thread pc.printf("Thread 4"); lcd_mutex.lock(); flag = !flag; if(flag == 0) { uLCD.filled_circle(120, 60, 10, RED); } else { uLCD.filled_circle(120, 60, 10, BLUE); } lcd_mutex.unlock(); Thread::wait(500); // wait 0.5 } }