![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Lab 3 Part 4
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem
main.cpp@15:e406620ee8af, 2021-03-02 (annotated)
- Committer:
- glanier9
- Date:
- Tue Mar 02 15:24:05 2021 +0000
- Revision:
- 15:e406620ee8af
- Parent:
- 14:ae63fb7c2d06
- Child:
- 16:f31b20cfeebc
Final version. All threads integrated.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
mbed_official | 11:0309bef74ba8 | 2 | #include "rtos.h" |
glanier9 | 12:94b16c66c09a | 3 | #include "Speaker.h" |
glanier9 | 12:94b16c66c09a | 4 | #include "uLCD_4DGL.h" |
glanier9 | 12:94b16c66c09a | 5 | #include "SDFileSystem.h" |
glanier9 | 12:94b16c66c09a | 6 | #include "wave_player.h" |
glanier9 | 12:94b16c66c09a | 7 | |
glanier9 | 13:8987c75dfe41 | 8 | char setting = '1'; |
glanier9 | 12:94b16c66c09a | 9 | |
glanier9 | 12:94b16c66c09a | 10 | BusOut myled(LED1,LED2,LED3,LED4); |
glanier9 | 12:94b16c66c09a | 11 | |
glanier9 | 12:94b16c66c09a | 12 | Serial blue(p13,p14); |
glanier9 | 12:94b16c66c09a | 13 | |
glanier9 | 12:94b16c66c09a | 14 | AnalogOut DACout(p18); |
glanier9 | 12:94b16c66c09a | 15 | |
glanier9 | 12:94b16c66c09a | 16 | wave_player waver(&DACout); |
glanier9 | 12:94b16c66c09a | 17 | |
glanier9 | 12:94b16c66c09a | 18 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
glanier9 | 12:94b16c66c09a | 19 | |
glanier9 | 12:94b16c66c09a | 20 | Mutex stdio_mutex; |
glanier9 | 14:ae63fb7c2d06 | 21 | Mutex get_mutex; |
glanier9 | 12:94b16c66c09a | 22 | |
glanier9 | 12:94b16c66c09a | 23 | uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; |
glanier9 | 12:94b16c66c09a | 24 | |
glanier9 | 12:94b16c66c09a | 25 | PwmOut rLED(p21); // Light up Red LED with p21 |
glanier9 | 12:94b16c66c09a | 26 | PwmOut gLED(p22); // Light up Green LED with p22 |
glanier9 | 12:94b16c66c09a | 27 | PwmOut bLED(p23); // Light up Blue LED with p23 |
glanier9 | 12:94b16c66c09a | 28 | |
glanier9 | 12:94b16c66c09a | 29 | Thread thread1; |
glanier9 | 12:94b16c66c09a | 30 | Thread thread2; |
glanier9 | 12:94b16c66c09a | 31 | Thread thread3; |
glanier9 | 12:94b16c66c09a | 32 | Thread thread4; |
glanier9 | 12:94b16c66c09a | 33 | |
glanier9 | 15:e406620ee8af | 34 | Semaphore semled(0); |
glanier9 | 15:e406620ee8af | 35 | Semaphore semlcd1(0); |
glanier9 | 15:e406620ee8af | 36 | Semaphore semlcd2(0); |
glanier9 | 15:e406620ee8af | 37 | Semaphore sem_check(0); |
glanier9 | 14:ae63fb7c2d06 | 38 | |
glanier9 | 14:ae63fb7c2d06 | 39 | ///* The Terminator 53. Coming to theatres this summer!!!!!! */ |
glanier9 | 14:ae63fb7c2d06 | 40 | //void the_terminator() |
glanier9 | 14:ae63fb7c2d06 | 41 | //{ |
glanier9 | 14:ae63fb7c2d06 | 42 | // |
glanier9 | 14:ae63fb7c2d06 | 43 | //} |
glanier9 | 14:ae63fb7c2d06 | 44 | |
glanier9 | 12:94b16c66c09a | 45 | /* Threads */ |
glanier9 | 12:94b16c66c09a | 46 | void led_thread() |
glanier9 | 12:94b16c66c09a | 47 | { |
glanier9 | 12:94b16c66c09a | 48 | while(1) { |
glanier9 | 15:e406620ee8af | 49 | /* Setting 1: Red and Blue */ |
glanier9 | 13:8987c75dfe41 | 50 | if(setting == '1') { |
glanier9 | 13:8987c75dfe41 | 51 | bLED = 0; |
glanier9 | 13:8987c75dfe41 | 52 | rLED = 1; |
glanier9 | 13:8987c75dfe41 | 53 | gLED = 0; |
glanier9 | 15:e406620ee8af | 54 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 55 | semled.wait(); |
glanier9 | 13:8987c75dfe41 | 56 | rLED = 0; |
glanier9 | 13:8987c75dfe41 | 57 | bLED = 1; |
glanier9 | 13:8987c75dfe41 | 58 | gLED = 0; |
glanier9 | 15:e406620ee8af | 59 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 60 | semled.wait(); |
glanier9 | 13:8987c75dfe41 | 61 | } |
glanier9 | 15:e406620ee8af | 62 | |
glanier9 | 15:e406620ee8af | 63 | /* Setting 2: Purple and Green */ |
glanier9 | 15:e406620ee8af | 64 | else if (setting == '2') { |
glanier9 | 13:8987c75dfe41 | 65 | bLED = 1; |
glanier9 | 13:8987c75dfe41 | 66 | rLED = 1; |
glanier9 | 13:8987c75dfe41 | 67 | gLED = 0; |
glanier9 | 15:e406620ee8af | 68 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 69 | semled.wait(); |
glanier9 | 13:8987c75dfe41 | 70 | rLED = 0; |
glanier9 | 13:8987c75dfe41 | 71 | bLED = 0; |
glanier9 | 13:8987c75dfe41 | 72 | gLED = 1; |
glanier9 | 15:e406620ee8af | 73 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 74 | semled.wait(); |
glanier9 | 13:8987c75dfe41 | 75 | } |
glanier9 | 15:e406620ee8af | 76 | |
glanier9 | 15:e406620ee8af | 77 | /* Setting 3: Yellow and Cyan*/ |
glanier9 | 15:e406620ee8af | 78 | else if(setting == '3') { |
glanier9 | 15:e406620ee8af | 79 | bLED = 0; |
glanier9 | 15:e406620ee8af | 80 | rLED = 1; |
glanier9 | 15:e406620ee8af | 81 | gLED = 1; |
glanier9 | 15:e406620ee8af | 82 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 83 | semled.wait(); |
glanier9 | 15:e406620ee8af | 84 | rLED = 0; |
glanier9 | 15:e406620ee8af | 85 | bLED = 1; |
glanier9 | 15:e406620ee8af | 86 | gLED = 1; |
glanier9 | 15:e406620ee8af | 87 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 88 | semled.wait(); |
glanier9 | 14:ae63fb7c2d06 | 89 | } |
glanier9 | 15:e406620ee8af | 90 | |
glanier9 | 15:e406620ee8af | 91 | /* Setting 4: Black and White */ |
glanier9 | 15:e406620ee8af | 92 | else if(setting == '4') { |
glanier9 | 15:e406620ee8af | 93 | bLED = 0; |
glanier9 | 15:e406620ee8af | 94 | rLED = 0; |
glanier9 | 15:e406620ee8af | 95 | gLED = 0; |
glanier9 | 15:e406620ee8af | 96 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 97 | semled.wait(); |
glanier9 | 15:e406620ee8af | 98 | rLED = 1; |
glanier9 | 15:e406620ee8af | 99 | bLED = 1; |
glanier9 | 15:e406620ee8af | 100 | gLED = 1; |
glanier9 | 15:e406620ee8af | 101 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 102 | semled.wait(); |
glanier9 | 15:e406620ee8af | 103 | } |
glanier9 | 15:e406620ee8af | 104 | |
emilmont | 1:491820ee784d | 105 | } |
emilmont | 1:491820ee784d | 106 | } |
glanier9 | 12:94b16c66c09a | 107 | |
glanier9 | 12:94b16c66c09a | 108 | void speaker_thread() |
glanier9 | 12:94b16c66c09a | 109 | { |
glanier9 | 12:94b16c66c09a | 110 | while(1) { |
glanier9 | 15:e406620ee8af | 111 | |
glanier9 | 15:e406620ee8af | 112 | /* Setting 1: WeeWoo Wagon */ |
glanier9 | 15:e406620ee8af | 113 | if(setting == '1') { |
glanier9 | 15:e406620ee8af | 114 | FILE *wave_file; |
glanier9 | 15:e406620ee8af | 115 | wave_file=fopen("/sd/WEEWOO.wav","r"); |
glanier9 | 15:e406620ee8af | 116 | waver.play(wave_file); |
glanier9 | 15:e406620ee8af | 117 | fclose(wave_file); |
glanier9 | 15:e406620ee8af | 118 | } |
glanier9 | 15:e406620ee8af | 119 | |
glanier9 | 15:e406620ee8af | 120 | /* Setting 2: */ |
glanier9 | 15:e406620ee8af | 121 | if(setting == '2') { |
glanier9 | 15:e406620ee8af | 122 | FILE *wave_file; |
glanier9 | 15:e406620ee8af | 123 | wave_file=fopen("/sd/dank_export.wav","r"); |
glanier9 | 15:e406620ee8af | 124 | waver.play(wave_file); |
glanier9 | 15:e406620ee8af | 125 | fclose(wave_file); |
glanier9 | 15:e406620ee8af | 126 | } |
glanier9 | 15:e406620ee8af | 127 | |
glanier9 | 15:e406620ee8af | 128 | /* Setting 3: */ |
glanier9 | 15:e406620ee8af | 129 | if(setting == '3') { |
glanier9 | 15:e406620ee8af | 130 | FILE *wave_file; |
glanier9 | 15:e406620ee8af | 131 | wave_file=fopen("/sd/crickets_exp.wav","r"); |
glanier9 | 15:e406620ee8af | 132 | waver.play(wave_file); |
glanier9 | 15:e406620ee8af | 133 | fclose(wave_file); |
glanier9 | 15:e406620ee8af | 134 | } |
glanier9 | 15:e406620ee8af | 135 | |
glanier9 | 15:e406620ee8af | 136 | /* Setting 4: */ |
glanier9 | 15:e406620ee8af | 137 | if(setting == '4') { |
glanier9 | 15:e406620ee8af | 138 | FILE *wave_file; |
glanier9 | 15:e406620ee8af | 139 | wave_file=fopen("/sd/static_exp.wav","r"); |
glanier9 | 15:e406620ee8af | 140 | waver.play(wave_file); |
glanier9 | 15:e406620ee8af | 141 | fclose(wave_file); |
glanier9 | 15:e406620ee8af | 142 | } |
glanier9 | 15:e406620ee8af | 143 | |
glanier9 | 12:94b16c66c09a | 144 | } |
glanier9 | 12:94b16c66c09a | 145 | } |
glanier9 | 12:94b16c66c09a | 146 | |
glanier9 | 12:94b16c66c09a | 147 | void lcd1_thread() |
glanier9 | 12:94b16c66c09a | 148 | { |
glanier9 | 12:94b16c66c09a | 149 | while(1) { |
glanier9 | 15:e406620ee8af | 150 | |
glanier9 | 15:e406620ee8af | 151 | /* Setting 1: Red */ |
glanier9 | 15:e406620ee8af | 152 | if(setting == '1') { |
glanier9 | 15:e406620ee8af | 153 | // Top Red Box |
glanier9 | 15:e406620ee8af | 154 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 155 | uLCD.filled_rectangle(0, 0, 127, 63, RED); |
glanier9 | 15:e406620ee8af | 156 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 157 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 158 | semled.release(); |
glanier9 | 15:e406620ee8af | 159 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 160 | // Top Black Box |
glanier9 | 15:e406620ee8af | 161 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 162 | uLCD.filled_rectangle(0, 0, 127, 63, BLACK); |
glanier9 | 15:e406620ee8af | 163 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 164 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 165 | sem_check.release(); |
glanier9 | 15:e406620ee8af | 166 | semlcd1.wait(); |
glanier9 | 15:e406620ee8af | 167 | semled.release(); |
glanier9 | 15:e406620ee8af | 168 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 169 | } |
glanier9 | 15:e406620ee8af | 170 | |
glanier9 | 15:e406620ee8af | 171 | /* Setting 2: Purple */ |
glanier9 | 15:e406620ee8af | 172 | else if(setting == '2') { |
glanier9 | 15:e406620ee8af | 173 | // Top Red Box |
glanier9 | 15:e406620ee8af | 174 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 175 | uLCD.filled_rectangle(0, 0, 127, 63, 0xFF00FF); |
glanier9 | 15:e406620ee8af | 176 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 177 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 178 | semled.release(); |
glanier9 | 15:e406620ee8af | 179 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 180 | // Top Black Box |
glanier9 | 15:e406620ee8af | 181 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 182 | uLCD.filled_rectangle(0, 0, 127, 63, BLACK); |
glanier9 | 15:e406620ee8af | 183 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 184 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 185 | sem_check.release(); |
glanier9 | 15:e406620ee8af | 186 | semlcd1.wait(); |
glanier9 | 15:e406620ee8af | 187 | semled.release(); |
glanier9 | 15:e406620ee8af | 188 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 189 | } |
glanier9 | 15:e406620ee8af | 190 | |
glanier9 | 15:e406620ee8af | 191 | /* Setting 3: Yellow */ |
glanier9 | 15:e406620ee8af | 192 | else if(setting == '3') { |
glanier9 | 15:e406620ee8af | 193 | // Top Red Box |
glanier9 | 15:e406620ee8af | 194 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 195 | uLCD.filled_rectangle(0, 0, 127, 63, 0xFFFF00); |
glanier9 | 15:e406620ee8af | 196 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 197 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 198 | semled.release(); |
glanier9 | 15:e406620ee8af | 199 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 200 | // Top Black Box |
glanier9 | 15:e406620ee8af | 201 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 202 | uLCD.filled_rectangle(0, 0, 127, 63, BLACK); |
glanier9 | 15:e406620ee8af | 203 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 204 | Thread::wait(750); |
glanier9 | 15:e406620ee8af | 205 | sem_check.release(); |
glanier9 | 15:e406620ee8af | 206 | semlcd1.wait(); |
glanier9 | 15:e406620ee8af | 207 | semled.release(); |
glanier9 | 15:e406620ee8af | 208 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 209 | } |
glanier9 | 15:e406620ee8af | 210 | |
glanier9 | 15:e406620ee8af | 211 | /* Setting 4: Black and White */ |
glanier9 | 15:e406620ee8af | 212 | else if(setting == '4') { |
glanier9 | 15:e406620ee8af | 213 | // Top Red Box |
glanier9 | 15:e406620ee8af | 214 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 215 | uLCD.filled_rectangle(0, 0, 127, 63, BLACK); |
glanier9 | 15:e406620ee8af | 216 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 217 | Thread::wait(250); |
glanier9 | 15:e406620ee8af | 218 | semled.release(); |
glanier9 | 15:e406620ee8af | 219 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 220 | // Top Black Box |
glanier9 | 15:e406620ee8af | 221 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 222 | uLCD.filled_rectangle(0, 0, 127, 63, WHITE); |
glanier9 | 15:e406620ee8af | 223 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 224 | Thread::wait(250); |
glanier9 | 15:e406620ee8af | 225 | sem_check.release(); |
glanier9 | 15:e406620ee8af | 226 | semlcd1.wait(); |
glanier9 | 15:e406620ee8af | 227 | semled.release(); |
glanier9 | 15:e406620ee8af | 228 | semlcd2.release(); |
glanier9 | 15:e406620ee8af | 229 | } |
glanier9 | 12:94b16c66c09a | 230 | } |
glanier9 | 12:94b16c66c09a | 231 | } |
glanier9 | 12:94b16c66c09a | 232 | |
glanier9 | 12:94b16c66c09a | 233 | void lcd2_thread() |
glanier9 | 12:94b16c66c09a | 234 | { |
glanier9 | 12:94b16c66c09a | 235 | while(1) { |
glanier9 | 15:e406620ee8af | 236 | |
glanier9 | 15:e406620ee8af | 237 | /* Setting 1: Blue */ |
glanier9 | 15:e406620ee8af | 238 | if(setting == '1') { |
glanier9 | 15:e406620ee8af | 239 | // Bottom Black Box |
glanier9 | 15:e406620ee8af | 240 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 241 | uLCD.filled_rectangle(0, 63, 127, 127, BLACK); |
glanier9 | 15:e406620ee8af | 242 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 243 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 244 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 245 | // Bottom Blue Box |
glanier9 | 15:e406620ee8af | 246 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 247 | uLCD.filled_rectangle(0, 63, 127, 127, BLUE); |
glanier9 | 15:e406620ee8af | 248 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 249 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 250 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 251 | } |
glanier9 | 15:e406620ee8af | 252 | |
glanier9 | 15:e406620ee8af | 253 | /* Setting 2: Green */ |
glanier9 | 15:e406620ee8af | 254 | else if(setting == '2') { |
glanier9 | 15:e406620ee8af | 255 | // Bottom Black Box |
glanier9 | 15:e406620ee8af | 256 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 257 | uLCD.filled_rectangle(0, 63, 127, 127, BLACK); |
glanier9 | 15:e406620ee8af | 258 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 259 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 260 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 261 | // Bottom Blue Box |
glanier9 | 15:e406620ee8af | 262 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 263 | uLCD.filled_rectangle(0, 63, 127, 127, GREEN); |
glanier9 | 15:e406620ee8af | 264 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 265 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 266 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 267 | } |
glanier9 | 15:e406620ee8af | 268 | |
glanier9 | 15:e406620ee8af | 269 | /* Setting 3: Cyan */ |
glanier9 | 15:e406620ee8af | 270 | else if(setting == '3') { |
glanier9 | 15:e406620ee8af | 271 | // Bottom Black Box |
glanier9 | 15:e406620ee8af | 272 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 273 | uLCD.filled_rectangle(0, 63, 127, 127, BLACK); |
glanier9 | 15:e406620ee8af | 274 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 275 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 276 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 277 | // Bottom Blue Box |
glanier9 | 15:e406620ee8af | 278 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 279 | uLCD.filled_rectangle(0, 63, 127, 127, 0x00FFFF); |
glanier9 | 15:e406620ee8af | 280 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 281 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 282 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 283 | } |
glanier9 | 15:e406620ee8af | 284 | |
glanier9 | 15:e406620ee8af | 285 | /* Setting 4: Black and White */ |
glanier9 | 15:e406620ee8af | 286 | else if(setting == '4') { |
glanier9 | 15:e406620ee8af | 287 | // Bottom Black Box |
glanier9 | 15:e406620ee8af | 288 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 289 | uLCD.filled_rectangle(0, 63, 127, 127, BLACK); |
glanier9 | 15:e406620ee8af | 290 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 291 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 292 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 293 | // Bottom Blue Box |
glanier9 | 15:e406620ee8af | 294 | stdio_mutex.lock(); |
glanier9 | 15:e406620ee8af | 295 | uLCD.filled_rectangle(0, 63, 127, 127, WHITE); |
glanier9 | 15:e406620ee8af | 296 | stdio_mutex.unlock(); |
glanier9 | 15:e406620ee8af | 297 | //Thread::wait(750); |
glanier9 | 15:e406620ee8af | 298 | semlcd2.wait(); |
glanier9 | 15:e406620ee8af | 299 | } |
glanier9 | 12:94b16c66c09a | 300 | } |
glanier9 | 12:94b16c66c09a | 301 | } |
glanier9 | 12:94b16c66c09a | 302 | |
glanier9 | 15:e406620ee8af | 303 | |
glanier9 | 12:94b16c66c09a | 304 | int main() |
glanier9 | 12:94b16c66c09a | 305 | { |
glanier9 | 12:94b16c66c09a | 306 | rLED = 0; |
glanier9 | 12:94b16c66c09a | 307 | gLED = 0; |
glanier9 | 12:94b16c66c09a | 308 | bLED = 0; |
glanier9 | 13:8987c75dfe41 | 309 | |
glanier9 | 14:ae63fb7c2d06 | 310 | /* Wait for user to press a setting button */ |
glanier9 | 12:94b16c66c09a | 311 | char bnum=0; |
glanier9 | 12:94b16c66c09a | 312 | while(1) { |
glanier9 | 12:94b16c66c09a | 313 | if (blue.readable() && blue.getc()=='!') { |
glanier9 | 12:94b16c66c09a | 314 | if (blue.getc()=='B') { //button data |
glanier9 | 12:94b16c66c09a | 315 | bnum = blue.getc(); //button number |
glanier9 | 13:8987c75dfe41 | 316 | if ((bnum>='1')&&(bnum<='4')) { //is a number button 1..4 |
glanier9 | 13:8987c75dfe41 | 317 | setting = bnum;// Change setting based on button input to set start setting. Check for chars |
glanier9 | 12:94b16c66c09a | 318 | break; //turn on/off that num LED |
glanier9 | 13:8987c75dfe41 | 319 | } |
glanier9 | 12:94b16c66c09a | 320 | } |
glanier9 | 12:94b16c66c09a | 321 | } |
glanier9 | 14:ae63fb7c2d06 | 322 | } |
glanier9 | 13:8987c75dfe41 | 323 | |
glanier9 | 14:ae63fb7c2d06 | 324 | /* Start all threads */ |
glanier9 | 12:94b16c66c09a | 325 | thread1.start(led_thread); |
glanier9 | 12:94b16c66c09a | 326 | thread2.start(speaker_thread); |
glanier9 | 12:94b16c66c09a | 327 | thread3.start(lcd1_thread); |
glanier9 | 12:94b16c66c09a | 328 | thread4.start(lcd2_thread); |
glanier9 | 13:8987c75dfe41 | 329 | |
glanier9 | 14:ae63fb7c2d06 | 330 | /* Infinite Loop, let threads run */ |
glanier9 | 15:e406620ee8af | 331 | while (1) { |
glanier9 | 15:e406620ee8af | 332 | |
glanier9 | 15:e406620ee8af | 333 | sem_check.wait(); |
glanier9 | 15:e406620ee8af | 334 | |
glanier9 | 15:e406620ee8af | 335 | if (blue.readable() && blue.getc()=='!') { |
glanier9 | 15:e406620ee8af | 336 | if (blue.getc()=='B') { //button data |
glanier9 | 15:e406620ee8af | 337 | char bnum = blue.getc(); //button number |
glanier9 | 15:e406620ee8af | 338 | if ((bnum>='1')&&(bnum<='4')) { //is a number button 1..4 |
glanier9 | 15:e406620ee8af | 339 | setting = bnum;// Change setting based on button input to set start setting. Check for chars |
glanier9 | 15:e406620ee8af | 340 | } |
glanier9 | 15:e406620ee8af | 341 | } |
glanier9 | 15:e406620ee8af | 342 | } |
glanier9 | 15:e406620ee8af | 343 | |
glanier9 | 15:e406620ee8af | 344 | semlcd1.release(); |
emilmont | 1:491820ee784d | 345 | } |
emilmont | 1:491820ee784d | 346 | } |