Test

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

Fork of rtos_basic by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }