f

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

Revision:
6:bb887c1a381b
Parent:
5:5f393c6b02cb
--- a/main.cpp	Thu Feb 21 16:10:42 2019 +0000
+++ b/main.cpp	Thu Feb 21 18:33:54 2019 +0000
@@ -1,6 +1,3 @@
-// example to test the mbed Lab Board lcd lib with the mbed rtos
-// Pot1 changes the contrast
-// Pot2 changes the speed of the sin wave
 
 #include "mbed.h"
 #include "rtos.h"
@@ -11,100 +8,68 @@
 #include "SDFileSystem.h"
 #include "wave_player.h"
 
+
+RawSerial  pc(USBTX, USBRX);
+RawSerial  dev(p28,p27);
 AnalogOut DACout(p18);
 wave_player waver(&DACout);
 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
 uLCD_4DGL uLCD(p13,p14,p11);
-//AnalogIn Pot1(p19);
-//AnalogIn Pot2(p20);
-//Speaker speaker(p26);
 PwmOut RGBLED_r(p23);
 PwmOut RGBLED_g(p24);
 PwmOut RGBLED_b(p25);
-//DigitalIn joyfire(p14);
-//BusIn joy(p15,p12,p13,p16);
 BusOut leds(LED1,LED2,LED3,LED4);
-
-// mutex to make the lcd lib thread safe
 Mutex lcd_mutex;
 
