HW2_2

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

Fork of rtos_mutex by mbed official

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?

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