ece 4180 lab 3

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

Committer:
emilywilson
Date:
Thu Feb 27 12:57:44 2020 +0000
Revision:
4:1ef667567942
Parent:
2:4845e2dae429
add extra credit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilywilson 2:4845e2dae429 1 #include "mbed.h"
emilywilson 2:4845e2dae429 2 #include "rtos.h"
emilywilson 2:4845e2dae429 3 #include "SDFileSystem.h"
emilywilson 2:4845e2dae429 4 #include "wave_player.h"
emilywilson 2:4845e2dae429 5 #include "uLCD_4DGL.h"
emilywilson 2:4845e2dae429 6 #include "RGBLed.h"
emilywilson 2:4845e2dae429 7 #include "Color.h"
emilywilson 2:4845e2dae429 8
emilywilson 2:4845e2dae429 9 #define _pink Color(255.0, 0.0, (119.0/255.0))
emilywilson 2:4845e2dae429 10 #define _red Color(255.0, 0.0, (119.0/255.0))
emilywilson 2:4845e2dae429 11 #define _orange Color(255.0/255.0, 98.0/255.0, 0.0)
emilywilson 2:4845e2dae429 12 #define _yellow Color(255.0/255.0, 166.0/255.0, 0.0)
emilywilson 2:4845e2dae429 13 #define _light_green Color(187.0/255.0, 255.0/255.0, 0.0)
emilywilson 2:4845e2dae429 14 #define _green Color(17.0/255.0, 201.0/255.0, 0.0)
emilywilson 2:4845e2dae429 15 #define _teal Color(0.0, 255.0/255.0, 170.0/255.0)
emilywilson 2:4845e2dae429 16 #define _light_blue Color(0.0, 255.0/255.0, 247.0/255.0)
emilywilson 2:4845e2dae429 17 #define _blue Color(0.0, 128.0/255.0, 255.0/255.0)
emilywilson 2:4845e2dae429 18 #define _purple Color(106.0/255.0, 0.0, 255.0/255.0)
emilywilson 2:4845e2dae429 19
emilywilson 2:4845e2dae429 20 RGBLed led = RGBLed(p21, p22, p23);
emilywilson 2:4845e2dae429 21
emilywilson 2:4845e2dae429 22 Color colors[] = { _red, _pink, _orange, _yellow };
emilywilson 2:4845e2dae429 23
emilywilson 2:4845e2dae429 24 void led_handler() {
emilywilson 2:4845e2dae429 25 // Color colors[] = { _red, _pink, _orange, _yellow };
emilywilson 2:4845e2dae429 26
emilywilson 2:4845e2dae429 27 Color c = colors[0];
emilywilson 2:4845e2dae429 28 int i = 0;
emilywilson 2:4845e2dae429 29 while (1) {
emilywilson 2:4845e2dae429 30 // led.write(c.red, c.green, c.blue);
emilywilson 2:4845e2dae429 31 //i = (i + 1) % 4;
emilywilson 2:4845e2dae429 32 // Color colors[] = { _red, _pink, _orange, _yellow };
emilywilson 2:4845e2dae429 33 led.write(1.0, 1.0, 1.0);
emilywilson 2:4845e2dae429 34
emilywilson 2:4845e2dae429 35 Thread::wait(500);
emilywilson 2:4845e2dae429 36 }
emilywilson 2:4845e2dae429 37 }
emilywilson 2:4845e2dae429 38
emilywilson 2:4845e2dae429 39 SDFileSystem sd(p5, p6, p7, p8, "sd");
emilywilson 2:4845e2dae429 40 AnalogOut DACout(p18);
emilywilson 2:4845e2dae429 41 wave_player waver(&DACout);
emilywilson 2:4845e2dae429 42
emilywilson 2:4845e2dae429 43 void audio_handler() {
emilywilson 2:4845e2dae429 44 FILE *wave_file;
emilywilson 2:4845e2dae429 45 printf("\n\n\nHello, wave world!\n");
emilywilson 2:4845e2dae429 46 wave_file=fopen("/sd/sample.wav","r");
emilywilson 2:4845e2dae429 47 while (1) {
emilywilson 2:4845e2dae429 48 waver.play(wave_file);
emilywilson 2:4845e2dae429 49 Thread::wait(1);
emilywilson 2:4845e2dae429 50 }
emilywilson 2:4845e2dae429 51 fclose(wave_file);
emilywilson 2:4845e2dae429 52 }
emilywilson 2:4845e2dae429 53
emilywilson 2:4845e2dae429 54 Mutex lcd_mutex;
emilywilson 2:4845e2dae429 55 uLCD_4DGL lcd(p28,p27,p30);
emilywilson 2:4845e2dae429 56
emilywilson 2:4845e2dae429 57 void lcd1_handler() {
emilywilson 2:4845e2dae429 58 int i = 0;
emilywilson 2:4845e2dae429 59 while (1) {
emilywilson 2:4845e2dae429 60 lcd_mutex.lock();
emilywilson 2:4845e2dae429 61 lcd.locate(0, 0);
emilywilson 2:4845e2dae429 62 lcd.printf("Elapsed time: %d s", i);
emilywilson 2:4845e2dae429 63 lcd_mutex.unlock();
emilywilson 2:4845e2dae429 64
emilywilson 2:4845e2dae429 65 i++;
emilywilson 2:4845e2dae429 66 Thread::wait(1000);
emilywilson 2:4845e2dae429 67 }
emilywilson 2:4845e2dae429 68 }
emilywilson 2:4845e2dae429 69
emilywilson 2:4845e2dae429 70 void lcd2_handler() {
emilywilson 2:4845e2dae429 71 while (1) {
emilywilson 2:4845e2dae429 72 lcd_mutex.lock();
emilywilson 2:4845e2dae429 73
emilywilson 2:4845e2dae429 74 lcd_mutex.unlock();
emilywilson 2:4845e2dae429 75 Thread::wait(0);
emilywilson 2:4845e2dae429 76 }
emilywilson 2:4845e2dae429 77 }
emilywilson 2:4845e2dae429 78
emilywilson 2:4845e2dae429 79 void changeColor(char c) {
emilywilson 2:4845e2dae429 80 if (c == 'r') {
emilywilson 2:4845e2dae429 81 colors[0] = _red;
emilywilson 2:4845e2dae429 82 colors[1] = _pink;
emilywilson 2:4845e2dae429 83 colors[2] = _orange;
emilywilson 2:4845e2dae429 84 colors[3] = _yellow;
emilywilson 2:4845e2dae429 85 } else if (c == 'b') {
emilywilson 2:4845e2dae429 86 colors[0] = _teal;
emilywilson 2:4845e2dae429 87 colors[1] = _light_blue;
emilywilson 2:4845e2dae429 88 colors[2] = _blue;
emilywilson 2:4845e2dae429 89 colors[3] = _purple;
emilywilson 2:4845e2dae429 90 } else if (c == 'g') {
emilywilson 2:4845e2dae429 91 colors[0] = _yellow;
emilywilson 2:4845e2dae429 92 colors[1] = _light_green;
emilywilson 2:4845e2dae429 93 colors[2] = _green;
emilywilson 2:4845e2dae429 94 colors[3] = _teal;
emilywilson 2:4845e2dae429 95 }
emilywilson 2:4845e2dae429 96 }
emilywilson 2:4845e2dae429 97
emilywilson 2:4845e2dae429 98 Thread led_thread, audio_thread, lcd1_thread, lcd2_thread;
emilywilson 2:4845e2dae429 99
emilywilson 2:4845e2dae429 100
emilywilson 2:4845e2dae429 101 void run_part4() {
emilywilson 2:4845e2dae429 102 led_thread.start(led_handler);
emilywilson 2:4845e2dae429 103 // audio_thread.start(audio_handler);
emilywilson 2:4845e2dae429 104 // lcd1_thread.start(lcd1_handler);
emilywilson 2:4845e2dae429 105 // lcd2_thread.start(lcd2_handler);
emilywilson 2:4845e2dae429 106
emilywilson 2:4845e2dae429 107 //while (1) {
emilywilson 2:4845e2dae429 108 // if (dev.readable()) {
emilywilson 2:4845e2dae429 109 // changeColor(dev.getc());
emilywilson 2:4845e2dae429 110 // }
emilywilson 2:4845e2dae429 111 // }
emilywilson 2:4845e2dae429 112 while (1) ;
emilywilson 2:4845e2dae429 113
emilywilson 2:4845e2dae429 114 }