HW2_2
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
Fork of rtos_mutex by
main.cpp@5:08ccfbd78092, 2015-02-23 (annotated)
- Committer:
- lzzcd001
- Date:
- Mon Feb 23 15:05:26 2015 +0000
- Revision:
- 5:08ccfbd78092
- Parent:
- 1:0f886ffbe0c1
hw3_p2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:0f886ffbe0c1 | 1 | #include "mbed.h" |
emilmont | 1:0f886ffbe0c1 | 2 | #include "rtos.h" |
lzzcd001 | 5:08ccfbd78092 | 3 | #include "uLCD_4DGL.h" |
lzzcd001 | 5:08ccfbd78092 | 4 | |
lzzcd001 | 5:08ccfbd78092 | 5 | uLCD_4DGL lcd(p28, p27, p30); |
emilmont | 1:0f886ffbe0c1 | 6 | |
emilmont | 1:0f886ffbe0c1 | 7 | Mutex stdio_mutex; |
emilmont | 1:0f886ffbe0c1 | 8 | |
lzzcd001 | 5:08ccfbd78092 | 9 | DigitalOut latch(p15); |
lzzcd001 | 5:08ccfbd78092 | 10 | DigitalOut enable(p16); |
lzzcd001 | 5:08ccfbd78092 | 11 | DigitalOut led1(LED1); |
lzzcd001 | 5:08ccfbd78092 | 12 | |
lzzcd001 | 5:08ccfbd78092 | 13 | SPI spi(p11, p12, p13); |
lzzcd001 | 5:08ccfbd78092 | 14 | |
lzzcd001 | 5:08ccfbd78092 | 15 | void RGB_LED(int red, int green, int blue) { |
lzzcd001 | 5:08ccfbd78092 | 16 | unsigned int low_color=0; |
lzzcd001 | 5:08ccfbd78092 | 17 | unsigned int high_color=0; |
lzzcd001 | 5:08ccfbd78092 | 18 | high_color=(blue<<4)|((red&0x3C0)>>6); |
lzzcd001 | 5:08ccfbd78092 | 19 | low_color=(((red&0x3F)<<10)|(green)); |
lzzcd001 | 5:08ccfbd78092 | 20 | spi.write(high_color); |
lzzcd001 | 5:08ccfbd78092 | 21 | spi.write(low_color); |
lzzcd001 | 5:08ccfbd78092 | 22 | latch=1; |
lzzcd001 | 5:08ccfbd78092 | 23 | latch=0; |
emilmont | 1:0f886ffbe0c1 | 24 | } |
emilmont | 1:0f886ffbe0c1 | 25 | |
lzzcd001 | 5:08ccfbd78092 | 26 | void shiftbrite(void const *args) { |
lzzcd001 | 5:08ccfbd78092 | 27 | stdio_mutex.lock(); |
lzzcd001 | 5:08ccfbd78092 | 28 | int red=0; |
lzzcd001 | 5:08ccfbd78092 | 29 | int green=0; |
lzzcd001 | 5:08ccfbd78092 | 30 | int blue=0; |
lzzcd001 | 5:08ccfbd78092 | 31 | int r=1; |
lzzcd001 | 5:08ccfbd78092 | 32 | int g=1; |
lzzcd001 | 5:08ccfbd78092 | 33 | int b=1; |
lzzcd001 | 5:08ccfbd78092 | 34 | while(1) { |
lzzcd001 | 5:08ccfbd78092 | 35 | if (r == 1){ |
lzzcd001 | 5:08ccfbd78092 | 36 | if (red <= 255) {red += 5;} else {r= 1-r;} |
lzzcd001 | 5:08ccfbd78092 | 37 | } else { |
lzzcd001 | 5:08ccfbd78092 | 38 | if (red >= 0) {red -= 5;} else {r= 1-r;} |
lzzcd001 | 5:08ccfbd78092 | 39 | } |
lzzcd001 | 5:08ccfbd78092 | 40 | if (b == 1){ |
lzzcd001 | 5:08ccfbd78092 | 41 | if (blue <= 255) {blue += 5;} else {b=!b;} |
lzzcd001 | 5:08ccfbd78092 | 42 | } else { |
lzzcd001 | 5:08ccfbd78092 | 43 | if (blue >= 0) {blue -= 5;} else {b=!b;} |
lzzcd001 | 5:08ccfbd78092 | 44 | } |
lzzcd001 | 5:08ccfbd78092 | 45 | if (g == 1){ |
lzzcd001 | 5:08ccfbd78092 | 46 | if (green <= 255) {green += 5;} else {g=!g;} |
lzzcd001 | 5:08ccfbd78092 | 47 | } else { |
lzzcd001 | 5:08ccfbd78092 | 48 | if (green >= 0) {green -= 5;} else {g=!g;} |
lzzcd001 | 5:08ccfbd78092 | 49 | } |
lzzcd001 | 5:08ccfbd78092 | 50 | RGB_LED(red, green, blue); |
lzzcd001 | 5:08ccfbd78092 | 51 | stdio_mutex.unlock(); |
lzzcd001 | 5:08ccfbd78092 | 52 | wait(5); |
emilmont | 1:0f886ffbe0c1 | 53 | } |
emilmont | 1:0f886ffbe0c1 | 54 | } |
emilmont | 1:0f886ffbe0c1 | 55 | |
lzzcd001 | 5:08ccfbd78092 | 56 | void lcd1(void const *args) { |
lzzcd001 | 5:08ccfbd78092 | 57 | stdio_mutex.lock(); |
lzzcd001 | 5:08ccfbd78092 | 58 | lcd.printf("music playing"); |
lzzcd001 | 5:08ccfbd78092 | 59 | stdio_mutex.unlock(); |
lzzcd001 | 5:08ccfbd78092 | 60 | //lcd.line(64,64,prevline_x,prevline_y, BLACK); |
lzzcd001 | 5:08ccfbd78092 | 61 | //lcd.circle(prevcirc_x,prevcirc_y, 10, BLACK); |
lzzcd001 | 5:08ccfbd78092 | 62 | //float line_x = 30*cos(heading*pi/180) + 64; |
lzzcd001 | 5:08ccfbd78092 | 63 | //float line_y = 30*sin(heading*pi/180) + 64; |
lzzcd001 | 5:08ccfbd78092 | 64 | //lcd.circle(64, 64, 30, GREEN); |
lzzcd001 | 5:08ccfbd78092 | 65 | //lcd.line(64,64,line_x, line_y, BLUE); |
lzzcd001 | 5:08ccfbd78092 | 66 | } |
lzzcd001 | 5:08ccfbd78092 | 67 | |
emilmont | 1:0f886ffbe0c1 | 68 | int main() { |
lzzcd001 | 5:08ccfbd78092 | 69 | spi.format(16,0); |
lzzcd001 | 5:08ccfbd78092 | 70 | spi.frequency(500000); |
lzzcd001 | 5:08ccfbd78092 | 71 | enable=0; |
lzzcd001 | 5:08ccfbd78092 | 72 | latch=0; |
lzzcd001 | 5:08ccfbd78092 | 73 | Thread t1(lcd1, (void *)"Th 1"); |
lzzcd001 | 5:08ccfbd78092 | 74 | Thread t2(shiftbrite, (void *)"Th 2"); |
emilmont | 1:0f886ffbe0c1 | 75 | |
lzzcd001 | 5:08ccfbd78092 | 76 | while (true) { |
lzzcd001 | 5:08ccfbd78092 | 77 | led1 = !led1; |
lzzcd001 | 5:08ccfbd78092 | 78 | Thread::wait(10); |
lzzcd001 | 5:08ccfbd78092 | 79 | } |
lzzcd001 | 5:08ccfbd78092 | 80 | |
lzzcd001 | 5:08ccfbd78092 | 81 | //Thread t3(test_thread, (void *)"Th 3"); |
lzzcd001 | 5:08ccfbd78092 | 82 | |
lzzcd001 | 5:08ccfbd78092 | 83 | //test_thread((void *)"Th 1"); |
emilmont | 1:0f886ffbe0c1 | 84 | } |
lzzcd001 | 5:08ccfbd78092 | 85 | |
lzzcd001 | 5:08ccfbd78092 | 86 |