hw3p2
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
main.cpp
- Committer:
- lzzcd001
- Date:
- 2015-02-24
- Revision:
- 0:0f7c4e464135
File content as of revision 0:0f7c4e464135:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" uLCD_4DGL lcd(p28, p27, p30); Mutex stdio_mutex; DigitalOut latch(p15); DigitalOut enable(p16); DigitalOut led1(LED1); SPI spi(p11, p12, p13); SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card AnalogOut DACout(p18); wave_player waver(&DACout); void RGB_LED(int red, int green, int blue) { unsigned int low_color=0; unsigned int high_color=0; high_color=(blue<<4)|((red&0x3C0)>>6); low_color=(((red&0x3F)<<10)|(green)); spi.write(high_color); spi.write(low_color); latch=1; latch=0; } void shiftbrite(void const *args) { stdio_mutex.lock(); int red=0; int green=0; int blue=0; int r=1; int g=1; int b=1; while(1) { if (r == 1){ if (red <= 255) {red += 5;} else {r= 1-r;} } else { if (red >= 0) {red -= 5;} else {r= 1-r;} } if (b == 1){ if (blue <= 255) {blue += 5;} else {b=!b;} } else { if (blue >= 0) {blue -= 5;} else {b=!b;} } if (g == 1){ if (green <= 255) {green += 5;} else {g=!g;} } else { if (green >= 0) {green -= 5;} else {g=!g;} } RGB_LED(red, green, blue); stdio_mutex.unlock(); wait(5); } } void lcd1(void const *args) { stdio_mutex.lock(); lcd.locate(0,0); lcd.printf("police light"); stdio_mutex.unlock(); stdio_mutex.lock(); for (int i=0; i<10; i++) { lcd.locate(1,0); lcd.printf("Counter: %d", i); } stdio_mutex.unlock(); Thread:wait(2000); //lcd.line(64,64,prevline_x,prevline_y, BLACK); //lcd.circle(prevcirc_x,prevcirc_y, 10, BLACK); //float line_x = 30*cos(heading*pi/180) + 64; //float line_y = 30*sin(heading*pi/180) + 64; //lcd.circle(64, 64, 30, GREEN); //lcd.line(64,64,line_x, line_y, BLUE); } void lcd2(void const *args) { stdio_mutex.lock(); lcd.locate(6,0); lcd.printf("fire sound"); stdio_mutex.unlock(); Thread::wait(4000); //lcd.line(64,64,prevline_x,prevline_y, BLACK); //lcd.circle(prevcirc_x,prevcirc_y, 10, BLACK); //float line_x = 30*cos(heading*pi/180) + 64; //float line_y = 30*sin(heading*pi/180) + 64; //lcd.circle(64, 64, 30, GREEN); //lcd.line(64,64,line_x, line_y, BLUE); } int main() { spi.format(16,0); spi.frequency(500000); FILE *wave_file; Thread t1(lcd1, (void *)"Th 1"); Thread t2(lcd2, (void *)"Th 2"); Thread t3(shiftbrite, (void *)"Th 3"); while (true) { wave_file=fopen("/sd/test.wav","r"); waver.play(wave_file); fclose(wave_file); led1 = !led1; Theard::wait(1000); } }