Worked at 10am 2/28
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
main.cpp@1:d988c10dcf0b, 2018-02-28 (annotated)
- Committer:
- Josahty
- Date:
- Wed Feb 28 16:56:18 2018 +0000
- Revision:
- 1:d988c10dcf0b
- Parent:
- 0:0871fbbffcad
Working at 2/28 10am
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Josahty | 0:0871fbbffcad | 1 | #include "mbed.h" |
Josahty | 0:0871fbbffcad | 2 | #include "rtos.h" |
Josahty | 1:d988c10dcf0b | 3 | #include "wave_player.h" |
Josahty | 1:d988c10dcf0b | 4 | #include "SDFileSystem.h" |
Josahty | 1:d988c10dcf0b | 5 | #include "uLCD_4DGL.h" |
Josahty | 1:d988c10dcf0b | 6 | RawSerial Blue(p28,p27); |
Josahty | 1:d988c10dcf0b | 7 | Serial pc(USBTX, USBRX); |
Josahty | 1:d988c10dcf0b | 8 | DigitalOut led1(LED1); |
Josahty | 1:d988c10dcf0b | 9 | DigitalOut led2(LED2); |
Josahty | 1:d988c10dcf0b | 10 | DigitalOut led3(LED3); |
Josahty | 1:d988c10dcf0b | 11 | DigitalOut led4(LED4); |
Josahty | 1:d988c10dcf0b | 12 | PwmOut led_red(p21); |
Josahty | 1:d988c10dcf0b | 13 | PwmOut led_green(p22); |
Josahty | 1:d988c10dcf0b | 14 | PwmOut led_blue(p23); |
Josahty | 1:d988c10dcf0b | 15 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
Josahty | 1:d988c10dcf0b | 16 | uLCD_4DGL uLCD(p9,p10,p11); |
Josahty | 0:0871fbbffcad | 17 | |
Josahty | 1:d988c10dcf0b | 18 | float x = 0.0; |
Josahty | 1:d988c10dcf0b | 19 | bool gfxstatus = false; |
Josahty | 1:d988c10dcf0b | 20 | bool textstatus = false; |
Josahty | 1:d988c10dcf0b | 21 | int soundmode = 0; |
Josahty | 1:d988c10dcf0b | 22 | int gfxmode = 0; |
Josahty | 1:d988c10dcf0b | 23 | int rgbmode = 0; |
Josahty | 1:d988c10dcf0b | 24 | |
Josahty | 1:d988c10dcf0b | 25 | Mutex stdio_mutex; |
Josahty | 1:d988c10dcf0b | 26 | Mutex sound_mutex; |
Josahty | 1:d988c10dcf0b | 27 | Mutex sound_mutex_2; |
Josahty | 1:d988c10dcf0b | 28 | Mutex blue_mutex; |
Josahty | 1:d988c10dcf0b | 29 | AnalogOut DACout(p18); |
Josahty | 1:d988c10dcf0b | 30 | wave_player waver(&DACout); |
Josahty | 1:d988c10dcf0b | 31 | |
Josahty | 1:d988c10dcf0b | 32 | Thread t1; |
Josahty | 1:d988c10dcf0b | 33 | Thread t2; |
Josahty | 1:d988c10dcf0b | 34 | Thread t3; |
Josahty | 1:d988c10dcf0b | 35 | Thread t4; |
Josahty | 1:d988c10dcf0b | 36 | |
Josahty | 1:d988c10dcf0b | 37 | FILE *wave_file; |
Josahty | 1:d988c10dcf0b | 38 | |
Josahty | 1:d988c10dcf0b | 39 | #include "cylonbyc.h" |
Josahty | 1:d988c10dcf0b | 40 | Ticker sampletick; |
Josahty | 1:d988c10dcf0b | 41 | #define sample_freq 11025.0 |
Josahty | 1:d988c10dcf0b | 42 | //get and set the frequency from wav conversion tool GUI |
Josahty | 1:d988c10dcf0b | 43 | int i=0; |
Josahty | 1:d988c10dcf0b | 44 | |
Josahty | 1:d988c10dcf0b | 45 | //interrupt routine to play next audio sample from array in flash |
Josahty | 1:d988c10dcf0b | 46 | void audio_sample () |
Josahty | 1:d988c10dcf0b | 47 | { |
Josahty | 1:d988c10dcf0b | 48 | sound_mutex_2.lock(); |
Josahty | 1:d988c10dcf0b | 49 | DACout.write_u16(sound_data[i]); |
Josahty | 1:d988c10dcf0b | 50 | i++; |
Josahty | 1:d988c10dcf0b | 51 | if (i>= NUM_ELEMENTS) { |
Josahty | 1:d988c10dcf0b | 52 | i = 0; |
Josahty | 1:d988c10dcf0b | 53 | sampletick.detach(); |
Josahty | 1:d988c10dcf0b | 54 | } |
Josahty | 1:d988c10dcf0b | 55 | sound_mutex_2.unlock(); |
Josahty | 1:d988c10dcf0b | 56 | } |
Josahty | 1:d988c10dcf0b | 57 | |
Josahty | 1:d988c10dcf0b | 58 | //global variables for main and interrupt routine |
Josahty | 1:d988c10dcf0b | 59 | volatile bool button_ready = 0; |
Josahty | 1:d988c10dcf0b | 60 | volatile int bnum = 0; |
Josahty | 1:d988c10dcf0b | 61 | volatile int bhit ; |
Josahty | 1:d988c10dcf0b | 62 | //state used to remember previous characters read in a button message |
Josahty | 1:d988c10dcf0b | 63 | enum statetype {start = 0, got_exclm, got_B, got_num, got_hit}; |
Josahty | 1:d988c10dcf0b | 64 | statetype state = start; |
Josahty | 1:d988c10dcf0b | 65 | |
Josahty | 1:d988c10dcf0b | 66 | //Interrupt routine to parse message with one new character per serial RX interrupt |
Josahty | 1:d988c10dcf0b | 67 | void parse_message() |
Josahty | 1:d988c10dcf0b | 68 | { |
Josahty | 1:d988c10dcf0b | 69 | |
Josahty | 1:d988c10dcf0b | 70 | led2 = !led2; |
Josahty | 0:0871fbbffcad | 71 | |
Josahty | 1:d988c10dcf0b | 72 | while(Blue.readable()) { |
Josahty | 1:d988c10dcf0b | 73 | blue_mutex.lock(); |
Josahty | 1:d988c10dcf0b | 74 | switch (state) { |
Josahty | 1:d988c10dcf0b | 75 | case start: |
Josahty | 1:d988c10dcf0b | 76 | if (Blue.getc()=='!') { |
Josahty | 1:d988c10dcf0b | 77 | state = got_exclm; |
Josahty | 1:d988c10dcf0b | 78 | } else state = start; |
Josahty | 1:d988c10dcf0b | 79 | break; |
Josahty | 1:d988c10dcf0b | 80 | case got_exclm: |
Josahty | 1:d988c10dcf0b | 81 | if (Blue.getc() == 'B') { |
Josahty | 1:d988c10dcf0b | 82 | state = got_B; |
Josahty | 1:d988c10dcf0b | 83 | } else state = start; |
Josahty | 1:d988c10dcf0b | 84 | break; |
Josahty | 1:d988c10dcf0b | 85 | case got_B: |
Josahty | 1:d988c10dcf0b | 86 | bnum = Blue.getc(); |
Josahty | 1:d988c10dcf0b | 87 | state = got_num; |
Josahty | 1:d988c10dcf0b | 88 | break; |
Josahty | 1:d988c10dcf0b | 89 | case got_num: |
Josahty | 1:d988c10dcf0b | 90 | bhit = Blue.getc(); |
Josahty | 1:d988c10dcf0b | 91 | state = got_hit; |
Josahty | 1:d988c10dcf0b | 92 | break; |
Josahty | 1:d988c10dcf0b | 93 | case got_hit: |
Josahty | 1:d988c10dcf0b | 94 | if (Blue.getc() == char(~('!' + ' B' + bnum + bhit))) button_ready = 1; |
Josahty | 1:d988c10dcf0b | 95 | state = start; |
Josahty | 1:d988c10dcf0b | 96 | break; |
Josahty | 1:d988c10dcf0b | 97 | default: |
Josahty | 1:d988c10dcf0b | 98 | Blue.getc(); |
Josahty | 1:d988c10dcf0b | 99 | state = start; |
Josahty | 1:d988c10dcf0b | 100 | } |
Josahty | 1:d988c10dcf0b | 101 | blue_mutex.unlock(); |
Josahty | 1:d988c10dcf0b | 102 | } |
Josahty | 1:d988c10dcf0b | 103 | |
Josahty | 1:d988c10dcf0b | 104 | //pc.printf("Left interrupt\n"); |
Josahty | 1:d988c10dcf0b | 105 | |
Josahty | 1:d988c10dcf0b | 106 | } |
Josahty | 1:d988c10dcf0b | 107 | |
Josahty | 1:d988c10dcf0b | 108 | inline float random_number() |
Josahty | 1:d988c10dcf0b | 109 | { |
Josahty | 1:d988c10dcf0b | 110 | return (rand()/(float(RAND_MAX))); |
Josahty | 1:d988c10dcf0b | 111 | } |
Josahty | 1:d988c10dcf0b | 112 | |
Josahty | 1:d988c10dcf0b | 113 | // mode = 0 shows alternating orbs and SONIC SCREWDRIVER |
Josahty | 1:d988c10dcf0b | 114 | // mode = 1 shows a rectangle and TARDIS APPROACHING |
Josahty | 1:d988c10dcf0b | 115 | void LCD_write(int user, int LCD_mode) |
Josahty | 1:d988c10dcf0b | 116 | { |
Josahty | 1:d988c10dcf0b | 117 | stdio_mutex.lock(); |
Josahty | 1:d988c10dcf0b | 118 | |
Josahty | 1:d988c10dcf0b | 119 | if(user == 0) { |
Josahty | 1:d988c10dcf0b | 120 | if(LCD_mode == 0) { |
Josahty | 1:d988c10dcf0b | 121 | uLCD.filled_rectangle(60,12,68,40, WHITE); |
Josahty | 1:d988c10dcf0b | 122 | uLCD.filled_rectangle(56,12,72,16, WHITE); |
Josahty | 1:d988c10dcf0b | 123 | uLCD.filled_rectangle(48,16,80,64, WHITE); |
Josahty | 1:d988c10dcf0b | 124 | uLCD.filled_rectangle(56,24,60,32, WHITE); |
Josahty | 1:d988c10dcf0b | 125 | uLCD.filled_rectangle(68,24,72,32, WHITE); |
Josahty | 1:d988c10dcf0b | 126 | if(gfxstatus) { |
Josahty | 1:d988c10dcf0b | 127 | uLCD.filled_circle(96, 32, 10, WHITE); |
Josahty | 1:d988c10dcf0b | 128 | uLCD.filled_circle(32, 32, 10, BLUE); |
Josahty | 1:d988c10dcf0b | 129 | } else { |
Josahty | 1:d988c10dcf0b | 130 | uLCD.filled_circle(32, 32, 10, WHITE); |
Josahty | 1:d988c10dcf0b | 131 | uLCD.filled_circle(96, 32, 10, BLUE); |
Josahty | 1:d988c10dcf0b | 132 | } |
Josahty | 1:d988c10dcf0b | 133 | } else if (LCD_mode == 1) { |
Josahty | 1:d988c10dcf0b | 134 | uLCD.filled_circle(96, 32, 10, WHITE); |
Josahty | 1:d988c10dcf0b | 135 | uLCD.filled_circle(32, 32, 10, WHITE); |
Josahty | 1:d988c10dcf0b | 136 | if(gfxstatus) { |
Josahty | 1:d988c10dcf0b | 137 | uLCD.filled_circle(64,58,10,WHITE); |
Josahty | 1:d988c10dcf0b | 138 | uLCD.filled_rectangle(60,12,68,40, WHITE); |
Josahty | 1:d988c10dcf0b | 139 | uLCD.filled_rectangle(56,12,72,16, BLUE); |
Josahty | 1:d988c10dcf0b | 140 | uLCD.filled_rectangle(48,16,80,64, BLUE); |
Josahty | 1:d988c10dcf0b | 141 | uLCD.filled_rectangle(56,24,60,32, WHITE); |
Josahty | 1:d988c10dcf0b | 142 | uLCD.filled_rectangle(68,24,72,32, WHITE); |
Josahty | 1:d988c10dcf0b | 143 | } else { |
Josahty | 1:d988c10dcf0b | 144 | uLCD.filled_rectangle(56,12,72,16, WHITE); |
Josahty | 1:d988c10dcf0b | 145 | uLCD.filled_rectangle(48,16,80,64, WHITE); |
Josahty | 1:d988c10dcf0b | 146 | uLCD.filled_rectangle(60,12,68,40, BLUE); |
Josahty | 1:d988c10dcf0b | 147 | uLCD.filled_circle(64,58,10,BLUE); |
Josahty | 1:d988c10dcf0b | 148 | } |
Josahty | 1:d988c10dcf0b | 149 | } |
Josahty | 1:d988c10dcf0b | 150 | } else if (user == 1) { |
Josahty | 1:d988c10dcf0b | 151 | if(LCD_mode == 0) { |
Josahty | 1:d988c10dcf0b | 152 | if(textstatus) { |
Josahty | 1:d988c10dcf0b | 153 | uLCD.locate(6, 9); // Move cursor |
Josahty | 1:d988c10dcf0b | 154 | uLCD.color(BLUE); |
Josahty | 1:d988c10dcf0b | 155 | uLCD.printf("SONIC"); |
Josahty | 1:d988c10dcf0b | 156 | uLCD.locate(4,13); // Move cursor |
Josahty | 1:d988c10dcf0b | 157 | uLCD.color(WHITE); |
Josahty | 1:d988c10dcf0b | 158 | uLCD.printf("SCREWDRIVER"); |
Josahty | 1:d988c10dcf0b | 159 | |
Josahty | 1:d988c10dcf0b | 160 | } else { |
Josahty | 1:d988c10dcf0b | 161 | uLCD.locate(6, 9); // Move cursor |
Josahty | 1:d988c10dcf0b | 162 | uLCD.color(WHITE); |
Josahty | 1:d988c10dcf0b | 163 | uLCD.printf("SONIC"); |
Josahty | 1:d988c10dcf0b | 164 | uLCD.locate(4,13); // Move cursor |
Josahty | 1:d988c10dcf0b | 165 | uLCD.color(BLUE); |
Josahty | 1:d988c10dcf0b | 166 | uLCD.printf("SCREWDRIVER"); |
Josahty | 1:d988c10dcf0b | 167 | } |
Josahty | 1:d988c10dcf0b | 168 | } else if(LCD_mode == 1) { |
Josahty | 1:d988c10dcf0b | 169 | if(textstatus) { |
Josahty | 1:d988c10dcf0b | 170 | uLCD.locate(6, 9); // Move cursor |
Josahty | 1:d988c10dcf0b | 171 | uLCD.color(BLUE); |
Josahty | 1:d988c10dcf0b | 172 | uLCD.printf("TARDIS"); |
Josahty | 1:d988c10dcf0b | 173 | uLCD.locate(4,13); // Move cursor |
Josahty | 1:d988c10dcf0b | 174 | uLCD.color(WHITE); |
Josahty | 1:d988c10dcf0b | 175 | uLCD.printf("APPROACHING"); |
Josahty | 1:d988c10dcf0b | 176 | |
Josahty | 1:d988c10dcf0b | 177 | } else { |
Josahty | 1:d988c10dcf0b | 178 | uLCD.locate(6, 9); // Move cursor |
Josahty | 1:d988c10dcf0b | 179 | uLCD.color(WHITE); |
Josahty | 1:d988c10dcf0b | 180 | uLCD.printf("TARDIS"); |
Josahty | 1:d988c10dcf0b | 181 | uLCD.locate(4,13); // Move cursor |
Josahty | 1:d988c10dcf0b | 182 | uLCD.color(BLUE); |
Josahty | 1:d988c10dcf0b | 183 | uLCD.printf("APPROACHING"); |
Josahty | 1:d988c10dcf0b | 184 | } |
Josahty | 1:d988c10dcf0b | 185 | } |
Josahty | 1:d988c10dcf0b | 186 | |
Josahty | 1:d988c10dcf0b | 187 | } |
Josahty | 1:d988c10dcf0b | 188 | stdio_mutex.unlock(); |
Josahty | 1:d988c10dcf0b | 189 | } |
Josahty | 1:d988c10dcf0b | 190 | |
Josahty | 1:d988c10dcf0b | 191 | void LCD_thread_1() // Displays two alternating circles on the LCD |
Josahty | 1:d988c10dcf0b | 192 | { |
Josahty | 1:d988c10dcf0b | 193 | while (true) { |
Josahty | 1:d988c10dcf0b | 194 | //led1 = !led1; |
Josahty | 1:d988c10dcf0b | 195 | gfxstatus = !gfxstatus; |
Josahty | 1:d988c10dcf0b | 196 | LCD_write(0,gfxmode); |
Josahty | 1:d988c10dcf0b | 197 | Thread::wait(1000); |
Josahty | 0:0871fbbffcad | 198 | } |
Josahty | 0:0871fbbffcad | 199 | } |
Josahty | 1:d988c10dcf0b | 200 | |
Josahty | 1:d988c10dcf0b | 201 | void LCD_thread_2() // Displays "Please seek shelter" on the LCD |
Josahty | 1:d988c10dcf0b | 202 | { |
Josahty | 1:d988c10dcf0b | 203 | while (true) { |
Josahty | 1:d988c10dcf0b | 204 | //led2 = !led2; |
Josahty | 1:d988c10dcf0b | 205 | textstatus = !textstatus; |
Josahty | 1:d988c10dcf0b | 206 | LCD_write(1,gfxmode); |
Josahty | 1:d988c10dcf0b | 207 | Thread::wait(1000); |
Josahty | 1:d988c10dcf0b | 208 | } |
Josahty | 1:d988c10dcf0b | 209 | } |
Josahty | 1:d988c10dcf0b | 210 | |
Josahty | 1:d988c10dcf0b | 211 | // mode = 0 gives Sonic Screwdriver (welding) lighting |
Josahty | 1:d988c10dcf0b | 212 | // mode = 1 gives Tardis (warmup/cooldown) lighting |
Josahty | 1:d988c10dcf0b | 213 | void RGB_write(int RGB_mode) |
Josahty | 1:d988c10dcf0b | 214 | { |
Josahty | 1:d988c10dcf0b | 215 | |
Josahty | 1:d988c10dcf0b | 216 | if(RGB_mode == 0) { |
Josahty | 1:d988c10dcf0b | 217 | for(int j = 0; j < 80; j++) { |
Josahty | 1:d988c10dcf0b | 218 | //get a new random number for PWM |
Josahty | 1:d988c10dcf0b | 219 | x = random_number(); |
Josahty | 1:d988c10dcf0b | 220 | //add some exponential brightness scaling |
Josahty | 1:d988c10dcf0b | 221 | //for more of a fast flash effect |
Josahty | 1:d988c10dcf0b | 222 | led_red = x*x*x; |
Josahty | 1:d988c10dcf0b | 223 | led_green = x*x*x; |
Josahty | 1:d988c10dcf0b | 224 | led_blue = x*x*x; |
Josahty | 1:d988c10dcf0b | 225 | Thread::wait(20); |
Josahty | 1:d988c10dcf0b | 226 | } |
Josahty | 1:d988c10dcf0b | 227 | led_red = 0; |
Josahty | 1:d988c10dcf0b | 228 | led_green = 0; |
Josahty | 1:d988c10dcf0b | 229 | led_blue = 0; |
Josahty | 1:d988c10dcf0b | 230 | } else if(RGB_mode == 1) { |
Josahty | 1:d988c10dcf0b | 231 | //LED warm up effect using PWM |
Josahty | 1:d988c10dcf0b | 232 | for(int j=0; j<25; j++) { |
Josahty | 1:d988c10dcf0b | 233 | //led_red = i/25.0; |
Josahty | 1:d988c10dcf0b | 234 | led_green = j/25.0; |
Josahty | 1:d988c10dcf0b | 235 | led_blue = j/25.0; |
Josahty | 1:d988c10dcf0b | 236 | Thread::wait(20); |
Josahty | 1:d988c10dcf0b | 237 | } |
Josahty | 1:d988c10dcf0b | 238 | //LED at full brightness level |
Josahty | 1:d988c10dcf0b | 239 | //led_red = 1.0; |
Josahty | 1:d988c10dcf0b | 240 | led_blue = 1.0; |
Josahty | 1:d988c10dcf0b | 241 | led_green = 1.0; |
Josahty | 1:d988c10dcf0b | 242 | Thread::wait(700); |
Josahty | 1:d988c10dcf0b | 243 | //LED cool down effect using PWM |
Josahty | 1:d988c10dcf0b | 244 | for(int j=25; j>0; j--) { |
Josahty | 1:d988c10dcf0b | 245 | //led_red = i/25.0; |
Josahty | 1:d988c10dcf0b | 246 | led_green = j/25.0; |
Josahty | 1:d988c10dcf0b | 247 | led_blue = j/25.0; |
Josahty | 1:d988c10dcf0b | 248 | Thread::wait(20); |
Josahty | 1:d988c10dcf0b | 249 | } |
Josahty | 1:d988c10dcf0b | 250 | //LED off |
Josahty | 1:d988c10dcf0b | 251 | led_red = 0.0; |
Josahty | 1:d988c10dcf0b | 252 | led_green = 0.0; |
Josahty | 1:d988c10dcf0b | 253 | led_blue = 0.0; |
Josahty | 1:d988c10dcf0b | 254 | } |
Josahty | 1:d988c10dcf0b | 255 | } |
Josahty | 1:d988c10dcf0b | 256 | void RGB_thread() |
Josahty | 1:d988c10dcf0b | 257 | { |
Josahty | 1:d988c10dcf0b | 258 | while (true) { |
Josahty | 1:d988c10dcf0b | 259 | //led3 = !led3; |
Josahty | 1:d988c10dcf0b | 260 | RGB_write(rgbmode); |
Josahty | 1:d988c10dcf0b | 261 | Thread::wait(1000); |
Josahty | 1:d988c10dcf0b | 262 | } |
Josahty | 1:d988c10dcf0b | 263 | } |
Josahty | 1:d988c10dcf0b | 264 | void Sound_write(int snd_mode) |
Josahty | 1:d988c10dcf0b | 265 | { |
Josahty | 1:d988c10dcf0b | 266 | stdio_mutex.lock(); |
Josahty | 1:d988c10dcf0b | 267 | |
Josahty | 1:d988c10dcf0b | 268 | if(soundmode == 0) { |
Josahty | 1:d988c10dcf0b | 269 | |
Josahty | 1:d988c10dcf0b | 270 | //sampletick.attach(&audio_sample, 1.0 / sample_freq); |
Josahty | 1:d988c10dcf0b | 271 | |
Josahty | 1:d988c10dcf0b | 272 | wave_file=fopen("/sd/sonic.wav","r"); |
Josahty | 1:d988c10dcf0b | 273 | waver.play(wave_file); |
Josahty | 1:d988c10dcf0b | 274 | fclose(wave_file); |
Josahty | 1:d988c10dcf0b | 275 | } else if(soundmode == 1) { |
Josahty | 1:d988c10dcf0b | 276 | |
Josahty | 1:d988c10dcf0b | 277 | wave_file=fopen("/sd/tardis.wav","r"); |
Josahty | 1:d988c10dcf0b | 278 | waver.play(wave_file); |
Josahty | 1:d988c10dcf0b | 279 | fclose(wave_file); |
Josahty | 1:d988c10dcf0b | 280 | } |
Josahty | 1:d988c10dcf0b | 281 | stdio_mutex.unlock(); |
Josahty | 1:d988c10dcf0b | 282 | } |
Josahty | 1:d988c10dcf0b | 283 | |
Josahty | 1:d988c10dcf0b | 284 | void Sound_thread() |
Josahty | 1:d988c10dcf0b | 285 | { |
Josahty | 1:d988c10dcf0b | 286 | while(true) { |
Josahty | 1:d988c10dcf0b | 287 | led1 = !led1; |
Josahty | 1:d988c10dcf0b | 288 | Sound_write(soundmode); |
Josahty | 1:d988c10dcf0b | 289 | Thread::wait(1310); |
Josahty | 1:d988c10dcf0b | 290 | } |
Josahty | 1:d988c10dcf0b | 291 | } |
Josahty | 1:d988c10dcf0b | 292 | |
Josahty | 1:d988c10dcf0b | 293 | |
Josahty | 1:d988c10dcf0b | 294 | int main() |
Josahty | 1:d988c10dcf0b | 295 | { |
Josahty | 1:d988c10dcf0b | 296 | uLCD.background_color(WHITE); |
Josahty | 1:d988c10dcf0b | 297 | uLCD.cls(); |
Josahty | 1:d988c10dcf0b | 298 | uLCD.textbackground_color(WHITE); |
Josahty | 1:d988c10dcf0b | 299 | |
Josahty | 1:d988c10dcf0b | 300 | t1.start(LCD_thread_1); |
Josahty | 1:d988c10dcf0b | 301 | t2.start(LCD_thread_2); |
Josahty | 1:d988c10dcf0b | 302 | t3.start(RGB_thread); |
Josahty | 1:d988c10dcf0b | 303 | t4.start(Sound_thread); |
Josahty | 1:d988c10dcf0b | 304 | |
Josahty | 1:d988c10dcf0b | 305 | //pc.printf("hi\n"); |
Josahty | 1:d988c10dcf0b | 306 | Blue.attach(&parse_message,Serial::RxIrq); |
Josahty | 1:d988c10dcf0b | 307 | //pc.printf("bye\n"); |
Josahty | 1:d988c10dcf0b | 308 | |
Josahty | 1:d988c10dcf0b | 309 | |
Josahty | 1:d988c10dcf0b | 310 | |
Josahty | 1:d988c10dcf0b | 311 | while (true) { |
Josahty | 1:d988c10dcf0b | 312 | |
Josahty | 1:d988c10dcf0b | 313 | if(button_ready && (bnum=='5')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 314 | pc.printf("Sound Mode Mode = 0\n"); |
Josahty | 1:d988c10dcf0b | 315 | soundmode = 0; |
Josahty | 1:d988c10dcf0b | 316 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 317 | } else if(button_ready && (bnum=='6')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 318 | pc.printf("Sound Mode = 1\n"); |
Josahty | 1:d988c10dcf0b | 319 | soundmode = 1; |
Josahty | 1:d988c10dcf0b | 320 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 321 | } else if(button_ready && (bnum=='1')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 322 | pc.printf("Graphics Mode = 0\n"); |
Josahty | 1:d988c10dcf0b | 323 | gfxmode = 0; |
Josahty | 1:d988c10dcf0b | 324 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 325 | } else if(button_ready && (bnum=='2')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 326 | pc.printf("Graphics Mode = 1\n"); |
Josahty | 1:d988c10dcf0b | 327 | gfxmode = 1; |
Josahty | 1:d988c10dcf0b | 328 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 329 | } else if(button_ready && (bnum=='3')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 330 | pc.printf("Light Mode = 0\n"); |
Josahty | 1:d988c10dcf0b | 331 | rgbmode = 0; |
Josahty | 1:d988c10dcf0b | 332 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 333 | } else if(button_ready && (bnum=='4')) { // button 4 changed |
Josahty | 1:d988c10dcf0b | 334 | pc.printf("Light Mode = 1\n"); |
Josahty | 1:d988c10dcf0b | 335 | rgbmode = 1; |
Josahty | 1:d988c10dcf0b | 336 | button_ready = 0; //reset flag after reading button message |
Josahty | 1:d988c10dcf0b | 337 | } |
Josahty | 1:d988c10dcf0b | 338 | |
Josahty | 1:d988c10dcf0b | 339 | |
Josahty | 1:d988c10dcf0b | 340 | Thread::wait(50); |
Josahty | 1:d988c10dcf0b | 341 | } |
Josahty | 1:d988c10dcf0b | 342 | } |