change in mbed rtos library
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed
Fork of rtos_basic by
main.cpp@12:fb46c68fa360, 2018-02-28 (annotated)
- Committer:
- bjs9
- Date:
- Wed Feb 28 07:20:20 2018 +0000
- Revision:
- 12:fb46c68fa360
- Parent:
- 11:0309bef74ba8
- Child:
- 13:b0bfe7f4472a
lab3part3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
mbed_official | 11:0309bef74ba8 | 2 | #include "rtos.h" |
bjs9 | 12:fb46c68fa360 | 3 | #include "uLCD_4DGL.h" |
bjs9 | 12:fb46c68fa360 | 4 | #include "RGB_LED.h" |
bjs9 | 12:fb46c68fa360 | 5 | |
bjs9 | 12:fb46c68fa360 | 6 | |
emilmont | 1:491820ee784d | 7 | DigitalOut led1(LED1); |
emilmont | 1:491820ee784d | 8 | DigitalOut led2(LED2); |
geky | 7:8d9919175929 | 9 | Thread thread; |
bjs9 | 12:fb46c68fa360 | 10 | Thread thread2; |
bjs9 | 12:fb46c68fa360 | 11 | Thread thread3; |
bjs9 | 12:fb46c68fa360 | 12 | Thread thread4; |
bjs9 | 12:fb46c68fa360 | 13 | Mutex stdio_mutex; |
bjs9 | 12:fb46c68fa360 | 14 | uLCD_4DGL uLCD(p28,p27,p29); |
bjs9 | 12:fb46c68fa360 | 15 | RGBLed myRGBled(p22,p23,p24); |
bjs9 | 12:fb46c68fa360 | 16 | void printName() { |
bjs9 | 12:fb46c68fa360 | 17 | stdio_mutex.lock(); |
bjs9 | 12:fb46c68fa360 | 18 | uLCD.printf("\nMy name is Barry Johnson-Smith\n"); |
bjs9 | 12:fb46c68fa360 | 19 | //Time to dance at same time as color changing. |
bjs9 | 12:fb46c68fa360 | 20 | uLCD.cls(); |
bjs9 | 12:fb46c68fa360 | 21 | stdio_mutex.unlock(); |
bjs9 | 12:fb46c68fa360 | 22 | } |
bjs9 | 12:fb46c68fa360 | 23 | void colorULCD() { |
bjs9 | 12:fb46c68fa360 | 24 | stdio_mutex.lock(); |
bjs9 | 12:fb46c68fa360 | 25 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 26 | uLCD.filled_circle(60,60,20,RED); |
bjs9 | 12:fb46c68fa360 | 27 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 28 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 29 | uLCD.filled_circle(60,60,20,BLUE); |
bjs9 | 12:fb46c68fa360 | 30 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 31 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 32 | uLCD.filled_circle(60,60,20,RED); |
bjs9 | 12:fb46c68fa360 | 33 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 34 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 35 | uLCD.filled_circle(60,60,20, 255*65536+165*256+0); |
bjs9 | 12:fb46c68fa360 | 36 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 37 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 38 | uLCD.filled_circle(60,60,20,255*65536+255*256+0); |
bjs9 | 12:fb46c68fa360 | 39 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 40 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 41 | uLCD.filled_circle(60,60,20,GREEN); |
bjs9 | 12:fb46c68fa360 | 42 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 43 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 44 | uLCD.filled_circle(60,60,20,BLUE); |
bjs9 | 12:fb46c68fa360 | 45 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 46 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 47 | uLCD.filled_circle(60,60,20,75*65536+0*256+130); |
bjs9 | 12:fb46c68fa360 | 48 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 49 | uLCD.line(60,80,60,0,128*65536+128*256+128); |
bjs9 | 12:fb46c68fa360 | 50 | uLCD.filled_circle(60,60,20,128*65536+0*256+128); |
bjs9 | 12:fb46c68fa360 | 51 | stdio_mutex.unlock(); |
bjs9 | 12:fb46c68fa360 | 52 | } |
emilmont | 1:491820ee784d | 53 | |
bjs9 | 12:fb46c68fa360 | 54 | void uLCD_thread1() { |
bjs9 | 12:fb46c68fa360 | 55 | while (true) { |
bjs9 | 12:fb46c68fa360 | 56 | colorULCD(); |
bjs9 | 12:fb46c68fa360 | 57 | Thread::wait(500); |
bjs9 | 12:fb46c68fa360 | 58 | } |
bjs9 | 12:fb46c68fa360 | 59 | |
bjs9 | 12:fb46c68fa360 | 60 | } |
bjs9 | 12:fb46c68fa360 | 61 | void uLCD_thread2() { |
emilmont | 1:491820ee784d | 62 | while (true) { |
bjs9 | 12:fb46c68fa360 | 63 | printName(); |
bjs9 | 12:fb46c68fa360 | 64 | Thread::wait(1000); |
emilmont | 1:491820ee784d | 65 | } |
bjs9 | 12:fb46c68fa360 | 66 | |
bjs9 | 12:fb46c68fa360 | 67 | } |
bjs9 | 12:fb46c68fa360 | 68 | void RGB_LED() { |
bjs9 | 12:fb46c68fa360 | 69 | while(true) { |
bjs9 | 12:fb46c68fa360 | 70 | myRGBled.write(1.0f, 0, 0); // turn the RGB LED red |
bjs9 | 12:fb46c68fa360 | 71 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 72 | myRGBled.write(0, 0, 255); // turn the RGB LED blue |
bjs9 | 12:fb46c68fa360 | 73 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 74 | // Example blended myRGBled.writes: |
bjs9 | 12:fb46c68fa360 | 75 | myRGBled.write(255,0,0); // turn the RGB LED red |
bjs9 | 12:fb46c68fa360 | 76 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 77 | myRGBled.write(237,109,0); // turn the RGB LED orange |
bjs9 | 12:fb46c68fa360 | 78 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 79 | myRGBled.write(255,215,0); // turn the RGB LED yellow |
bjs9 | 12:fb46c68fa360 | 80 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 81 | myRGBled.write(34,139,34); // turn the RGB LED green |
bjs9 | 12:fb46c68fa360 | 82 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 83 | myRGBled.write(0,0,255); // turn the RGB LED blue |
bjs9 | 12:fb46c68fa360 | 84 | Thread::wait(050); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 85 | myRGBled.write(0,46,90); // turn the RGB LED indigo |
bjs9 | 12:fb46c68fa360 | 86 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 87 | myRGBled.write(128,0,128); // turn the RGB LED purple |
bjs9 | 12:fb46c68fa360 | 88 | Thread::wait(500); // wait for 1 second |
bjs9 | 12:fb46c68fa360 | 89 | } |
bjs9 | 12:fb46c68fa360 | 90 | } |
bjs9 | 12:fb46c68fa360 | 91 | int main() { |
bjs9 | 12:fb46c68fa360 | 92 | thread.start(uLCD_thread1); |
bjs9 | 12:fb46c68fa360 | 93 | //thread2.start(uLCD_thread2); |
bjs9 | 12:fb46c68fa360 | 94 | thread3.start(RGB_LED); |
emilmont | 1:491820ee784d | 95 | } |