adfdadf

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

Fork of rtos_mutex by mbed official

Revision:
6:91595eac48f4
Parent:
1:0f886ffbe0c1
Child:
7:2122726e9b46
--- a/main.cpp	Fri Feb 26 16:20:20 2016 +0000
+++ b/main.cpp	Fri Feb 26 18:05:50 2016 +0000
@@ -1,8 +1,87 @@
 #include "mbed.h"
 #include "rtos.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+//additional for Lab4
+//#include "PinDetect.h"
+#include "uLCD_4DGL.h"
+#include <vector>
+#include <string>
+#include "ShiftBrite.h"
+
+uLCD_4DGL uLCD(p28,p27,p29); // create a global LCD object
+//uLCD_4DGL uLCD(p28, p27, p29);
+SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+DigitalIn detectSD(p12); //connect CD 
+AnalogOut DACout(p18); //speaker
+wave_player waver(&DACout);  //wave player library
+//DigitalOut latch(p15);
+//DigitalOut enable(p16);
+SPI spi(p11, p12, p13);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+ShiftBrite myBrite(p15,p16,spi); //latch, enable, spi
+
 
 Mutex stdio_mutex; 
 
+//shiftbrite
+/*void RGB_LED(int red, int green, int blue) {
+    unsigned int low_color=0;
+    unsigned int high_color=0;
+    high_color=(blue<<4)|((red&0x3C0)>>6);
+    low_color=(((red&0x3F)<<10)|(green));
+    spi.write(high_color);
+    spi.write(low_color);
+    latch=1;
+    latch=0;
+}
+*/
+
+void wav_thread(void const *args) {
+    FILE *wave_file;
+    printf("\n\n\nHello, wave world!\n");
+    wave_file=fopen("/sd/beethoven.wav","r");
+    //while(1){
+       waver.play(wave_file);
+    //}
+    fclose(wave_file);
+}
+
+void shift_thread(void const *args){
+
+int r,g,b;
+r=g=b=50;
+    
+    while(1) {
+        myBrite.Write(255,255,255);
+        Thread::wait(500);
+        myBrite.Write(0,0,255);
+        Thread::wait(500);
+        myBrite.Write(0,255,0);
+        Thread::wait(500);
+        myBrite.Write(255,0,0);
+        Thread::wait(500);
+        
+        myBrite.Brightness(r,g,b);
+        if(r<1023)
+            r+=50;
+        else
+            r=50;
+        g=b=r;
+        
+    }
+
+    
+}
+
+void led2_thread(void const *args) {
+    while (true) {
+        led2 = !led2;
+        Thread::wait(1000);
+    }
+}
+
 void notify(const char* name, int state) {
     stdio_mutex.lock();
     printf("%s: %d\n\r", name, state);
@@ -17,8 +96,19 @@
 }
 
 int main() {
+    Thread wav_thread(wav_thread);
+    Thread thread(led2_thread);
+    Thread shift_thread(shift_thread);
+
+    
+    while (true) {
+        led1 = !led1;
+        Thread::wait(500);
+        }
+        
     Thread t2(test_thread, (void *)"Th 2");
     Thread t3(test_thread, (void *)"Th 3");
     
     test_thread((void *)"Th 1");
+    
 }