Drink Dispensing Program
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE Motor SDFileSystem
Revision 12:7e6973201e19, committed 2019-12-09
- Comitter:
- njoaquin1
- Date:
- Mon Dec 09 03:43:48 2019 +0000
- Parent:
- 11:0309bef74ba8
- Commit message:
- Working drink Dispensing Program
Changed in this revision
diff -r 0309bef74ba8 -r 7e6973201e19 4DGL-uLCD-SE.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/4DGL-uLCD-SE.lib Mon Dec 09 03:43:48 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#2cb1845d7681
diff -r 0309bef74ba8 -r 7e6973201e19 Motor.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Motor.lib Mon Dec 09 03:43:48 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/Motor/#f265e441bcd9
diff -r 0309bef74ba8 -r 7e6973201e19 SDFileSystem.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Mon Dec 09 03:43:48 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/SDFileSystem/#8db0d3b02cec
diff -r 0309bef74ba8 -r 7e6973201e19 main.cpp --- a/main.cpp Wed Feb 15 14:04:02 2017 -0600 +++ b/main.cpp Mon Dec 09 03:43:48 2019 +0000 @@ -1,22 +1,215 @@ #include "mbed.h" #include "rtos.h" - +#include "Motor.h" +#include "uLCD_4DGL.h" + +RawSerial pi(USBTX, USBRX); + +Thread thread_drink_1; +Thread thread_drink_2; +Thread thread_drink_3; +Thread thread_drink_4; +Thread thread_drink_5; +Thread thread_drink_6; +//Thread thread_play_song; +//Thread thread_display_led; + +Motor drink1(p21, p5, p6); //pwd, rev, fwd +Motor drink2(p22, p7, p8); //pwd, rev, fwd +Motor drink3(p23, p9, p10); //pwd, rev, fwd +Motor drink4(p24, p11, p12); //pwd, rev, fwd +Motor drink5(p25, p13, p14); //pwd, rev, fwd +Motor drink6(p26, p15, p16); //pwd, rev, fwd + +bool run1 = false; +bool run2 = false; +bool run3 = false; +bool run4 = false; +bool run5 = false; +bool run6 = false; + + +int oz1 = 0; +int oz2 = 0; +int oz3 = 0; +int oz4 = 0; +int oz5 = 0; +int oz6 = 0; + +char drinkName [128]; + +// debug shit DigitalOut led1(LED1); DigitalOut led2(LED2); -Thread thread; +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; + +int sec_per_oz = 9000; //msec + + -void led2_thread() { +void drink1_thread() { + while (true) { + if (run1) { + led1 = 1; + drink1.speed(-1.0); + Thread::wait(sec_per_oz * oz1); + drink1.speed(0.0); + led1 = 0; + run1 = false; + } + } +} + +void drink2_thread() { while (true) { - led2 = !led2; - Thread::wait(1000); + if (run2) { + led2 = 1; + drink2.speed(-1.0); + Thread::wait(sec_per_oz * oz2); + drink2.speed(0.0); + led2 = 0; + run2 = false; + } + } +} + + void drink3_thread() { + while (true) { + if (run3) { + led3 = 1; + drink3.speed(1.0); + Thread::wait(sec_per_oz * oz3); + drink3.speed(0.0); + led3 = 0; + run3 = false; + } + } +} + + + void drink4_thread() { + while (true) { + if (run4) { + led4 = 1; + drink4.speed(-1.0); + Thread::wait(sec_per_oz * oz4); + drink4.speed(0.0); + led4 = 0; + run4 = false; + } } } -int main() { - thread.start(led2_thread); - + + void drink5_thread() { while (true) { - led1 = !led1; - Thread::wait(500); + if (run5) { + drink5.speed(1.0); + Thread::wait(sec_per_oz * oz5); + drink5.speed(0.0); + run5 = false; + } + } +} + + +void drink6_thread() { + while (true) { + if (run6) { + drink6.speed(1.0); + Thread::wait(sec_per_oz * oz6); + drink6.speed(0.0); + run6 = false; + } } } + +void dev_recv() +{ + char temp = 0; + char motorVal = 0; + int indexVal = 0; + int ounceNum = 0; + while(pi.readable()) { + temp = pi.getc(); + if (temp == '!') { + ounceNum = 0; + indexVal = 0; + temp = pi.getc(); + while (temp != '{') { + drinkName[indexVal] = temp; + indexVal++; + temp = pi.getc(); + } + drinkName[indexVal] = 0; // null character + pi.printf("%s\n",drinkName); + motorVal = pi.getc(); // get motor Value + while (temp != '}') { + temp = pi.getc(); // colon + temp = pi.getc(); // first digit of drink + ounceNum = 0; + while (temp != ',') { // get how many ounces + ounceNum = ounceNum * 10; + ounceNum = ounceNum + (int)(temp - '0'); + temp = pi.getc(); + } + if (ounceNum > 0) { + switch(motorVal) { + case '1': + oz1 = ounceNum; + run1 = true; + break; + case '2': + oz2 = ounceNum; + run2 = true; + break; + case '3': + oz3 = ounceNum; + run3 = true; + break; + case '4': + oz4 = ounceNum; + run4 = true; + break; + case '5': + oz5 = ounceNum; + run5 = true; + break; + case '6': + oz6 = ounceNum; + run6 = true; + break; + default: + break; + } + } + temp = pi.getc(); + if (temp != ',') { + motorVal = temp; + } + } + } + } +} +int main() { + thread_drink_1.start(drink1_thread); + thread_drink_2.start(drink2_thread); + thread_drink_3.start(drink3_thread); + thread_drink_4.start(drink4_thread); + thread_drink_5.start(drink5_thread); + thread_drink_6.start(drink6_thread); + //thread_play_song.start(); + //thread_display_led.start(); + uLCD.cls(); + uLCD.text_width(2); //4X size text + uLCD.text_height(2); + uLCD.printf("DrinkBot\n 4000"); + pi.baud(9600); + pi.attach(&dev_recv, Serial::RxIrq); + while(1) { + sleep(); + } +}
diff -r 0309bef74ba8 -r 7e6973201e19 wave_player.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wave_player.lib Mon Dec 09 03:43:48 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/sravet/code/wave_player/#acc3e18e77ad