lab3_part2
Dependencies: mbed-rtos mbed 4DGL-uLCD-SE SDFileSystem wave_player
Dependents: 4180_Lab3_rtos_basic FINAL_PROJECT_GAMMA_PROTECTOR
Fork of rtos_basic by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "uLCD_4DGL.h" 00004 #include "SDFileSystem.h" 00005 #include "wave_player.h" 00006 00007 uLCD_4DGL myLCD(p9, p10, p11); 00008 Mutex lcd_mutex; 00009 00010 PwmOut RGBLED_r(p23); 00011 PwmOut RGBLED_g(p22); 00012 PwmOut RGBLED_b(p21); 00013 00014 SDFileSystem sd(p5, p6, p7, p8, "sd"); 00015 00016 AnalogOut Speaker(p18); 00017 wave_player waver(&Speaker); 00018 bool PLAY = true; 00019 bool *PlayStopPtr = &PLAY; 00020 00021 int j = 0; 00022 int k = 0; 00023 00024 void ulcd1_thread(void const *args) { 00025 while(true) { 00026 lcd_mutex.lock(); 00027 myLCD.locate(0,0); 00028 myLCD.printf("Thread1 status count: %d", j); 00029 lcd_mutex.unlock(); 00030 j++; 00031 Thread::wait(150); 00032 } 00033 } 00034 00035 void ulcd2_thread(void const *args) { 00036 while(true) { 00037 lcd_mutex.lock(); 00038 myLCD.locate(0,5); 00039 myLCD.printf("Thread 2 status count : %d", k); 00040 lcd_mutex.unlock(); 00041 k++; 00042 Thread::wait(300); 00043 } 00044 } 00045 00046 void led_thread(void const *args) { 00047 while(true) { 00048 RGBLED_g = 0.0; 00049 RGBLED_r = 1.0; 00050 RGBLED_b = 0.0; 00051 Thread::wait(300); 00052 RGBLED_r = 0.0; 00053 RGBLED_b = 1.0; 00054 Thread::wait(300); 00055 } 00056 } 00057 00058 void Speaker_thread(void const *args) { 00059 while(true) { 00060 FILE *wave_file; 00061 wave_file=fopen("/sd/mySound/Siren.wav","r"); 00062 waver.play(wave_file,PlayStopPtr); 00063 fclose(wave_file); 00064 Thread::wait(1000); // wait 1.0s 00065 } 00066 } 00067 00068 int main() { 00069 00070 myLCD.cls(); 00071 00072 Thread thread0(ulcd1_thread); 00073 Thread thread1(ulcd2_thread); 00074 Thread thread2(led_thread); 00075 Thread thread3(Speaker_thread); 00076 00077 Timer t; 00078 t.start(); 00079 while (true) { 00080 lcd_mutex.lock(); 00081 myLCD.locate(0,9); 00082 myLCD.printf("The time taken was %0.2f seconds\n", t.read()); 00083 lcd_mutex.unlock(); 00084 Thread::wait(500); 00085 } 00086 }
Generated on Thu Jul 14 2022 09:10:00 by 1.7.2