Emily Wilson / Mbed 2 deprecated ECE4180Lab3

Dependencies:   mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem X_NUCLEO_53L0A1 HC_SR04_Ultrasonic_Library

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers part4.h Source File

part4.h

00001 #include "mbed.h"
00002 #include "rtos.h"
00003 #include "SDFileSystem.h"
00004 #include "wave_player.h"
00005 #include "uLCD_4DGL.h"
00006 #include "RGBLed.h"
00007 #include "Color.h"
00008 
00009 #define _pink Color(255.0, 0.0, (119.0/255.0))
00010 #define _red Color(255.0, 0.0, (119.0/255.0))
00011 #define _orange Color(255.0/255.0, 98.0/255.0, 0.0)
00012 #define _yellow Color(255.0/255.0, 166.0/255.0, 0.0)
00013 #define _light_green Color(187.0/255.0, 255.0/255.0, 0.0)
00014 #define _green Color(17.0/255.0, 201.0/255.0, 0.0)
00015 #define _teal Color(0.0, 255.0/255.0, 170.0/255.0)
00016 #define _light_blue Color(0.0, 255.0/255.0, 247.0/255.0)
00017 #define _blue Color(0.0, 128.0/255.0, 255.0/255.0)
00018 #define _purple Color(106.0/255.0, 0.0, 255.0/255.0)
00019 
00020 RGBLed led = RGBLed(p21, p22, p23);
00021 
00022 Color colors[] = { _red, _pink, _orange, _yellow };
00023 
00024 void led_handler() {
00025 //    Color colors[] = { _red, _pink, _orange, _yellow };
00026     
00027     Color c = colors[0];
00028     int i = 0;
00029     while (1) {
00030 //        led.write(c.red, c.green, c.blue);
00031         //i = (i + 1) % 4;
00032 //        Color colors[] = { _red, _pink, _orange, _yellow };
00033         led.write(1.0, 1.0, 1.0);
00034         
00035         Thread::wait(500);
00036     }
00037 }
00038 
00039 SDFileSystem sd(p5, p6, p7, p8, "sd");
00040 AnalogOut DACout(p18);
00041 wave_player waver(&DACout);
00042 
00043 void audio_handler() {
00044     FILE *wave_file;
00045     printf("\n\n\nHello, wave world!\n");
00046     wave_file=fopen("/sd/sample.wav","r");
00047     while (1) {
00048         waver.play(wave_file);
00049         Thread::wait(1);
00050     }
00051     fclose(wave_file);
00052 }
00053 
00054 Mutex lcd_mutex;
00055 uLCD_4DGL lcd(p28,p27,p30);
00056 
00057 void lcd1_handler() {
00058     int i = 0;
00059     while (1) {
00060         lcd_mutex.lock();
00061         lcd.locate(0, 0);
00062         lcd.printf("Elapsed time: %d s", i);
00063         lcd_mutex.unlock();
00064         
00065         i++;
00066         Thread::wait(1000);
00067     }
00068 }
00069 
00070 void lcd2_handler() {
00071     while (1) {
00072         lcd_mutex.lock();
00073         
00074         lcd_mutex.unlock();
00075         Thread::wait(0);
00076     }
00077 }
00078 
00079 void changeColor(char c) {
00080     if (c == 'r') {
00081         colors[0] = _red;
00082         colors[1] = _pink;
00083         colors[2] = _orange;
00084         colors[3] = _yellow;
00085     } else if (c == 'b') {
00086         colors[0] = _teal;
00087         colors[1] = _light_blue;
00088         colors[2] = _blue;
00089         colors[3] = _purple;
00090     } else if (c == 'g') {
00091         colors[0] = _yellow;
00092         colors[1] = _light_green;
00093         colors[2] = _green;
00094         colors[3] = _teal;
00095     }
00096 }
00097 
00098 Thread led_thread, audio_thread, lcd1_thread, lcd2_thread;
00099 
00100 
00101 void run_part4() {
00102     led_thread.start(led_handler);
00103 //    audio_thread.start(audio_handler);
00104 //    lcd1_thread.start(lcd1_handler);
00105 //    lcd2_thread.start(lcd2_handler);
00106     
00107     //while (1) {
00108 //        if (dev.readable()) {
00109 //            changeColor(dev.getc());
00110 //        }
00111 //    }
00112     while (1) ;
00113             
00114 }