ece 4180 lab 3
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem X_NUCLEO_53L0A1 HC_SR04_Ultrasonic_Library
part4.h@2:4845e2dae429, 2020-02-19 (annotated)
- Committer:
- emilywilson
- Date:
- Wed Feb 19 18:48:09 2020 +0000
- Revision:
- 2:4845e2dae429
led rtos
Who changed what in which revision?
User | Revision | Line number | New 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 | } |