f

Dependencies:   Speaker mbed wave_player mbed-rtos 4DGL-uLCD-SE LCD_fonts SDFileSystem_OldbutworkswithRTOS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 
00002 #include "mbed.h"
00003 #include "rtos.h"
00004 #include "uLCD_4DGL.h"
00005 #include "stdio.h"
00006 #include "Speaker.h"
00007 #include "banner.h"
00008 #include "SDFileSystem.h"
00009 #include "wave_player.h"
00010 
00011 
00012 RawSerial  pc(USBTX, USBRX);
00013 RawSerial  dev(p28,p27);
00014 AnalogOut DACout(p18);
00015 wave_player waver(&DACout);
00016 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
00017 uLCD_4DGL uLCD(p13,p14,p11);
00018 PwmOut RGBLED_r(p23);
00019 PwmOut RGBLED_g(p24);
00020 PwmOut RGBLED_b(p25);
00021 BusOut leds(LED1,LED2,LED3,LED4);
00022 Mutex lcd_mutex;
00023 
00024 //Thread screen;
00025 //Thread lights;
00026 //Thread audio;
00027 //Thread count;
00028 
00029 void dev_recv()
00030 {
00031     while(dev.readable()) {
00032         pc.putc(dev.getc());
00033     }
00034 }
00035 
00036 void pc_recv()
00037 {
00038     while(pc.readable()) {
00039         dev.putc(pc.getc());
00040     }
00041 }
00042 
00043 
00044 
00045 void thread1(void const *args)
00046 {
00047     int i=0;
00048     int x;
00049 //    while(true) {       // thread loop
00050         if(i==0){
00051             x=0xFF0000;
00052         }
00053         else if (i==1){
00054             x=0xFFFFFF;  
00055         }
00056         else{
00057             x=0x0000FF;   
00058         }
00059         lcd_mutex.lock();
00060         uLCD.filled_rectangle(0,0,128, 100, x);
00061         lcd_mutex.unlock();
00062         i++;
00063         i=i%3;
00064         Thread::wait(100);
00065 //    }
00066 }
00067 
00068 
00069 void thread5(void const *args)
00070 {
00071     int i = 0;
00072 //    while(true) { 
00073             // thread loop
00074         if(i==0){
00075             RGBLED_r = 1;
00076             RGBLED_g = 0;
00077             RGBLED_b = 0;
00078         }
00079         else if(i==1){
00080             RGBLED_r = 1;
00081             RGBLED_g = 1;
00082             RGBLED_b = 1;
00083         }
00084         else{
00085             RGBLED_r = 0;
00086             RGBLED_g = 0;
00087             RGBLED_b = 1;
00088         }
00089         i++;
00090         i=i%3;
00091         Thread::wait(673);    // wait 1.5s
00092 //    }
00093 }
00094 //// Thread 6
00095 //// Speaker
00096 void thread6(void const *args)
00097 {
00098 //    while(true) {         // thread loop
00099             FILE *wave_file;
00100     printf("\r\n\nHello, wave world!\n\r");
00101     Thread::wait(1000);
00102     wave_file=fopen("/sd/banner2.wav","r");
00103     if(wave_file==NULL) printf("file open error!\n\n\r");
00104     waver.play(wave_file);
00105     fclose(wave_file);
00106 //    }
00107 
00108 }
00109 
00110 void thread7(void const *args)
00111 {
00112     int i = 0;
00113     while(true) {         // thread loop
00114         i++;
00115         printf("thread 1: %d\n", i);
00116         Thread::wait(1000);    // wait 0.25s
00117     }
00118 }
00119 
00120 
00121 //void bluetooth(void const *args){
00122 //    while(1){
00123 //        if(dev.getc()=='a'){
00124 //            Thread t6(thread6);
00125 //        }
00126 //        if(dev.getc()=='s'){
00127 //            Thread t1(thread1);
00128 //        }
00129 //        if(dev.getc()=='l'){
00130 //            Thread t5(thread5);
00131 //        }
00132 //        if(dev.getc()=='c'){
00133 //            Thread t7(thread7);
00134 //        }
00135 //        Thread::wait(100);
00136 //    }
00137 //}
00138 int main()
00139 {
00140 //    int j;
00141     uLCD.cls();
00142 
00143     pc.baud(9600);
00144     dev.baud(9600);
00145 
00146     pc.attach(&pc_recv, Serial::RxIrq);
00147     dev.attach(&dev_recv, Serial::RxIrq);
00148 //    Thread blue(bluetooth);
00149     while(1) {
00150         if(dev.getc()=='a'){
00151             Thread audio(thread6);
00152         }
00153         if(dev.getc()=='s'){
00154             Thread screen(thread1);
00155         }
00156         if(dev.getc()=='l'){
00157             Thread light(thread5);
00158         }
00159         if(dev.getc()=='c'){
00160             Thread count(thread7);
00161         }
00162 //        sleep();
00163     }
00164 //    Thread t1(thread1); //start thread1
00165     //Thread t2(thread2); //start thread2
00166     //Thread t3(thread3); //start thread3
00167     //Thread t4(thread4); //start thread4
00168 //    Thread t5(thread5); //start thread5
00169 //    Thread t6(thread6); //start thread6
00170 //    Thread t7(thread7); //start thread7
00171 
00172 }