Publishing test
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem_OldbutworkswithRTOS
main.cpp@2:b07b1a448161, 2019-02-23 (annotated)
- Committer:
- kanicolaus
- Date:
- Sat Feb 23 20:24:29 2019 +0000
- Revision:
- 2:b07b1a448161
- Parent:
- 1:5b8e223e983d
Testing "publishing" function
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kanicolaus | 2:b07b1a448161 | 1 | //Include required libraries (uLCD, mbed, rtos, etc.) |
4180_1 | 1:5b8e223e983d | 2 | #include "mbed.h" |
kanicolaus | 2:b07b1a448161 | 3 | #include "rtos.h" |
kanicolaus | 2:b07b1a448161 | 4 | //#include "uLCD_4DGL.h" |
kanicolaus | 2:b07b1a448161 | 5 | //#include "wave_player.h" |
kanicolaus | 2:b07b1a448161 | 6 | //#include "stdio.h" |
kanicolaus | 2:b07b1a448161 | 7 | //#include "RGBLed.h" |
kanicolaus | 2:b07b1a448161 | 8 | //#include "SDFileSystem.h" |
4180_1 | 1:5b8e223e983d | 9 | |
kanicolaus | 2:b07b1a448161 | 10 | //Initialize all objects |
kanicolaus | 2:b07b1a448161 | 11 | //uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; |
kanicolaus | 2:b07b1a448161 | 12 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
kanicolaus | 2:b07b1a448161 | 13 | //RawSerial blue(p13,p14); |
kanicolaus | 2:b07b1a448161 | 14 | //RGBLed myRGB(p21, p22, p23); |
kanicolaus | 2:b07b1a448161 | 15 | DigitalOut led1(LED1); |
kanicolaus | 2:b07b1a448161 | 16 | DigitalOut led2(LED2); |
kanicolaus | 2:b07b1a448161 | 17 | DigitalOut led3(LED3); |
kanicolaus | 2:b07b1a448161 | 18 | DigitalOut led4(LED4); |
kanicolaus | 2:b07b1a448161 | 19 | //AnalogOut DACout(p18); |
kanicolaus | 2:b07b1a448161 | 20 | //wave_player waver(&DACout); |
4180_1 | 1:5b8e223e983d | 21 | |
kanicolaus | 2:b07b1a448161 | 22 | Mutex mut; |
kanicolaus | 2:b07b1a448161 | 23 | |
kanicolaus | 2:b07b1a448161 | 24 | // Thread 1 |
kanicolaus | 2:b07b1a448161 | 25 | // Bounce a circle around the screen centered randomly every 100ms |
kanicolaus | 2:b07b1a448161 | 26 | void thread1(void const *args) |
kanicolaus | 2:b07b1a448161 | 27 | { |
kanicolaus | 2:b07b1a448161 | 28 | int i; |
kanicolaus | 2:b07b1a448161 | 29 | //int xLCD, yLCD; |
kanicolaus | 2:b07b1a448161 | 30 | while(true) { // thread loop |
kanicolaus | 2:b07b1a448161 | 31 | mut.lock(); |
kanicolaus | 2:b07b1a448161 | 32 | ////uLCD.baudrate(3000000); |
kanicolaus | 2:b07b1a448161 | 33 | ////uLCD.cls(); |
kanicolaus | 2:b07b1a448161 | 34 | ////uLCD.color(RED); |
kanicolaus | 2:b07b1a448161 | 35 | ////uLCD.background_color(BLACK); |
kanicolaus | 2:b07b1a448161 | 36 | ////uLCD.set_font(FONT_7X8); |
kanicolaus | 2:b07b1a448161 | 37 | //////uLCD.text_mode(TRANSPARENT); |
kanicolaus | 2:b07b1a448161 | 38 | ////uLCD.text_bold(ON); |
kanicolaus | 2:b07b1a448161 | 39 | ////uLCD.printf("Count1: %d", i); |
kanicolaus | 2:b07b1a448161 | 40 | led1 = !led1; |
kanicolaus | 2:b07b1a448161 | 41 | mut.unlock(); |
kanicolaus | 2:b07b1a448161 | 42 | i++; |
kanicolaus | 2:b07b1a448161 | 43 | |
kanicolaus | 2:b07b1a448161 | 44 | Thread::wait(1000); |
kanicolaus | 2:b07b1a448161 | 45 | } |
kanicolaus | 2:b07b1a448161 | 46 | } |
kanicolaus | 2:b07b1a448161 | 47 | |
kanicolaus | 2:b07b1a448161 | 48 | // Thread 2 |
kanicolaus | 2:b07b1a448161 | 49 | // prints a counter to the center of the screen |
kanicolaus | 2:b07b1a448161 | 50 | void thread2(void const *args) |
kanicolaus | 2:b07b1a448161 | 51 | { |
kanicolaus | 2:b07b1a448161 | 52 | int k; |
kanicolaus | 2:b07b1a448161 | 53 | while(true) { // thread loop |
kanicolaus | 2:b07b1a448161 | 54 | mut.lock(); |
kanicolaus | 2:b07b1a448161 | 55 | ////uLCD.baudrate(3000000); |
kanicolaus | 2:b07b1a448161 | 56 | ////uLCD.cls(); |
kanicolaus | 2:b07b1a448161 | 57 | ////uLCD.color(BLUE); |
kanicolaus | 2:b07b1a448161 | 58 | ////uLCD.background_color(BLACK); |
kanicolaus | 2:b07b1a448161 | 59 | ////uLCD.set_font(FONT_7X8); |
kanicolaus | 2:b07b1a448161 | 60 | //////uLCD.text_mode(TRANSPARENT); |
kanicolaus | 2:b07b1a448161 | 61 | ////uLCD.text_bold(ON); |
kanicolaus | 2:b07b1a448161 | 62 | ////uLCD.printf("Count2: %d", k); |
kanicolaus | 2:b07b1a448161 | 63 | led2 = !led2; |
kanicolaus | 2:b07b1a448161 | 64 | mut.unlock(); |
kanicolaus | 2:b07b1a448161 | 65 | k++; |
kanicolaus | 2:b07b1a448161 | 66 | |
kanicolaus | 2:b07b1a448161 | 67 | Thread::wait(500); |
kanicolaus | 2:b07b1a448161 | 68 | } |
kanicolaus | 2:b07b1a448161 | 69 | } |
kanicolaus | 2:b07b1a448161 | 70 | |
kanicolaus | 2:b07b1a448161 | 71 | //Thread 3 |
kanicolaus | 2:b07b1a448161 | 72 | //Do a "fancy" lighting effect on the RGB LED #include "ultrasonic.h" |
kanicolaus | 2:b07b1a448161 | 73 | void thread3(void const *args) |
kanicolaus | 2:b07b1a448161 | 74 | { |
kanicolaus | 2:b07b1a448161 | 75 | //mut.lock(); |
kanicolaus | 2:b07b1a448161 | 76 | //FILE *wave_file; |
kanicolaus | 2:b07b1a448161 | 77 | //printf("\r\n\nHello, wave world!\n\r"); |
kanicolaus | 2:b07b1a448161 | 78 | //Thread::wait(1000); |
kanicolaus | 2:b07b1a448161 | 79 | //wave_file=fopen("/sd/chirp.wav","r"); |
kanicolaus | 2:b07b1a448161 | 80 | //if(wave_file==NULL) printf("file open error!\n\n\r"); |
kanicolaus | 2:b07b1a448161 | 81 | //waver.play(wave_file); |
kanicolaus | 2:b07b1a448161 | 82 | //fclose(wave_file); |
kanicolaus | 2:b07b1a448161 | 83 | //mut.unlock(); |
kanicolaus | 2:b07b1a448161 | 84 | while(true) { // thread loop |
kanicolaus | 2:b07b1a448161 | 85 | led3 = !led3; |
kanicolaus | 2:b07b1a448161 | 86 | Thread::wait(1000); |
kanicolaus | 2:b07b1a448161 | 87 | } |
kanicolaus | 2:b07b1a448161 | 88 | } |
4180_1 | 1:5b8e223e983d | 89 | |
kanicolaus | 2:b07b1a448161 | 90 | // Thread 4 |
kanicolaus | 2:b07b1a448161 | 91 | // Reads inputs from the bluetooth module |
kanicolaus | 2:b07b1a448161 | 92 | //void thread4(void const *args) |
kanicolaus | 2:b07b1a448161 | 93 | //{ |
kanicolaus | 2:b07b1a448161 | 94 | // while(true) { // thread loop |
kanicolaus | 2:b07b1a448161 | 95 | // mut.lock(); |
kanicolaus | 2:b07b1a448161 | 96 | // myRGB.write(1.0,0.0,0.0); //red |
kanicolaus | 2:b07b1a448161 | 97 | // wait(2.0); |
kanicolaus | 2:b07b1a448161 | 98 | // myRGB.write(0.0,1.0,0.0); //green |
kanicolaus | 2:b07b1a448161 | 99 | // wait(2.0); |
kanicolaus | 2:b07b1a448161 | 100 | // myRGB.write(0.0,0.0,1.0); //blue |
kanicolaus | 2:b07b1a448161 | 101 | // wait(2.0); |
kanicolaus | 2:b07b1a448161 | 102 | // myRGB.write(1.0,0.2,0.0); //yellow = red + some green |
kanicolaus | 2:b07b1a448161 | 103 | // wait(2.0); |
kanicolaus | 2:b07b1a448161 | 104 | // //white with a slow fade to black dimming effect |
kanicolaus | 2:b07b1a448161 | 105 | // for (float x=1.0; x>=0.0001; x=x*0.99) { |
kanicolaus | 2:b07b1a448161 | 106 | // myRGB.write(x, x, x); |
kanicolaus | 2:b07b1a448161 | 107 | // wait(0.005); |
kanicolaus | 2:b07b1a448161 | 108 | // } |
kanicolaus | 2:b07b1a448161 | 109 | // mut.unlock(); |
kanicolaus | 2:b07b1a448161 | 110 | // //wait(2.0); |
kanicolaus | 2:b07b1a448161 | 111 | // Thread::wait(1000); |
kanicolaus | 2:b07b1a448161 | 112 | // } |
kanicolaus | 2:b07b1a448161 | 113 | //} |
4180_1 | 1:5b8e223e983d | 114 | |
4180_1 | 1:5b8e223e983d | 115 | int main() |
4180_1 | 1:5b8e223e983d | 116 | { |
kanicolaus | 2:b07b1a448161 | 117 | Thread t1(thread1); |
kanicolaus | 2:b07b1a448161 | 118 | Thread t2(thread2); |
kanicolaus | 2:b07b1a448161 | 119 | Thread t3(thread3); |
kanicolaus | 2:b07b1a448161 | 120 | //Thread t4(thread4); |
kanicolaus | 2:b07b1a448161 | 121 | //wait(0.1); // wait for uLCD ready |
kanicolaus | 2:b07b1a448161 | 122 | |
kanicolaus | 2:b07b1a448161 | 123 | while(true) { // main is the next thread |
kanicolaus | 2:b07b1a448161 | 124 | led4 = !led4; |
kanicolaus | 2:b07b1a448161 | 125 | Thread::wait(500); // wait 0.5s |
kanicolaus | 2:b07b1a448161 | 126 | } |
4180_1 | 1:5b8e223e983d | 127 | } |