Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player_appbd
Revision 4:5fdadaef5b1f, committed 2016-02-29
- Comitter:
- wschon
- Date:
- Mon Feb 29 03:46:10 2016 +0000
- Parent:
- 3:7d53a2744a2b
- Commit message:
- fixed EVERYTHING
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7d53a2744a2b -r 5fdadaef5b1f main.cpp
--- a/main.cpp Sun Feb 28 23:44:56 2016 +0000
+++ b/main.cpp Mon Feb 29 03:46:10 2016 +0000
@@ -8,24 +8,31 @@
SDFileSystem sd(p5, p6, p7, p8, "sd");
Serial pc(USBTX, USBRX);
Mutex ulcd_mutex;
-uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
+uLCD_4DGL uLCD(p9,p10,p19); // serial tx, serial rx, reset pin;
DigitalOut myled(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
+
DigitalOut latch(p15);
DigitalOut enable(p17);
//Analog Out Jack
AnalogOut DACout(p18);
//On Board Speaker
-PwmOut PWMout(p21);
-SPI spi(p5, p6, p7);
+PwmOut PWMout(p26);
+SPI spi(p11, p12, p13);
wave_player waver(&DACout,&PWMout);
int playing = 1;
-
+int red=0;
+int green=0;
+int blue=0;
+int play = 0;
void ulcd2_thread(void const *args) {
int count = 0;
while(true) {
ulcd_mutex.lock();
- pc.printf("Activated mutex lock on uLCD screen: ulcd2_thread");
+ pc.printf("Activated mutex lock on uLCD screen: ulcd2_thread\n\r");
uLCD.cls();
uLCD.printf("\nECE 4180 L3: RTOS\n"); //Default Green on black text
uLCD.printf("\nWes Schon Nick Liu");
@@ -42,22 +49,37 @@
}
}
void wav_thread(void const *args) {
- USBHostMSD msd("usb");
- FILE *wave_file;
- //setup PWM hardware for a Class D style audio output
- PWMout.period(1.0/400000.0);
- //printf("\n\n\nHello, wave world!\n");
- // wait until connected to a USB device
- while(!msd.connect()) {
- Thread::wait(500);
- }
- //open wav file and play it
- wave_file=fopen("/usb/sample.wav","r");
- waver.play(wave_file);
- fclose(wave_file);
- //end of program
- Thread::wait(500);
- playing = 0;
+ while(1) {
+ if (play == 1) {
+ //USBHostMSD msd("usb");
+ //pc.printf("\nset up usb host\n");
+ myled = !myled;
+ FILE *wave_file;
+ //pc.printf("\nread wav file\n");
+ //setup PWM hardware for a Class D style audio output
+ PWMout.period(1.0/400000.0);
+ //printf("\n\n\nHello, wave world!\n");
+ // wait until connected to a USB device
+ //while(!msd.connect()) {
+ // Thread::wait(500);
+ //}
+ //open wav file and play it
+ wave_file=fopen("/sd/monkey4.wav","r");
+
+ //pc.printf("\nplay\n");
+ playing = 1;
+ waver.play(wave_file);
+ myled2 = !myled2;
+ pc.printf("\nclose\n");
+ fclose(wave_file);
+ playing = 0;
+ myled3 = !myled3;
+ //end of program
+ Thread::wait(500);
+ myled4 = !myled4;
+
+ }
+ }
}
void RGB_LED(int red, int green, int blue) {
@@ -73,30 +95,41 @@
void led_thread(void const *args) {
- int red=0;
- int green=0;
- int blue=0;
+
spi.format(16,0);
spi.frequency(500000);
enable=0;
latch=0;
- wait(2);
- for (red = 0; red<50; red = red+10) {
- for (blue = 0; blue<50; blue = blue+10) {
- for (green = 0; green<50; green = green+10)
-
- {
- RGB_LED( red, green, blue);
- wait(.25);
- }
+ Thread::wait(2000);
+ while(1) {
+ if (play == 1) {
+ red = 0;
+ green = 50;
+ blue = 0;
+ RGB_LED( red, green, blue);
+ Thread::wait(250);
+ }
+ else {
+ red = 0;
+ green = 0;
+ blue = 50;
+ RGB_LED( red, green, blue);
+ Thread::wait(250);
+ red = 50;
+ green = 0;
+ blue = 0;
+ RGB_LED( red, green, blue);
+ Thread::wait(250);
}
}
+ }
- }
int main() {
Thread thread(ulcd2_thread);
-// Thread thread2(wav_thread);
+ pc.printf("\nwav_thread\n");
+ Thread thread2(wav_thread);
+ pc.printf("\nend wav_thread\n");
Thread thread3(led_thread);
int count2 = 0;
while(1) {
@@ -115,10 +148,12 @@
else
uLCD.printf("\n\nWav file finished.");
Thread::wait(200);
+ play = 1;
uLCD.set_sector_address(0x0000, 0x0000);
uLCD.display_video(0,0);
Thread::wait(100);
ulcd_mutex.unlock();
+ play = 0;
count2++;
}
}
