asd / Mbed 2 deprecated 4180lab03_multithread

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

Committer:
jderemer3
Date:
Mon Feb 27 04:00:50 2017 +0000
Revision:
1:554209140cec
Parent:
0:471e3038d16a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jderemer3 0:471e3038d16a 1 #include "mbed.h"
jderemer3 0:471e3038d16a 2 #include "rtos.h"
jderemer3 0:471e3038d16a 3 #include "RGBLed.h"
jderemer3 0:471e3038d16a 4 #include "uLCD_4DGL.h"
jderemer3 0:471e3038d16a 5
jderemer3 0:471e3038d16a 6 DigitalOut led1(LED1);
jderemer3 0:471e3038d16a 7 DigitalOut led2(LED2);
jderemer3 0:471e3038d16a 8 DigitalOut led3(LED3);
jderemer3 0:471e3038d16a 9 DigitalOut led4(LED4);
jderemer3 0:471e3038d16a 10
jderemer3 1:554209140cec 11 // RGBLed myRGBled(p21,p22,p23); //RGB PWM pins
jderemer3 1:554209140cec 12
jderemer3 1:554209140cec 13 Serial bluemod(p28,p27);
jderemer3 1:554209140cec 14 PwmOut red(p21);
jderemer3 1:554209140cec 15 PwmOut green(p22);
jderemer3 1:554209140cec 16 PwmOut blue(p23);
jderemer3 0:471e3038d16a 17
jderemer3 0:471e3038d16a 18 uLCD_4DGL uLCD(p9, p10, p11);
jderemer3 0:471e3038d16a 19
jderemer3 0:471e3038d16a 20 Thread t1;
jderemer3 0:471e3038d16a 21 Thread t2;
jderemer3 0:471e3038d16a 22 Thread t3;
jderemer3 0:471e3038d16a 23 Thread t4;
jderemer3 0:471e3038d16a 24
jderemer3 0:471e3038d16a 25 Mutex lk_LCD;
jderemer3 0:471e3038d16a 26
jderemer3 0:471e3038d16a 27 void rgb_t3() {
jderemer3 1:554209140cec 28
jderemer3 0:471e3038d16a 29 while (true) {
jderemer3 1:554209140cec 30
jderemer3 0:471e3038d16a 31 }
jderemer3 0:471e3038d16a 32 }
jderemer3 0:471e3038d16a 33
jderemer3 0:471e3038d16a 34 void lcd_t1() {
jderemer3 0:471e3038d16a 35 while (true) {
jderemer3 0:471e3038d16a 36 for (int i = 0; i < 10; i++)
jderemer3 0:471e3038d16a 37 {
jderemer3 0:471e3038d16a 38 lk_LCD.lock();
jderemer3 0:471e3038d16a 39 uLCD.locate(2,2);
jderemer3 0:471e3038d16a 40 uLCD.printf("\n Hello World! \nCount by one is %d!\n", i);
jderemer3 0:471e3038d16a 41 lk_LCD.unlock();
jderemer3 0:471e3038d16a 42 Thread::wait(1000);
jderemer3 0:471e3038d16a 43 }
jderemer3 0:471e3038d16a 44 }
jderemer3 0:471e3038d16a 45 }
jderemer3 0:471e3038d16a 46
jderemer3 0:471e3038d16a 47 void lcd_t2() {
jderemer3 0:471e3038d16a 48 while (true) {
jderemer3 0:471e3038d16a 49 for (int j = 0; j < 20; j += 2)
jderemer3 0:471e3038d16a 50 {
jderemer3 0:471e3038d16a 51 lk_LCD.lock();
jderemer3 0:471e3038d16a 52 uLCD.locate(4,4);
jderemer3 0:471e3038d16a 53 uLCD.printf("\n Hello World! \nCount by two is %d!\n", j);
jderemer3 0:471e3038d16a 54 lk_LCD.unlock();
jderemer3 0:471e3038d16a 55 Thread::wait(2000);
jderemer3 0:471e3038d16a 56 }
jderemer3 0:471e3038d16a 57 }
jderemer3 0:471e3038d16a 58 }
jderemer3 0:471e3038d16a 59
jderemer3 1:554209140cec 60
jderemer3 1:554209140cec 61
jderemer3 0:471e3038d16a 62 int main() {
jderemer3 1:554209140cec 63 // myRGBled.write(0.0, 0.0, 0.0);
jderemer3 1:554209140cec 64 char bred=0;
jderemer3 1:554209140cec 65 char bgreen=0;
jderemer3 1:554209140cec 66 char bblue=0;
jderemer3 1:554209140cec 67 red = green = blue = 0;
jderemer3 1:554209140cec 68
jderemer3 0:471e3038d16a 69 t3.start(rgb_t3);
jderemer3 0:471e3038d16a 70 t1.start(lcd_t1);
jderemer3 0:471e3038d16a 71 t2.start(lcd_t2);
jderemer3 1:554209140cec 72
jderemer3 0:471e3038d16a 73 while (true) {
jderemer3 1:554209140cec 74 if (bluemod.getc()=='!') {
jderemer3 1:554209140cec 75 if (bluemod.getc()=='C') { //color data packet
jderemer3 1:554209140cec 76 bred = bluemod.getc(); // RGB color values
jderemer3 1:554209140cec 77 bgreen = bluemod.getc();
jderemer3 1:554209140cec 78 bblue = bluemod.getc();
jderemer3 1:554209140cec 79 if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK?
jderemer3 1:554209140cec 80 red = bred/255.0; //send new color to RGB LED PWM outputs
jderemer3 1:554209140cec 81 green = bgreen/255.0;
jderemer3 1:554209140cec 82 blue = bblue/255.0;
jderemer3 1:554209140cec 83 }
jderemer3 1:554209140cec 84 }
jderemer3 1:554209140cec 85 }
jderemer3 0:471e3038d16a 86 led1 = !led1;
jderemer3 0:471e3038d16a 87 Thread::wait(500);
jderemer3 0:471e3038d16a 88 }
jderemer3 0:471e3038d16a 89 }