Test
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
Fork of rtos_basic by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "wave_player.h" 00004 #include "SDFileSystem.h" 00005 #include "uLCD_4DGL.h" 00006 00007 DigitalOut led1(LED1); 00008 DigitalOut led2(LED2); 00009 00010 AnalogOut DACout(p18); 00011 wave_player waver(&DACout); 00012 uLCD_4DGL uLCD(p28, p27, p29); // serial tx, serial rx, reset pin; 00013 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card 00014 PwmOut red(p25); 00015 PwmOut green(p24); 00016 PwmOut blue(p23); 00017 00018 00019 00020 Mutex lcd_mutex; 00021 00022 FILE *wave_file; 00023 00024 int height = 15; 00025 int height2 = 15; 00026 00027 FILE *fp; 00028 void wav_thread() { 00029 00030 while (true) { 00031 bool play = true; 00032 int vol = 1; 00033 fp = fopen("/sd/wavfiles/tt.wav", "r"); 00034 waver.play(fp, &play, &vol); 00035 Thread::wait(1000); 00036 00037 00038 } 00039 } 00040 void lcd_thread1() 00041 { 00042 while (true) 00043 { 00044 for (int x = 0; x < 13; x++) 00045 { 00046 lcd_mutex.lock(); 00047 uLCD.filled_circle(25,height,15,BLACK); 00048 height += 7; 00049 uLCD.filled_circle(25,height,15,WHITE); 00050 lcd_mutex.unlock(); 00051 Thread::wait(100); 00052 } 00053 for (int x = 0; x < 13; x++) 00054 { 00055 lcd_mutex.lock(); 00056 uLCD.filled_circle(25,height,15,BLACK); 00057 height -= 7; 00058 uLCD.filled_circle(25,height,15,WHITE); 00059 lcd_mutex.unlock(); 00060 Thread::wait(100); 00061 } 00062 } 00063 } 00064 void lcd_thread2() 00065 { 00066 while (true) 00067 { 00068 for (int x = 0; x < 13; x++) 00069 { 00070 lcd_mutex.lock(); 00071 uLCD.filled_circle(60,height2,15,BLACK); 00072 height2 += 7; 00073 uLCD.filled_circle(60,height2,15,WHITE); 00074 lcd_mutex.unlock(); 00075 Thread::wait(100); 00076 } 00077 for (int x = 0; x < 13; x++) 00078 { 00079 lcd_mutex.lock(); 00080 uLCD.filled_circle(60,height2,15,BLACK); 00081 height2 -= 7; 00082 uLCD.filled_circle(60,height2,15,WHITE); 00083 lcd_mutex.unlock(); 00084 Thread::wait(100); 00085 } 00086 } 00087 } 00088 00089 int main() { 00090 00091 00092 00093 00094 //uLCD.cls(); 00095 00096 Thread thread1; 00097 Thread thread2; 00098 Thread thread3; 00099 thread1.start(lcd_thread2); 00100 thread2.start(lcd_thread1); 00101 thread3.start(wav_thread); 00102 00103 while (true) { 00104 for (float x=0.45; x >= 0; x -= 0.025) { 00105 red = x; 00106 green = x; 00107 blue = x; 00108 Thread::wait(100); 00109 } 00110 for (float x = 0; x <= 0.45; x += 0.025) { 00111 red = x; 00112 green = x; 00113 blue = x; 00114 Thread::wait(100); 00115 } 00116 } 00117 }
Generated on Sat Jul 30 2022 16:33:05 by 1.7.2