Complete Build
Dependencies: 4DGL-uLCD-SE1 Motor SDFileSystem X_NUCLEO_53L0A1 mbed-rtos mbed BotwithWavePlayerLevel
Fork of BotWithBluetoothLIDARV2 by
main.cpp@13:ab6bbdd2447a, 2017-10-06 (annotated)
- Committer:
- bdragon52
- Date:
- Fri Oct 06 04:33:17 2017 +0000
- Revision:
- 13:ab6bbdd2447a
- Parent:
- 12:af37c8938aaf
- Child:
- 14:cc2e4fbaffd8
done, 5 threads
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" |
bdragon52 | 12:af37c8938aaf | 3 | #include "uLCD_4DGL.h" |
bdragon52 | 12:af37c8938aaf | 4 | #include "SDFileSystem.h" |
bdragon52 | 12:af37c8938aaf | 5 | #include "wave_player.h" |
bdragon52 | 13:ab6bbdd2447a | 6 | //nclude "picojpeg.h" |
bdragon52 | 12:af37c8938aaf | 7 | |
bdragon52 | 13:ab6bbdd2447a | 8 | Serial blues(p13,p14); |
bdragon52 | 12:af37c8938aaf | 9 | SDFileSystem sd(p5, p6, p7, p9, "sd"); //SD card |
bdragon52 | 12:af37c8938aaf | 10 | |
bdragon52 | 12:af37c8938aaf | 11 | AnalogOut DACout(p18); |
bdragon52 | 12:af37c8938aaf | 12 | |
bdragon52 | 12:af37c8938aaf | 13 | wave_player waver(&DACout); |
emilmont | 1:491820ee784d | 14 | |
bdragon52 | 12:af37c8938aaf | 15 | PwmOut red(p23); |
bdragon52 | 12:af37c8938aaf | 16 | PwmOut blue(p21); |
bdragon52 | 12:af37c8938aaf | 17 | PwmOut green(p22); |
bdragon52 | 12:af37c8938aaf | 18 | |
bdragon52 | 12:af37c8938aaf | 19 | PwmOut myled(LED1); |
bdragon52 | 12:af37c8938aaf | 20 | uLCD_4DGL uLCD(p28,p27,p30); |
bdragon52 | 13:ab6bbdd2447a | 21 | Mutex ourMutex; |
bdragon52 | 12:af37c8938aaf | 22 | Thread thread2; |
bdragon52 | 12:af37c8938aaf | 23 | Thread thread3; |
bdragon52 | 12:af37c8938aaf | 24 | Thread thread4; |
bdragon52 | 13:ab6bbdd2447a | 25 | Thread thread5; |
bdragon52 | 12:af37c8938aaf | 26 | float y=0.0; |
bdragon52 | 13:ab6bbdd2447a | 27 | int c=80; |
bdragon52 | 13:ab6bbdd2447a | 28 | int d=1; |
bdragon52 | 13:ab6bbdd2447a | 29 | char bnum=0; |
bdragon52 | 13:ab6bbdd2447a | 30 | char current='1'; |
bdragon52 | 13:ab6bbdd2447a | 31 | int color=YELLOW; |
emilmont | 1:491820ee784d | 32 | |
bdragon52 | 12:af37c8938aaf | 33 | void t2() { |
emilmont | 1:491820ee784d | 34 | while (true) { |
bdragon52 | 12:af37c8938aaf | 35 | int a=20; |
bdragon52 | 12:af37c8938aaf | 36 | int r=8; |
bdragon52 | 13:ab6bbdd2447a | 37 | |
bdragon52 | 13:ab6bbdd2447a | 38 | ourMutex.lock(); |
bdragon52 | 12:af37c8938aaf | 39 | uLCD.background_color(BLACK); |
bdragon52 | 12:af37c8938aaf | 40 | uLCD.cls(); |
bdragon52 | 12:af37c8938aaf | 41 | uLCD.filled_circle(a, 80-(y*80)+25, r, BLUE); |
bdragon52 | 12:af37c8938aaf | 42 | uLCD.line(3,25,13,25,RED); |
bdragon52 | 12:af37c8938aaf | 43 | uLCD.line(3,105,13,105,RED); |
bdragon52 | 13:ab6bbdd2447a | 44 | ourMutex.unlock(); |
bdragon52 | 12:af37c8938aaf | 45 | |
bdragon52 | 12:af37c8938aaf | 46 | //while(b<100){ |
bdragon52 | 12:af37c8938aaf | 47 | // uLCD.filled_circle(a, b, r, BLUE); |
bdragon52 | 12:af37c8938aaf | 48 | // b=b+1; |
bdragon52 | 12:af37c8938aaf | 49 | // uLCD.filled_circle(a, b-1, r, BLACK); |
bdragon52 | 12:af37c8938aaf | 50 | // uLCD.filled_circle(a, b, r, BLUE); |
bdragon52 | 12:af37c8938aaf | 51 | // Thread::wait(1000.0*0.002); |
bdragon52 | 12:af37c8938aaf | 52 | // } |
bdragon52 | 12:af37c8938aaf | 53 | //while(b>50){ |
bdragon52 | 12:af37c8938aaf | 54 | // uLCD.filled_circle(a, b, r, BLUE); |
bdragon52 | 12:af37c8938aaf | 55 | // b=b-1; |
bdragon52 | 12:af37c8938aaf | 56 | // uLCD.filled_circle(a, b+2, r, BLACK); |
bdragon52 | 12:af37c8938aaf | 57 | // uLCD.filled_circle(a, b, r, BLUE); |
bdragon52 | 12:af37c8938aaf | 58 | //Thread::wait(1000.0*0.002); |
bdragon52 | 12:af37c8938aaf | 59 | // } |
bdragon52 | 12:af37c8938aaf | 60 | |
bdragon52 | 12:af37c8938aaf | 61 | |
bdragon52 | 12:af37c8938aaf | 62 | Thread::wait(1000.0*0.02); |
bdragon52 | 12:af37c8938aaf | 63 | |
bdragon52 | 12:af37c8938aaf | 64 | } |
bdragon52 | 12:af37c8938aaf | 65 | } |
bdragon52 | 12:af37c8938aaf | 66 | |
bdragon52 | 12:af37c8938aaf | 67 | void t3() { |
bdragon52 | 12:af37c8938aaf | 68 | while (true) { |
bdragon52 | 13:ab6bbdd2447a | 69 | FILE *wave_file; |
bdragon52 | 13:ab6bbdd2447a | 70 | |
bdragon52 | 13:ab6bbdd2447a | 71 | wave_file=fopen("/sd/Bee Gees - Stayin' Alive.wav","r"); |
bdragon52 | 13:ab6bbdd2447a | 72 | waver.play(wave_file); |
bdragon52 | 13:ab6bbdd2447a | 73 | fclose(wave_file); |
bdragon52 | 13:ab6bbdd2447a | 74 | Thread::wait(1000); |
bdragon52 | 12:af37c8938aaf | 75 | } |
bdragon52 | 12:af37c8938aaf | 76 | } |
bdragon52 | 12:af37c8938aaf | 77 | |
bdragon52 | 12:af37c8938aaf | 78 | void t4() { |
bdragon52 | 12:af37c8938aaf | 79 | while (true) { |
bdragon52 | 13:ab6bbdd2447a | 80 | |
bdragon52 | 13:ab6bbdd2447a | 81 | ourMutex.lock(); |
bdragon52 | 12:af37c8938aaf | 82 | |
bdragon52 | 13:ab6bbdd2447a | 83 | if(c==70){ |
bdragon52 | 13:ab6bbdd2447a | 84 | d=20; |
bdragon52 | 13:ab6bbdd2447a | 85 | } |
bdragon52 | 13:ab6bbdd2447a | 86 | if(c==110){ |
bdragon52 | 13:ab6bbdd2447a | 87 | d=-20; |
bdragon52 | 13:ab6bbdd2447a | 88 | } |
bdragon52 | 13:ab6bbdd2447a | 89 | |
bdragon52 | 13:ab6bbdd2447a | 90 | uLCD.filled_circle(c, 64 , 10, WHITE); |
bdragon52 | 13:ab6bbdd2447a | 91 | uLCD.filled_circle(c, 64 , 8, color); |
bdragon52 | 13:ab6bbdd2447a | 92 | Thread::wait(50); |
bdragon52 | 13:ab6bbdd2447a | 93 | uLCD.filled_circle(c, 64 , 10, BLACK); |
bdragon52 | 13:ab6bbdd2447a | 94 | c=c+d; |
bdragon52 | 13:ab6bbdd2447a | 95 | uLCD.filled_circle(c, 64 , 10, color); |
bdragon52 | 13:ab6bbdd2447a | 96 | uLCD.filled_circle(c, 64 , 8, WHITE); |
bdragon52 | 13:ab6bbdd2447a | 97 | Thread::wait(50); |
bdragon52 | 13:ab6bbdd2447a | 98 | uLCD.filled_circle(c, 64 , 10, BLACK); |
bdragon52 | 13:ab6bbdd2447a | 99 | |
bdragon52 | 13:ab6bbdd2447a | 100 | ourMutex.unlock(); |
bdragon52 | 13:ab6bbdd2447a | 101 | Thread::wait(50); |
emilmont | 1:491820ee784d | 102 | } |
emilmont | 1:491820ee784d | 103 | } |
emilmont | 1:491820ee784d | 104 | |
bdragon52 | 12:af37c8938aaf | 105 | |
bdragon52 | 13:ab6bbdd2447a | 106 | void t5(){ |
bdragon52 | 13:ab6bbdd2447a | 107 | |
bdragon52 | 13:ab6bbdd2447a | 108 | while(true){ |
bdragon52 | 13:ab6bbdd2447a | 109 | |
bdragon52 | 13:ab6bbdd2447a | 110 | |
bdragon52 | 13:ab6bbdd2447a | 111 | if(blues.readable()==1){ |
bdragon52 | 13:ab6bbdd2447a | 112 | ourMutex.lock(); |
bdragon52 | 13:ab6bbdd2447a | 113 | if (blues.getc()=='!') { |
bdragon52 | 13:ab6bbdd2447a | 114 | if (blues.getc()=='B') { //button data |
bdragon52 | 13:ab6bbdd2447a | 115 | bnum = blues.getc(); //button number |
bdragon52 | 13:ab6bbdd2447a | 116 | if ((bnum>='1')&&(bnum<='4')) //is a number button 1..4 |
bdragon52 | 13:ab6bbdd2447a | 117 | current=bnum; |
bdragon52 | 13:ab6bbdd2447a | 118 | } |
bdragon52 | 13:ab6bbdd2447a | 119 | } |
bdragon52 | 13:ab6bbdd2447a | 120 | |
bdragon52 | 13:ab6bbdd2447a | 121 | } |
bdragon52 | 13:ab6bbdd2447a | 122 | |
bdragon52 | 13:ab6bbdd2447a | 123 | if(current=='1'){ |
bdragon52 | 13:ab6bbdd2447a | 124 | color=YELLOW; |
bdragon52 | 13:ab6bbdd2447a | 125 | } |
bdragon52 | 13:ab6bbdd2447a | 126 | if(current=='2'){ |
bdragon52 | 13:ab6bbdd2447a | 127 | color=BLUE; |
bdragon52 | 13:ab6bbdd2447a | 128 | } |
bdragon52 | 13:ab6bbdd2447a | 129 | if(current=='3'){ |
bdragon52 | 13:ab6bbdd2447a | 130 | color=0x551A8B; |
bdragon52 | 13:ab6bbdd2447a | 131 | } |
bdragon52 | 13:ab6bbdd2447a | 132 | if(current=='4'){ |
bdragon52 | 13:ab6bbdd2447a | 133 | color=GREEN; |
bdragon52 | 13:ab6bbdd2447a | 134 | } |
bdragon52 | 13:ab6bbdd2447a | 135 | |
bdragon52 | 13:ab6bbdd2447a | 136 | ourMutex.unlock(); |
bdragon52 | 13:ab6bbdd2447a | 137 | |
bdragon52 | 13:ab6bbdd2447a | 138 | Thread::wait(50); |
bdragon52 | 13:ab6bbdd2447a | 139 | } |
bdragon52 | 13:ab6bbdd2447a | 140 | |
bdragon52 | 13:ab6bbdd2447a | 141 | } |
bdragon52 | 13:ab6bbdd2447a | 142 | |
bdragon52 | 13:ab6bbdd2447a | 143 | |
bdragon52 | 13:ab6bbdd2447a | 144 | |
bdragon52 | 12:af37c8938aaf | 145 | |
emilmont | 1:491820ee784d | 146 | int main() { |
bdragon52 | 12:af37c8938aaf | 147 | thread2.start(t2); |
bdragon52 | 12:af37c8938aaf | 148 | thread3.start(t3); |
bdragon52 | 12:af37c8938aaf | 149 | thread4.start(t4); |
bdragon52 | 13:ab6bbdd2447a | 150 | thread5.start(t5); |
emilmont | 1:491820ee784d | 151 | |
bdragon52 | 12:af37c8938aaf | 152 | while(1) { |
bdragon52 | 12:af37c8938aaf | 153 | for(double x=0.0; x <= 3.14159; x = x + 0.0314159) { |
bdragon52 | 12:af37c8938aaf | 154 | y = sin(x); |
bdragon52 | 12:af37c8938aaf | 155 | red= y*y*y; |
bdragon52 | 12:af37c8938aaf | 156 | blue= y*y*y; |
bdragon52 | 12:af37c8938aaf | 157 | green= y*y*y; |
bdragon52 | 12:af37c8938aaf | 158 | Thread::wait(1000.0*.025); |
bdragon52 | 12:af37c8938aaf | 159 | } |
bdragon52 | 12:af37c8938aaf | 160 | red= 0.0; |
bdragon52 | 12:af37c8938aaf | 161 | blue= 0.0; |
bdragon52 | 12:af37c8938aaf | 162 | green= 0.0; |
bdragon52 | 12:af37c8938aaf | 163 | Thread::wait(1000.0*2.5); |
emilmont | 1:491820ee784d | 164 | } |
bdragon52 | 12:af37c8938aaf | 165 | |
bdragon52 | 12:af37c8938aaf | 166 | |
bdragon52 | 12:af37c8938aaf | 167 | |
bdragon52 | 12:af37c8938aaf | 168 | |
emilmont | 1:491820ee784d | 169 | } |