-//// Thread 1
-//// print counter into first line and wait for 1 s
-void thread1(void const *args)
+//Thread screen;
+//Thread lights;
+//Thread audio;
+//Thread count;
+
+void dev_recv()
 {
-    int i;
-    while(true) {       // thread loop
-        lcd_mutex.lock();
-        uLCD.printf("Thread1 count: %d",i);
-        lcd_mutex.unlock();
-        i++;
-        Thread::wait(1000);
+    while(dev.readable()) {
+        pc.putc(dev.getc());
+    }
+}
+
+void pc_recv()
+{
+    while(pc.readable()) {
+        dev.putc(pc.getc());
     }
 }
-//
-//// Thread 2
-//// print counter into third line and wait for 0,5s
-//void thread2(void const *args)
-//{
-//    int k;
-//    while(true) {       // thread loop
-//        lcd_mutex.lock();
-//        LCD.locate(0,20);
-//        LCD.set_font((unsigned char*) Arial_9);
-//        LCD.printf("Thread 2 count : %d",k);
-//        lcd_mutex.unlock();
-//        k++;
-//        Thread::wait(500); // wait 0.5s
-//    }
-//}
-//
-//// Thread 3
-//// print a sin function in a small window
-//// the value of pot 1 changes the speed of the sine wave
-//void thread3(void const *args)
-//{
-//    int i,k,v;
-//    double s,a;
-//    k = 1;
-//    lcd_mutex.lock();
-//    LCD.rect(89,0,127,17,1);
-//    lcd_mutex.unlock();
+
+
+
+void thread1(void const *args)
+{
+    int i=0;
+    int x;
 //    while(true) {       // thread loop
-//        v = Pot1.read_u16();  // get value of pot 1
-//        lcd_mutex.lock();
-//        for (i=90; i<127; i++) {
-//            s = 8 * sin((long double)(i+k) /5);   // pixel to print
-//            a = 8 * sin((long double)(i+k-1) /5); // old pixel to erase
-//            LCD.pixel(i,9 + (int)a ,0);           // erase pixel
-//            LCD.pixel(i,9 + (int)s ,1);           // print pixel
-//        }
-//        LCD.copy_to_lcd();  // LCD.pixel does not update the lcd
-//        lcd_mutex.unlock();
-//        k++;
-//        Thread::wait(v/100);   // value of pot1 / 100
+        if(i==0){
+            x=0xFF0000;
+        }
+        else if (i==1){
+            x=0xFFFFFF;  
+        }
+        else{
+            x=0x0000FF;   
+        }
+        lcd_mutex.lock();
+        uLCD.filled_rectangle(0,0,128, 100, x);
+        lcd_mutex.unlock();
+        i++;
+        i=i%3;
+        Thread::wait(100);
 //    }
-//}
-//
-//// Thread 4
-//// input pot 2 and change the contrast of LCD
-//void thread4(void const *args)
-//{
-//    int k;
-//    while(true) {         // thread loop
-//        k = Pot2.read_u16();  // get the value of poti 2
-//        k = k >> 10;          // need only 6 bits for contrast
-//        lcd_mutex.lock();
-//        LCD.set_contrast(k);
-//        lcd_mutex.unlock();
-//        Thread::wait(500);    // wait 0.5s
-//    }
-//}
-//// Thread 5
-//// RGB LED
+}
+
+
 void thread5(void const *args)
 {
     int i = 0;
-    while(true) { 
+//    while(true) { 
             // thread loop
         if(i==0){
             RGBLED_r = 1;
@@ -124,23 +89,22 @@
         i++;
         i=i%3;
         Thread::wait(673);    // wait 1.5s
-    }
+//    }
 }
 //// Thread 6
 //// Speaker
 void thread6(void const *args)
 {
-    //while(true) {         // thread loop
-//        speaker.PlayNote(311.1, 1, .1);
-//        Thread::wait(1000);    // wait 1.0s
-//        speaker.PlayNote(0,1,0);
-//        Thread::wait(1000);
-//    }
-    FILE *wave_file;
-    printf("\n\n\nHello, wave world!\n");
+//    while(true) {         // thread loop
+            FILE *wave_file;
+    printf("\r\n\nHello, wave world!\n\r");
+    Thread::wait(1000);
     wave_file=fopen("/sd/banner2.wav","r");
+    if(wave_file==NULL) printf("file open error!\n\n\r");
     waver.play(wave_file);
     fclose(wave_file);
+//    }
+
 }
 
 void thread7(void const *args)
@@ -149,36 +113,60 @@
     while(true) {         // thread loop
         i++;
         printf("thread 1: %d\n", i);
-        Thread::wait(200);    // wait 0.25s
+        Thread::wait(1000);    // wait 0.25s
     }
 }
 
 
-
+//void bluetooth(void const *args){
+//    while(1){
+//        if(dev.getc()=='a'){
+//            Thread t6(thread6);
+//        }
+//        if(dev.getc()=='s'){
+//            Thread t1(thread1);
+//        }
+//        if(dev.getc()=='l'){
+//            Thread t5(thread5);
+//        }
+//        if(dev.getc()=='c'){
+//            Thread t7(thread7);
+//        }
+//        Thread::wait(100);
+//    }
+//}
 int main()
 {
 //    int j;
     uLCD.cls();
 
-    Thread t1(thread1); //start thread1
+    pc.baud(9600);
+    dev.baud(9600);
+
+    pc.attach(&pc_recv, Serial::RxIrq);
+    dev.attach(&dev_recv, Serial::RxIrq);
+//    Thread blue(bluetooth);
+    while(1) {
+        if(dev.getc()=='a'){
+            Thread audio(thread6);
+        }
+        if(dev.getc()=='s'){
+            Thread screen(thread1);
+        }
+        if(dev.getc()=='l'){
+            Thread light(thread5);
+        }
+        if(dev.getc()=='c'){
+            Thread count(thread7);
+        }
+//        sleep();
+    }
+//    Thread t1(thread1); //start thread1
     //Thread t2(thread2); //start thread2
     //Thread t3(thread3); //start thread3
     //Thread t4(thread4); //start thread4
-    Thread t5(thread5); //start thread5
-    Thread t6(thread6); //start thread6
-    Thread t7(thread7); //start thread7
+//    Thread t5(thread5); //start thread5
+//    Thread t6(thread6); //start thread6
+//    Thread t7(thread7); //start thread7
 
-    while(true) {       // main is the next thread
-//        speaker.PlayNote(311.1, 1, .1);
-        //Thread::wait(1000);    // wait 1.0s
-//        speaker.PlayNote(0,1,0);
-        //Thread::wait(1000);
-//        lcd_mutex.lock();
-//        uLCD.cls();
-//        uLCD.media_init();
-//        uLCD.set_sector_address(0x001D, 0x4C42);
-//        uLCD.display_video(0,0);
-//        lcd_mutex.unlock();
-//        Thread::wait(33);   // wait 0.5s
-    }
 }