Worked at 10am 2/28

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

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?

UserRevisionLine numberNew 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 }