ECE_4180 / Mbed 2 deprecated 4180Lab3Part5

Dependencies:   SDFileSystem mbed-rtos mbed wave_player

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 //SDFileSystem sd(p5, p6, p7, p8, "sd");
00006 //PwmOut red(p21);
00007 //PwmOut green(p22);
00008 //PwmOut blue(p23);
00009 //AnalogOut speaker(p18);
00010 //wave_player waver(&speaker);
00011 //Thread thread1;
00012 //Thread thread2;
00013 //void t1() {
00014 //    red = 0;
00015 //    green = 0;
00016 //    blue = 0;
00017 //    while (1) {
00018 //        red = 1;
00019 //        green = 0;
00020 //        blue = 0;
00021 //        Thread::wait(300);
00022 //        red = 0;
00023 //        green = 1;
00024 //        blue = 0;
00025 //        Thread::wait(300);
00026 //        red = 0;
00027 //        green = 0;
00028 //        blue = 1;
00029 //        Thread::wait(300);
00030 //        
00031 //    }
00032 //void t2() {
00033 //    FILE *wave_file;
00034 //    //open wav file and play it
00035 //    wave_file=fopen("/sd/thread_sound.wav","r");
00036 //    waver.play(wave_file);
00037 //    fclose(wave_file);
00038 //    //end of program
00039 //    Thread::wait(500);
00040 //}
00041 //
00042 //int main() {
00043 //    thread1.start(t1);
00044 //    thread2.start(t2);
00045 //    while(1) {
00046 //        
00047 //    }
00048 //}
00049 
00050 
00051 #include "mbed.h"
00052 #include "rtos.h"
00053 #include "wave_player.h"
00054 #include "SDFileSystem.h"
00055 #include "uLCD_4DGL.h"
00056 SDFileSystem sd(p5, p6, p7, p8, "sd");
00057 PwmOut red(p21);
00058 PwmOut green(p22);
00059 PwmOut blue(p23);
00060 PwmOut speaker(p26);
00061 Serial bluemod(p13,p14);
00062 //wave_player waver(&speaker);
00063 uLCD_4DGL uLCD(p28,p27,p11);
00064 //Thread thread1;
00065 Thread thread2;
00066 Thread thread3;
00067 Thread thread4;
00068 Mutex u_mutex;
00069 void t1() {
00070     red = 0;
00071     green = 0;
00072     blue = 0;
00073     while (1) {
00074         red = 1;
00075         green = 0;
00076         blue = 0;
00077         Thread::wait(300);
00078         red = 0;
00079         green = 1;
00080         blue = 0;
00081         Thread::wait(300);
00082         red = 0;
00083         green = 0;
00084         blue = 1;
00085         Thread::wait(300);
00086     }
00087 }
00088 void t2() {
00089     /*
00090     FILE *wave_file;
00091     //open wav file and play it
00092     wave_file=fopen("/sd/mario_sound.wav","r");
00093     waver.play(wave_file);
00094     fclose(wave_file);
00095     //end of program
00096     Thread::wait(500);
00097     */
00098     speaker.period(1.0/500.0); // 500hz period
00099         speaker =0.5; //50% duty cycle - max volume
00100         Thread::wait(3);
00101         speaker=0.0; // turn off audio
00102         Thread::wait(2);
00103 }
00104 void t3() {
00105     while (1) {
00106         u_mutex.lock();
00107         uLCD.text_width(2); //4X size text
00108         uLCD.text_height(2);
00109         u_mutex.unlock();
00110         u_mutex.lock();
00111         uLCD.color(RED);
00112         u_mutex.unlock();
00113         for (int i=10; i>=0; --i) {
00114             u_mutex.lock();
00115             uLCD.locate(1,2);
00116             uLCD.printf("%2D",i);
00117             u_mutex.unlock();
00118             Thread::wait(750);
00119         }
00120         //u_mutex.unlock();
00121         Thread::wait(1000);
00122     }
00123 }
00124 void t4() {
00125     while (1) {
00126         u_mutex.lock();
00127         uLCD.text_width(2); //4X size text
00128         uLCD.text_height(2);
00129         u_mutex.unlock();
00130         u_mutex.lock();
00131         uLCD.color(GREEN);
00132         u_mutex.unlock();
00133         for (int i=10; i>=0; --i) {
00134             u_mutex.lock();
00135             uLCD.locate(1,4);
00136             uLCD.printf("%2D",i);
00137             u_mutex.unlock();
00138             Thread::wait(1000);
00139         }
00140         //u_mutex.unlock();
00141         Thread::wait(1200);
00142     }
00143 }
00144 int main() {
00145     //thread1.start(t1);
00146     thread2.start(t2);
00147     thread3.start(t3);
00148     thread4.start(t4);
00149     char bred=0;
00150     char bgreen=0;
00151     char bblue=0;
00152     red = green = blue = 0;
00153     while(1) {
00154         if (bluemod.readable()) {
00155             u_mutex.lock();
00156         
00157             if (bluemod.getc()=='!') {
00158                 if (bluemod.getc()=='C') { //color data packet
00159                     bred = bluemod.getc(); // RGB color values
00160                     bgreen = bluemod.getc();
00161                     bblue = bluemod.getc();
00162                     if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK?
00163                         red = bred/255.0; //send new color to RGB LED PWM outputs
00164                         green = bgreen/255.0;
00165                         blue = bblue/255.0;
00166                     }
00167                 }
00168             }
00169             u_mutex.unlock();
00170         }
00171         
00172         
00173         
00174         
00175         
00176         
00177         
00178         /*
00179         red = 0;
00180         green = 0;
00181         blue = 0;
00182         while (1) {
00183             red = 1;
00184             green = 0;
00185             blue = 0;
00186             Thread::wait(300);
00187             //wait(.3);
00188             red = 0;
00189             green = 1;
00190             blue = 0;
00191             Thread::wait(300);
00192             //wait(.3);
00193             red = 0;
00194             green = 0;
00195             blue = 1;
00196             Thread::wait(300);
00197             //wait(.3);
00198         
00199         }
00200         */
00201         /*
00202         FILE *wave_file;
00203         //open wav file and play it
00204         wave_file=fopen("/sd/mario_sound.wav","r");
00205         waver.play(wave_file);
00206         fclose(wave_file);
00207         //end of program
00208         Thread::wait(500);
00209         */
00210         
00211         /*
00212         u_mutex.lock();
00213         uLCD.text_width(2); //4X size text
00214         uLCD.text_height(2);
00215         u_mutex.unlock();
00216         u_mutex.lock();
00217         uLCD.color(RED);
00218         u_mutex.unlock();
00219         for (int i=10; i>=0; --i) {
00220             u_mutex.lock();
00221             uLCD.locate(1,2);
00222             uLCD.printf("%2D",i);
00223             u_mutex.unlock();
00224             Thread::wait(750);
00225         }
00226         Thread::wait(1000);
00227         */
00228         
00229         /*
00230         speaker.period(1.0/500.0); // 500hz period
00231         speaker =0.5; //50% duty cycle - max volume
00232         Thread::wait(10);
00233         speaker=0.0; // turn off audio
00234         Thread::wait(10);
00235         */
00236         
00237     }
00238 }