init

Dependencies:   SDFileSystem mbed-rtos mbed wave_player

Files at this revision

API Documentation at this revision

Comitter:
emanuel22e
Date:
Fri Oct 14 19:36:37 2022 +0000
Parent:
0:47321458789d
Commit message:
init

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Oct 14 19:33:05 2022 +0000
+++ b/main.cpp	Fri Oct 14 19:36:37 2022 +0000
@@ -1,15 +1,71 @@
+//#include "mbed.h"
+//#include "rtos.h"
+//#include "wave_player.h"
+//#include "SDFileSystem.h"
+//SDFileSystem sd(p5, p6, p7, p8, "sd");
+//PwmOut red(p21);
+//PwmOut green(p22);
+//PwmOut blue(p23);
+//AnalogOut speaker(p18);
+//wave_player waver(&speaker);
+//Thread thread1;
+//Thread thread2;
+//void t1() {
+//    red = 0;
+//    green = 0;
+//    blue = 0;
+//    while (1) {
+//        red = 1;
+//        green = 0;
+//        blue = 0;
+//        Thread::wait(300);
+//        red = 0;
+//        green = 1;
+//        blue = 0;
+//        Thread::wait(300);
+//        red = 0;
+//        green = 0;
+//        blue = 1;
+//        Thread::wait(300);
+//        
+//    }
+//void t2() {
+//    FILE *wave_file;
+//    //open wav file and play it
+//    wave_file=fopen("/sd/thread_sound.wav","r");
+//    waver.play(wave_file);
+//    fclose(wave_file);
+//    //end of program
+//    Thread::wait(500);
+//}
+//
+//int main() {
+//    thread1.start(t1);
+//    thread2.start(t2);
+//    while(1) {
+//        
+//    }
+//}
+
+
 #include "mbed.h"
 #include "rtos.h"
 #include "wave_player.h"
 #include "SDFileSystem.h"
+#include "uLCD_4DGL.h"
 SDFileSystem sd(p5, p6, p7, p8, "sd");
 PwmOut red(p21);
 PwmOut green(p22);
 PwmOut blue(p23);
-AnalogOut speaker(p18);
-wave_player waver(&speaker);
-Thread thread1;
+PwmOut speaker(p26);
+Serial bluemod(p13,p14);
+//wave_player waver(&speaker);
+uLCD_4DGL uLCD(p28,p27,p11);
+//Thread thread1;
 Thread thread2;
+Thread thread3;
+Thread thread4;
+Mutex u_mutex;
 void t1() {
     red = 0;
     green = 0;
@@ -27,22 +83,156 @@
         green = 0;
         blue = 1;
         Thread::wait(300);
-        
     }
+}
 void t2() {
+    /*
     FILE *wave_file;
     //open wav file and play it
-    wave_file=fopen("/sd/thread_sound.wav","r");
+    wave_file=fopen("/sd/mario_sound.wav","r");
     waver.play(wave_file);
     fclose(wave_file);
     //end of program
     Thread::wait(500);
+    */
+    speaker.period(1.0/500.0); // 500hz period
+        speaker =0.5; //50% duty cycle - max volume
+        Thread::wait(3);
+        speaker=0.0; // turn off audio
+        Thread::wait(2);
 }
-
+void t3() {
+    while (1) {
+        u_mutex.lock();
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        u_mutex.unlock();
+        u_mutex.lock();
+        uLCD.color(RED);
+        u_mutex.unlock();
+        for (int i=10; i>=0; --i) {
+            u_mutex.lock();
+            uLCD.locate(1,2);
+            uLCD.printf("%2D",i);
+            u_mutex.unlock();
+            Thread::wait(750);
+        }
+        //u_mutex.unlock();
+        Thread::wait(1000);
+    }
+}
+void t4() {
+    while (1) {
+        u_mutex.lock();
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        u_mutex.unlock();
+        u_mutex.lock();
+        uLCD.color(GREEN);
+        u_mutex.unlock();
+        for (int i=10; i>=0; --i) {
+            u_mutex.lock();
+            uLCD.locate(1,4);
+            uLCD.printf("%2D",i);
+            u_mutex.unlock();
+            Thread::wait(1000);
+        }
+        //u_mutex.unlock();
+        Thread::wait(1200);
+    }
+}
 int main() {
-    thread1.start(t1);
+    //thread1.start(t1);
     thread2.start(t2);
+    thread3.start(t3);
+    thread4.start(t4);
+    char bred=0;
+    char bgreen=0;
+    char bblue=0;
+    red = green = blue = 0;
     while(1) {
+        if (bluemod.readable()) {
+            u_mutex.lock();
+        
+            if (bluemod.getc()=='!') {
+                if (bluemod.getc()=='C') { //color data packet
+                    bred = bluemod.getc(); // RGB color values
+                    bgreen = bluemod.getc();
+                    bblue = bluemod.getc();
+                    if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK?
+                        red = bred/255.0; //send new color to RGB LED PWM outputs
+                        green = bgreen/255.0;
+                        blue = bblue/255.0;
+                    }
+                }
+            }
+            u_mutex.unlock();
+        }
+        
+        
+        
+        
+        
+        
+        
+        /*
+        red = 0;
+        green = 0;
+        blue = 0;
+        while (1) {
+            red = 1;
+            green = 0;
+            blue = 0;
+            Thread::wait(300);
+            //wait(.3);
+            red = 0;
+            green = 1;
+            blue = 0;
+            Thread::wait(300);
+            //wait(.3);
+            red = 0;
+            green = 0;
+            blue = 1;
+            Thread::wait(300);
+            //wait(.3);
+        
+        }
+        */
+        /*
+        FILE *wave_file;
+        //open wav file and play it
+        wave_file=fopen("/sd/mario_sound.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+        //end of program
+        Thread::wait(500);
+        */
+        
+        /*
+        u_mutex.lock();
+        uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        u_mutex.unlock();
+        u_mutex.lock();
+        uLCD.color(RED);
+        u_mutex.unlock();
+        for (int i=10; i>=0; --i) {
+            u_mutex.lock();
+            uLCD.locate(1,2);
+            uLCD.printf("%2D",i);
+            u_mutex.unlock();
+            Thread::wait(750);
+        }
+        Thread::wait(1000);
+        */
+        
+        /*
+        speaker.period(1.0/500.0); // 500hz period
+        speaker =0.5; //50% duty cycle - max volume
+        Thread::wait(10);
+        speaker=0.0; // turn off audio
+        Thread::wait(10);
+        */
         
     }
 }