f
Dependencies: Speaker mbed wave_player mbed-rtos 4DGL-uLCD-SE LCD_fonts SDFileSystem_OldbutworkswithRTOS
main.cpp@6:bb887c1a381b, 2019-02-21 (annotated)
- Committer:
- apaks180
- Date:
- Thu Feb 21 18:33:54 2019 +0000
- Revision:
- 6:bb887c1a381b
- Parent:
- 5:5f393c6b02cb
f;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dreschpe | 1:1c6a9eaf55b5 | 1 | |
dreschpe | 0:f6a57b843f79 | 2 | #include "mbed.h" |
dreschpe | 0:f6a57b843f79 | 3 | #include "rtos.h" |
apaks180 | 5:5f393c6b02cb | 4 | #include "uLCD_4DGL.h" |
dreschpe | 0:f6a57b843f79 | 5 | #include "stdio.h" |
apaks180 | 5:5f393c6b02cb | 6 | #include "Speaker.h" |
apaks180 | 5:5f393c6b02cb | 7 | #include "banner.h" |
apaks180 | 5:5f393c6b02cb | 8 | #include "SDFileSystem.h" |
apaks180 | 5:5f393c6b02cb | 9 | #include "wave_player.h" |
dreschpe | 0:f6a57b843f79 | 10 | |
apaks180 | 6:bb887c1a381b | 11 | |
apaks180 | 6:bb887c1a381b | 12 | RawSerial pc(USBTX, USBRX); |
apaks180 | 6:bb887c1a381b | 13 | RawSerial dev(p28,p27); |
apaks180 | 5:5f393c6b02cb | 14 | AnalogOut DACout(p18); |
apaks180 | 5:5f393c6b02cb | 15 | wave_player waver(&DACout); |
apaks180 | 5:5f393c6b02cb | 16 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
apaks180 | 5:5f393c6b02cb | 17 | uLCD_4DGL uLCD(p13,p14,p11); |
4180_1 | 4:79863d2ea5a0 | 18 | PwmOut RGBLED_r(p23); |
4180_1 | 4:79863d2ea5a0 | 19 | PwmOut RGBLED_g(p24); |
4180_1 | 4:79863d2ea5a0 | 20 | PwmOut RGBLED_b(p25); |
4180_1 | 4:79863d2ea5a0 | 21 | BusOut leds(LED1,LED2,LED3,LED4); |
dreschpe | 1:1c6a9eaf55b5 | 22 | Mutex lcd_mutex; |
dreschpe | 0:f6a57b843f79 | 23 | |
apaks180 | 6:bb887c1a381b | 24 | //Thread screen; |
apaks180 | 6:bb887c1a381b | 25 | //Thread lights; |
apaks180 | 6:bb887c1a381b | 26 | //Thread audio; |
apaks180 | 6:bb887c1a381b | 27 | //Thread count; |
apaks180 | 6:bb887c1a381b | 28 | |
apaks180 | 6:bb887c1a381b | 29 | void dev_recv() |
dreschpe | 0:f6a57b843f79 | 30 | { |
apaks180 | 6:bb887c1a381b | 31 | while(dev.readable()) { |
apaks180 | 6:bb887c1a381b | 32 | pc.putc(dev.getc()); |
apaks180 | 6:bb887c1a381b | 33 | } |
apaks180 | 6:bb887c1a381b | 34 | } |
apaks180 | 6:bb887c1a381b | 35 | |
apaks180 | 6:bb887c1a381b | 36 | void pc_recv() |
apaks180 | 6:bb887c1a381b | 37 | { |
apaks180 | 6:bb887c1a381b | 38 | while(pc.readable()) { |
apaks180 | 6:bb887c1a381b | 39 | dev.putc(pc.getc()); |
dreschpe | 0:f6a57b843f79 | 40 | } |
dreschpe | 0:f6a57b843f79 | 41 | } |
apaks180 | 6:bb887c1a381b | 42 | |
apaks180 | 6:bb887c1a381b | 43 | |
apaks180 | 6:bb887c1a381b | 44 | |
apaks180 | 6:bb887c1a381b | 45 | void thread1(void const *args) |
apaks180 | 6:bb887c1a381b | 46 | { |
apaks180 | 6:bb887c1a381b | 47 | int i=0; |
apaks180 | 6:bb887c1a381b | 48 | int x; |
apaks180 | 5:5f393c6b02cb | 49 | // while(true) { // thread loop |
apaks180 | 6:bb887c1a381b | 50 | if(i==0){ |
apaks180 | 6:bb887c1a381b | 51 | x=0xFF0000; |
apaks180 | 6:bb887c1a381b | 52 | } |
apaks180 | 6:bb887c1a381b | 53 | else if (i==1){ |
apaks180 | 6:bb887c1a381b | 54 | x=0xFFFFFF; |
apaks180 | 6:bb887c1a381b | 55 | } |
apaks180 | 6:bb887c1a381b | 56 | else{ |
apaks180 | 6:bb887c1a381b | 57 | x=0x0000FF; |
apaks180 | 6:bb887c1a381b | 58 | } |
apaks180 | 6:bb887c1a381b | 59 | lcd_mutex.lock(); |
apaks180 | 6:bb887c1a381b | 60 | uLCD.filled_rectangle(0,0,128, 100, x); |
apaks180 | 6:bb887c1a381b | 61 | lcd_mutex.unlock(); |
apaks180 | 6:bb887c1a381b | 62 | i++; |
apaks180 | 6:bb887c1a381b | 63 | i=i%3; |
apaks180 | 6:bb887c1a381b | 64 | Thread::wait(100); |
apaks180 | 5:5f393c6b02cb | 65 | // } |
apaks180 | 6:bb887c1a381b | 66 | } |
apaks180 | 6:bb887c1a381b | 67 | |
apaks180 | 6:bb887c1a381b | 68 | |
apaks180 | 5:5f393c6b02cb | 69 | void thread5(void const *args) |
dreschpe | 0:f6a57b843f79 | 70 | { |
apaks180 | 5:5f393c6b02cb | 71 | int i = 0; |
apaks180 | 6:bb887c1a381b | 72 | // while(true) { |
apaks180 | 5:5f393c6b02cb | 73 | // thread loop |
apaks180 | 5:5f393c6b02cb | 74 | if(i==0){ |
apaks180 | 5:5f393c6b02cb | 75 | RGBLED_r = 1; |
apaks180 | 5:5f393c6b02cb | 76 | RGBLED_g = 0; |
apaks180 | 5:5f393c6b02cb | 77 | RGBLED_b = 0; |
apaks180 | 5:5f393c6b02cb | 78 | } |
apaks180 | 5:5f393c6b02cb | 79 | else if(i==1){ |
apaks180 | 5:5f393c6b02cb | 80 | RGBLED_r = 1; |
apaks180 | 5:5f393c6b02cb | 81 | RGBLED_g = 1; |
apaks180 | 5:5f393c6b02cb | 82 | RGBLED_b = 1; |
apaks180 | 5:5f393c6b02cb | 83 | } |
apaks180 | 5:5f393c6b02cb | 84 | else{ |
apaks180 | 5:5f393c6b02cb | 85 | RGBLED_r = 0; |
apaks180 | 5:5f393c6b02cb | 86 | RGBLED_g = 0; |
apaks180 | 5:5f393c6b02cb | 87 | RGBLED_b = 1; |
apaks180 | 5:5f393c6b02cb | 88 | } |
apaks180 | 5:5f393c6b02cb | 89 | i++; |
apaks180 | 5:5f393c6b02cb | 90 | i=i%3; |
apaks180 | 5:5f393c6b02cb | 91 | Thread::wait(673); // wait 1.5s |
apaks180 | 6:bb887c1a381b | 92 | // } |
dreschpe | 0:f6a57b843f79 | 93 | } |
apaks180 | 5:5f393c6b02cb | 94 | //// Thread 6 |
apaks180 | 5:5f393c6b02cb | 95 | //// Speaker |
apaks180 | 5:5f393c6b02cb | 96 | void thread6(void const *args) |
dreschpe | 1:1c6a9eaf55b5 | 97 | { |
apaks180 | 6:bb887c1a381b | 98 | // while(true) { // thread loop |
apaks180 | 6:bb887c1a381b | 99 | FILE *wave_file; |
apaks180 | 6:bb887c1a381b | 100 | printf("\r\n\nHello, wave world!\n\r"); |
apaks180 | 6:bb887c1a381b | 101 | Thread::wait(1000); |
apaks180 | 5:5f393c6b02cb | 102 | wave_file=fopen("/sd/banner2.wav","r"); |
apaks180 | 6:bb887c1a381b | 103 | if(wave_file==NULL) printf("file open error!\n\n\r"); |
apaks180 | 5:5f393c6b02cb | 104 | waver.play(wave_file); |
apaks180 | 5:5f393c6b02cb | 105 | fclose(wave_file); |
apaks180 | 6:bb887c1a381b | 106 | // } |
apaks180 | 6:bb887c1a381b | 107 | |
dreschpe | 1:1c6a9eaf55b5 | 108 | } |
dreschpe | 0:f6a57b843f79 | 109 | |
4180_1 | 4:79863d2ea5a0 | 110 | void thread7(void const *args) |
4180_1 | 4:79863d2ea5a0 | 111 | { |
apaks180 | 5:5f393c6b02cb | 112 | int i = 0; |
4180_1 | 4:79863d2ea5a0 | 113 | while(true) { // thread loop |
apaks180 | 5:5f393c6b02cb | 114 | i++; |
apaks180 | 5:5f393c6b02cb | 115 | printf("thread 1: %d\n", i); |
apaks180 | 6:bb887c1a381b | 116 | Thread::wait(1000); // wait 0.25s |
4180_1 | 4:79863d2ea5a0 | 117 | } |
dreschpe | 1:1c6a9eaf55b5 | 118 | } |
dreschpe | 1:1c6a9eaf55b5 | 119 | |
dreschpe | 2:a69c8c5f5b03 | 120 | |
apaks180 | 6:bb887c1a381b | 121 | //void bluetooth(void const *args){ |
apaks180 | 6:bb887c1a381b | 122 | // while(1){ |
apaks180 | 6:bb887c1a381b | 123 | // if(dev.getc()=='a'){ |
apaks180 | 6:bb887c1a381b | 124 | // Thread t6(thread6); |
apaks180 | 6:bb887c1a381b | 125 | // } |
apaks180 | 6:bb887c1a381b | 126 | // if(dev.getc()=='s'){ |
apaks180 | 6:bb887c1a381b | 127 | // Thread t1(thread1); |
apaks180 | 6:bb887c1a381b | 128 | // } |
apaks180 | 6:bb887c1a381b | 129 | // if(dev.getc()=='l'){ |
apaks180 | 6:bb887c1a381b | 130 | // Thread t5(thread5); |
apaks180 | 6:bb887c1a381b | 131 | // } |
apaks180 | 6:bb887c1a381b | 132 | // if(dev.getc()=='c'){ |
apaks180 | 6:bb887c1a381b | 133 | // Thread t7(thread7); |
apaks180 | 6:bb887c1a381b | 134 | // } |
apaks180 | 6:bb887c1a381b | 135 | // Thread::wait(100); |
apaks180 | 6:bb887c1a381b | 136 | // } |
apaks180 | 6:bb887c1a381b | 137 | //} |
dreschpe | 0:f6a57b843f79 | 138 | int main() |
dreschpe | 0:f6a57b843f79 | 139 | { |
apaks180 | 5:5f393c6b02cb | 140 | // int j; |
apaks180 | 5:5f393c6b02cb | 141 | uLCD.cls(); |
4180_1 | 4:79863d2ea5a0 | 142 | |
apaks180 | 6:bb887c1a381b | 143 | pc.baud(9600); |
apaks180 | 6:bb887c1a381b | 144 | dev.baud(9600); |
apaks180 | 6:bb887c1a381b | 145 | |
apaks180 | 6:bb887c1a381b | 146 | pc.attach(&pc_recv, Serial::RxIrq); |
apaks180 | 6:bb887c1a381b | 147 | dev.attach(&dev_recv, Serial::RxIrq); |
apaks180 | 6:bb887c1a381b | 148 | // Thread blue(bluetooth); |
apaks180 | 6:bb887c1a381b | 149 | while(1) { |
apaks180 | 6:bb887c1a381b | 150 | if(dev.getc()=='a'){ |
apaks180 | 6:bb887c1a381b | 151 | Thread audio(thread6); |
apaks180 | 6:bb887c1a381b | 152 | } |
apaks180 | 6:bb887c1a381b | 153 | if(dev.getc()=='s'){ |
apaks180 | 6:bb887c1a381b | 154 | Thread screen(thread1); |
apaks180 | 6:bb887c1a381b | 155 | } |
apaks180 | 6:bb887c1a381b | 156 | if(dev.getc()=='l'){ |
apaks180 | 6:bb887c1a381b | 157 | Thread light(thread5); |
apaks180 | 6:bb887c1a381b | 158 | } |
apaks180 | 6:bb887c1a381b | 159 | if(dev.getc()=='c'){ |
apaks180 | 6:bb887c1a381b | 160 | Thread count(thread7); |
apaks180 | 6:bb887c1a381b | 161 | } |
apaks180 | 6:bb887c1a381b | 162 | // sleep(); |
apaks180 | 6:bb887c1a381b | 163 | } |
apaks180 | 6:bb887c1a381b | 164 | // Thread t1(thread1); //start thread1 |
apaks180 | 5:5f393c6b02cb | 165 | //Thread t2(thread2); //start thread2 |
apaks180 | 5:5f393c6b02cb | 166 | //Thread t3(thread3); //start thread3 |
apaks180 | 5:5f393c6b02cb | 167 | //Thread t4(thread4); //start thread4 |
apaks180 | 6:bb887c1a381b | 168 | // Thread t5(thread5); //start thread5 |
apaks180 | 6:bb887c1a381b | 169 | // Thread t6(thread6); //start thread6 |
apaks180 | 6:bb887c1a381b | 170 | // Thread t7(thread7); //start thread7 |
dreschpe | 0:f6a57b843f79 | 171 | |
dreschpe | 0:f6a57b843f79 | 172 | } |