Automatic cocktail maker
Revision 0:0095fd32715b, committed 2015-12-03
- Comitter:
- cshao06
- Date:
- Thu Dec 03 04:26:13 2015 +0000
- Child:
- 1:aa2e8e59127c
- Commit message:
- yeah
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Thu Dec 03 04:26:13 2015 +0000
@@ -0,0 +1,208 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "uLCD_4DGL.h"
+#include <algorithm>
+
+using namespace std;
+
+DigitalOut latch(p9);
+DigitalOut enable(p10);
+
+SPI spi(p11, p12, p13);
+
+DigitalOut valve1(p15);
+DigitalOut valve2(p16);
+DigitalOut valve3(p17);
+
+AnalogIn distSensor(p20);
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+
+Serial pc(USBTX, USBRX);
+//uLCD_4DGL lcd(p28, p27, p30);
+
+int vTime[3];
+bool t_enabled;
+osThreadId mainThreadID;
+
+void RGB_LED(int red, int green, int blue) {
+ unsigned int low_color=0;
+ unsigned int high_color=0;
+ high_color=(blue<<4)|((red&0x3C0)>>6);
+ low_color=(((red&0x3F)<<10)|(green));
+ spi.write(high_color);
+ spi.write(low_color);
+ latch=1;
+ latch=0;
+}
+
+void thread1(void const *args)
+{
+ while (1)
+ {
+ if (t_enabled)
+ {
+ valve1 = 1; led1 = 1;
+ int waitTime = (int)(vTime[0] * 100);
+ Thread::wait(waitTime);
+ valve1 = 0; led1 = 0;
+ t_enabled = false;
+ osSignalSet(mainThreadID, 0x1);
+ }
+ }
+}
+
+void thread2(void const *args)
+{
+ while (1)
+ {
+ if (t_enabled)
+ {
+ valve2 = 1; led2 = 1;
+ int waitTime = (int)(vTime[1] * 100);
+ Thread::wait(waitTime);
+ valve2 = 0; led2 = 0;
+ t_enabled = false;
+ osSignalSet(mainThreadID, 0x2);
+ }
+ }
+}
+
+void thread3(void const *args)
+{
+ while (1)
+ {
+ if (t_enabled)
+ {
+ valve3 = 1; led3 = 1;
+ int waitTime = (int)(vTime[2] * 100);
+ Thread::wait(waitTime);
+ valve3 = 0; led3 = 0;
+ t_enabled = false;
+ osSignalSet(mainThreadID, 0x4);
+ }
+ }
+}
+
+void thread4(void const *args)
+{
+ int red=0;
+ int green=0;
+ int blue=0;
+ while(1) {
+ for (red = 0; red<1000; red = red+200) {
+ for (blue = 0; blue<1000; blue = blue+200) {
+ for (green = 0; green<1000; green = green+200)
+
+ {
+ RGB_LED( red, green, blue);
+ Thread::wait(250);
+ }
+ }
+ }
+ }
+}
+
+void thread5(void const * args)
+{
+ Thread::wait(15000);
+ while (1)
+ {
+ //bool flag = false;
+ //pc.printf("%f\n", distSensor);
+ if (distSensor > 0.05)
+ {
+ pc.putc('l');
+ //pc.putc(' ');
+ //wait(0.5);
+ //Thread::wait(12000000);
+ break;
+ }
+ //Thread::wait(500);
+ }
+}
+
+int main()
+{
+ mainThreadID = osThreadGetId();
+ Thread t1(thread1);
+ Thread t2(thread2);
+ Thread t3(thread3);
+ Thread t4(thread4);
+ Thread t5(thread5);
+ t_enabled = false;
+ char message;
+ char msg[10];
+ char m[4];
+
+
+ spi.format(16,0);
+ spi.frequency(500000);
+ enable=0;
+ latch=0;
+
+ int i;
+ while (1)
+ {
+ if (pc.readable())
+ {
+ message = pc.getc();
+ if (message == 'g')
+ {
+ i = 0;
+ while (i < 10)
+ {
+ if (pc.readable())
+ {
+ msg[i] = pc.getc();
+ i++;
+ }
+ }
+ sprintf(m, "%.4s", msg);
+ vTime[0] = atoi(m);
+ //lcd.printf("%d\n", vTime[0]);
+ //lcd.printf("%s\n", m);
+
+ sprintf(m, "%.3s", msg + 4);
+ vTime[1] = atoi(m);
+
+ //lcd.printf("%d\n", vTime[1]);
+ //lcd.printf("%s\n", m);
+ sprintf(m, "%.3s", msg + 7);
+ vTime[2] = atoi(m);
+
+ //lcd.printf("%d\n", vTime[2]);
+ //lcd.printf("%s\n", m);
+ t_enabled = true;
+ osSignalWait(0x7, osWaitForever);
+ pc.putc('j');
+ }
+ if (message == 'a')
+ {
+ valve1 = 1; led1 = 1;
+ }
+ if (message == 'b')
+ {
+ valve1 = 0; led1 = 0;
+ }
+ if (message == 'c')
+ {
+ valve2 = 1; led2 = 1;
+ }
+ if (message == 'd')
+ {
+ valve2 = 0; led2 = 0;
+ }
+ if (message == 'e')
+ {
+ valve3 = 1; led3 = 1;
+ }
+ if (message == 'f')
+ {
+ valve3 = 0; led3 = 0;
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Thu Dec 03 04:26:13 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#6c35e082773a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Dec 03 04:26:13 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/165afa46840b \ No newline at end of file