Drink Dispensing Program

Dependencies:   mbed wave_player mbed-rtos 4DGL-uLCD-SE Motor SDFileSystem

Files at this revision

API Documentation at this revision

Comitter:
njoaquin1
Date:
Mon Dec 09 03:43:48 2019 +0000
Parent:
11:0309bef74ba8
Commit message:
Working drink Dispensing Program

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
Motor.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
wave_player.lib Show annotated file Show diff for this revision Revisions of this file
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