Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Servo TextLCD mbed
Revision 0:2886eabcadbc, committed 2014-12-05
- Comitter:
- tuffnatty
- Date:
- Fri Dec 05 18:20:56 2014 +0000
- Child:
- 1:dd54f5e7db5c
- Commit message:
- Initial commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Fri Dec 05 18:20:56 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/jdenkers/code/Servo/#352133517ccc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Fri Dec 05 18:20:56 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Dec 05 18:20:56 2014 +0000
@@ -0,0 +1,144 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "Servo.h"
+
+#define PIN_LCD_4 PB_8
+#define PIN_LCD_6 PB_9
+#define PIN_LCD_11 PA_10
+#define PIN_LCD_12 PB_3
+#define PIN_LCD_13 PB_5
+#define PIN_LCD_14 PB_4
+
+#define PIN_SERVO_ORANGE PA_15
+
+#define PIN_LED_COFFEE /* first */ PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11, PA_12, PC_5, \
+ /* second */ PC_6, PC_8, PC_9, PB_10, PA_8, PA_9,PC_7, PB_6, PA_7, PA_6
+#define PIN_LED_WATER PC_0, PC_1, PB_0, PA_4, PA_1, PA_0
+#define PIN_LED_COCOA PC_3, PC_2, PH_1, PH_0, PC_15
+#define PIN_LED_MILK PC_14, PB_7, PA_14
+
+#define PIN_BUTTON_AMERICANO PC_10
+#define PIN_BUTTON_CHOCO PC_11
+#define PIN_BUTTON_ESPRESSO PC_12
+#define PIN_BUTTON_LATTE PD_2
+#define PIN_BUTTON_MOCCO PA_13
+
+#define PIN_SWITCH PC_13 /* same as USER_BUTTON */
+
+#define SERVO_POS_A 544 /* 544-2400 */
+#define SERVO_POS_B 2400 /* 544-2400 */
+
+TextLCD lcd(PIN_LCD_4, PIN_LCD_6, PIN_LCD_11, PIN_LCD_12, PIN_LCD_13, PIN_LCD_14); // rs, e, d4-d7
+DigitalIn latte_button(PIN_BUTTON_LATTE, PullUp);
+DigitalIn mocco_button(PIN_BUTTON_MOCCO, PullUp);
+DigitalIn americano_button(PIN_BUTTON_AMERICANO, PullUp);
+DigitalIn choco_button(PIN_BUTTON_CHOCO, PullUp);
+DigitalIn espresso_button(PIN_BUTTON_ESPRESSO, PullUp);
+DigitalIn type_switch(PIN_SWITCH, PullDown);
+
+DigitalOut led[34] = {PIN_LED_COFFEE, PIN_LED_COCOA, PIN_LED_MILK, PIN_LED_WATER};
+Servo servo(PIN_SERVO_ORANGE);
+
+#define COFFEE 0
+#define COCOA 1
+#define MILK 2
+#define WATER 3
+
+#define MAX_COFFEE 20
+#define MAX_COCOA 5
+#define MAX_MILK 3
+#define MAX_WATER 6
+
+int left[4];
+
+void show_leds() {
+ int i;
+ for (i = 0; i < MAX_COFFEE; i++) {
+ led[0 + i] = (i + 1 <= left[COFFEE]);
+ }
+ for (i = 0; i < MAX_COCOA; i++) {
+ led[MAX_COFFEE + i] = (i + 1 <= left[COCOA]);
+ }
+ for (i = 0; i < MAX_MILK; i++) {
+ led[MAX_COFFEE + MAX_COCOA + i] = (i + 1 <= left[MILK]);
+ }
+ for (i = 0; i < MAX_WATER; i++) {
+ led[MAX_COFFEE + MAX_COCOA + MAX_MILK + i] = (i + 1 <= left[WATER]);
+ }
+}
+
+void reset() {
+ int n = type_switch;
+ //lcd.printf("type %d\n", n);
+ if (type_switch == 0) {
+ left[COFFEE] = 15;
+ left[COCOA] = 5;
+ left[MILK] = 3;
+ left[WATER] = 5;
+ } else {
+ left[COFFEE] = 20;
+ left[COCOA] = 4;
+ left[MILK] = 2;
+ left[WATER] = 6;
+ }
+ show_leds();
+ servo.Enable(SERVO_POS_A, 20000);
+ wait(1);
+ lcd.cls();
+ lcd.printf("B\xC3\xB2""ep\xB8\xBF""e \xBD""a\xBE\xB8\xBFo\xBA");
+ //lcd.printf("B"/*\xC3\xB2""ep\xB8\xBF""e \xBD""a\xBE\xB8\xBFo\xBA"*/);
+}
+
+void drop_key() {
+ servo.SetPosition(SERVO_POS_B);
+ wait(1);
+}
+
+void try_drink(int ing0, int ing1, int ing2, int ing3) {
+ wait(0.5);
+ if (left[COFFEE] >= ing0 && left[COCOA] >= ing1 && left[MILK] >= ing2 && left[WATER] >= ing3) {
+ left[COFFEE] -= ing0;
+ left[COCOA] -= ing1;
+ left[MILK] -= ing2;
+ left[WATER] -= ing3;
+ show_leds();
+ lcd.cls();
+ if (left[COFFEE] || left[COCOA] || left[MILK] || left[WATER]) {
+ lcd.printf("\xA4""a\xBA""a\xB7 c\xE3""e\xBB""a\xBD \xBD""e \xBEo\xBB\xBDoc\xBF\xC4\xC6\n");
+ } else {
+ lcd.printf("\n\xA4""a\xBA""a\xB7 c\xE3""e\xBB""a\xBD\n");
+ drop_key();
+ reset();
+ }
+ }
+}
+
+int main() {
+ int was_americano = 1, was_latte = 1, was_mocco = 1, was_choco = 1, was_espresso = 1;
+ int now_americano, now_latte, now_mocco, now_choco, now_espresso;
+ reset();
+ while (1) {
+ now_americano = americano_button;
+ now_latte = latte_button;
+ now_mocco = mocco_button;
+ now_choco = choco_button;
+ now_espresso = espresso_button;
+ if (!was_americano && now_americano) {
+ try_drink(4, 0, 0, 2);
+ } else if (!was_latte && now_latte) {
+ try_drink(2, 0, 1, 0);
+ } else if (!was_mocco && now_mocco) {
+ try_drink(3, 1, 0, 0);
+ } else if (!was_choco && now_choco) {
+ try_drink(0, 2, 1, 0);
+ } else if (!was_espresso && now_espresso) {
+ try_drink(2, 0, 0, 1);
+ }
+ was_americano = now_americano;
+ was_latte = now_latte;
+ was_espresso = now_espresso;
+ was_mocco = now_mocco;
+ was_choco = now_choco;
+ wait(0.05);
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Dec 05 18:20:56 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/031413cf7a89 \ No newline at end of file