4180 lab 5
Dependencies: mbed 4DGL-uLCD-SE RPCInterface
main.cpp
- Committer:
- emilywilson
- Date:
- 2020-02-24
- Revision:
- 3:94d9434576af
- Parent:
- 2:4845e2dae429
- Child:
- 4:1ef667567942
File content as of revision 3:94d9434576af:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" #include "SDFileSystem.h" #include "wave_player.h" //#include "part2.h" //#include "part3.h" #include "part4_led.h" //#include "lidar_theremin.h" Serial pc(USBTX, USBRX); RawSerial dev(p9,p10); DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); RGBLed led = RGBLed(p21, p22, p23); Color colors[] = { _red, _pink, _orange, _yellow }; uLCD_4DGL lcd(p28,p27,p30); Thread led_thread; Thread lcd_thread1; Thread lcd_thread2; Thread audio_thread; void changeColor() { while (dev.readable()) { char c = dev.getc(); if (c == 'r') { colors[0] = _red; colors[1] = _pink; colors[2] = _orange; colors[3] = _yellow; } else if (c == 'b') { colors[0] = _teal; colors[1] = _light_blue; colors[2] = _blue; colors[3] = _purple; } else if (c == 'g') { colors[0] = _yellow; colors[1] = _light_green; colors[2] = _green; colors[3] = _teal; } } } void led_handler() { Color c = colors[0]; int i = 0; while (1) { led.write(c.red, c.green, c.blue); i = (i + 1) % 4; c = colors[i]; Thread::wait(500); } } Mutex lcd_mutex; //Semaphore sem(1); void lcd1_handler() { int i = 0; while (1) { lcd_mutex.lock(); // sem.wait(); lcd.locate(0, 0); lcd.printf("Counter: %d", i); lcd_mutex.unlock(); // sem.release(); i++; Thread::wait(1000); } } void lcd2_handler() { int i,k, offset; double s,a; k = 1; offset = 50; lcd_mutex.lock(); // sem.wait(); lcd.rectangle(89,0,127,17,1); lcd_mutex.unlock(); // sem.release(); while(1) { // thread loop // v = 1; lcd_mutex.lock(); // sem.wait(); for (i=0; i<127; i++) { s = 8 * sin((long double)(i+k) /5); // pixel to print a = 8 * sin((long double)(i+k-1) /5); // old pixel to erase lcd.pixel(i,offset + (int)a, BLACK); // erase pixel lcd.pixel(i,offset + (int)s, WHITE); // print pixel } lcd_mutex.unlock(); // sem.release(); k++; Thread::wait(100); // value of pot1 / 100 } } SDFileSystem sd(p5, p6, p7, p8, "sd"); AnalogOut DACout(p18); wave_player waver(&DACout); void audio_handler() { FILE *wave_file; myled2 = !myled2; // printf("\n\n\nHello, wave world!\n"); // myled4 = !myled4; while (1) { myled4 = !myled4; wave_file=fopen("/sd/sample.wav","r"); waver.play(wave_file); fclose(wave_file); Thread::wait(1000); } } int main() { // run_part2(); // run_part2_EC(); // run_lidar_theremin(); // run_part3(); pc.baud(9600); dev.baud(9600); led_thread.start(led_handler); lcd.cls(); lcd_thread1.start(lcd1_handler); lcd_thread2.start(lcd2_handler); myled2 = !myled2; audio_thread.start(audio_handler); myled3 = !myled3; dev.attach(&changeColor, Serial::RxIrq); while (1) { myled1 = !myled1; Thread::wait(500); } }