f

Dependencies:   Speaker mbed wave_player mbed-rtos 4DGL-uLCD-SE LCD_fonts SDFileSystem_OldbutworkswithRTOS

Committer:
apaks180
Date:
Thu Feb 21 18:33:54 2019 +0000
Revision:
6:bb887c1a381b
Parent:
5:5f393c6b02cb
f;

Who changed what in which revision?

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