Complete Build

Dependencies:   4DGL-uLCD-SE1 Motor SDFileSystem X_NUCLEO_53L0A1 mbed-rtos mbed BotwithWavePlayerLevel

Fork of BotWithBluetoothLIDARV2 by Brandon Weiner and Carlos Tallard

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?

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