int ginRelay = 2;
int dryVermouthRelay = 3;
int sweetVermouthRelay = 4;
int campariRelay = 5;
int ryeWhiskeyRelay = 6;
int bourbonRelay = 7;
int serveDrinkRelay = 8;
int washRelay = 9;
int fansRelay = 10;
int stirIngredientsRelay = 15;
int reverseMartiniLED = 11;
int dukesMartiniLED = 12;
int wetMartiniLED = 13;
int negroniLED = A0;
int dryMartiniLED = A1;
int oldPalLED = A2;
int boulevardierLED = A3;
int emergencyStopLed = A4;
int washLED = A5;
int reverseMartiniMXB = A6;
int dukesMartiniMXB = A7;
int wetMartiniMXB = A8;
int negroniMXB = A9;
int dryMartiniMXB = A10;
int oldPalMXB = A11;
int boulevardierMXB = A12;
int washbutton = A13;
int powerOnButton = A14;
int powerOffButton = A15;
int emergencyStopButton = 14;
bool initialized = false;
bool emergencyStopActive = false;
bool mixing = false;
void setup() {
pinMode(powerOnButton, INPUT_PULLUP);
pinMode(powerOffButton, INPUT_PULLUP);
}
void startInitializing() {
for (int i = 2; i <= A5; i++) {
pinMode(i, OUTPUT);
}
for (int i = A6; i <= A15; i++) {
pinMode(i, INPUT_PULLUP);
}
pinMode(emergencyStopButton, INPUT_PULLUP);
pinMode(stirIngredientsRelay, INPUT_PULLUP);
initialized = true;
}
void loop() {
if (!initialized && digitalRead(powerOnButton) == LOW) {
delay(200);
emergencyStopActive = false;
startInitializing();
// turn on fans automatically after starting the process
digitalWrite(fansRelay, HIGH);
}
if (initialized && !emergencyStopActive) {
// Your code to execute after initialization
if ((digitalRead(reverseMartiniMXB) == LOW) && mixing == false) {
digitalWrite(reverseMartiniLED, HIGH);
mixing = true;
delay(200);
digitalWrite(dryVermouthRelay, HIGH); // 2oz
digitalWrite(ginRelay, HIGH); // 1oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(712); // 1oz
delayMicroseconds(100);
digitalWrite(ginRelay, LOW);
delay(712); // 1oz
delayMicroseconds(100);
digitalWrite(dryVermouthRelay, LOW);
delay(44998);
delayMicroseconds(575);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(reverseMartiniLED, LOW);
mixing = false;
} else if ((digitalRead(dukesMartiniMXB) == LOW) && mixing == false) {
digitalWrite(dukesMartiniLED, HIGH);
mixing = true;
delay(200);
digitalWrite(ginRelay, HIGH); // 4oz
digitalWrite(dryVermouthRelay, HIGH); // 1/4oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(178);
digitalWrite(dryVermouthRelay, LOW);
delay(2670);
delayMicroseconds(400);
digitalWrite(ginRelay, LOW);
delay(42329);
delayMicroseconds(582);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(dukesMartiniLED, LOW);
mixing = false;
} else if ((digitalRead(wetMartiniMXB) == LOW) && mixing == false){
mixing = true;
delay(200);
digitalWrite(ginRelay, HIGH); // 2oz
digitalWrite(dryVermouthRelay, HIGH); // 1oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(712);
delayMicroseconds(100);
digitalWrite(dryVermouthRelay, LOW);
delay(712);
delayMicroseconds(100);
digitalWrite(ginRelay, LOW);
delay(44998);
delayMicroseconds(575);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
mixing = false;
} else if ((digitalRead(negroniMXB) == LOW) && mixing == false) {
digitalWrite(negroniLED, HIGH);
mixing = true;
delay(200);
digitalWrite(ginRelay, HIGH); // 1oz
digitalWrite(sweetVermouthRelay, HIGH); // 1oz
digitalWrite(campariRelay, HIGH); // 1oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(590);
delayMicroseconds(400);
digitalWrite(sweetVermouthRelay, LOW);
delay(45);
delayMicroseconds(400);
digitalWrite(campariRelay, LOW);
delay(76);
delayMicroseconds(900);
digitalWrite(ginRelay, LOW);
delay(44999);
delayMicroseconds(287);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(negroniLED, LOW);
mixing = false;
} else if ((digitalRead(dryMartiniMXB) == LOW) && mixing == false) {
digitalWrite(dryMartiniLED, HIGH);
mixing = true;
delay(200);
digitalWrite(ginRelay, HIGH); // 2 1/2oz
digitalWrite(dryVermouthRelay, HIGH); // 1/2oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(356);
digitalWrite(dryVermouthRelay, LOW);
delay(1424);
delayMicroseconds(200);
digitalWrite(ginRelay, LOW);
delay(43219);
delayMicroseconds(800);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(dryMartiniLED, LOW);
mixing = false;
} else if ((digitalRead(oldPalMXB) == LOW) && mixing == false) {
digitalWrite(oldPalLED, HIGH);
mixing = true;
delay(200);
digitalWrite(ryeWhiskeyRelay, HIGH); // 1oz
digitalWrite(campariRelay, HIGH); // 1oz
digitalWrite(dryVermouthRelay, HIGH); // 1oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(590);
delayMicroseconds(400);
digitalWrite(ryeWhiskeyRelay, LOW);
delay(45);
delayMicroseconds(400);
digitalWrite(campariRelay, LOW);
delay(76);
delayMicroseconds(300);
digitalWrite(dryVermouthRelay, LOW);
delay(44999);
delayMicroseconds(287);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(oldPalLED, LOW);
mixing = false;
} else if ((digitalRead(boulevardierMXB) == LOW) && mixing == false) {
digitalWrite(boulevardierLED, HIGH);
mixing = true;
delay(200);
digitalWrite(bourbonRelay, HIGH); // 1 1/4oz
digitalWrite(campariRelay, HIGH); // 1oz
digitalWrite(sweetVermouthRelay, HIGH); // 1oz
digitalWrite(stirIngredientsRelay, HIGH);
delay(590);
delayMicroseconds(400);
digitalWrite(sweetVermouthRelay, LOW);
delay(45);
delayMicroseconds(400);
digitalWrite(campariRelay, LOW);
delay(102);
delayMicroseconds(200);
digitalWrite(bourbonRelay, LOW);
delay(44262);
digitalWrite(stirIngredientsRelay, LOW);
serveDrink();
digitalWrite(boulevardierLED, LOW);
mixing = false;
} else if ((digitalRead(emergencyStopButton) == LOW) && mixing == true) {
for (int i = 2; i <= 7; i++) {
digitalWrite(i, LOW);
}
serveDrink();
} else if ((digitalRead(washbutton) == LOW) && mixing == false) {
// wash
}
}
if (digitalRead(powerOffButton) == LOW) {
delay(200);
initialized = false;
digitalWrite(fansRelay, LOW);
}
delay(200);
}
void serveDrink() {
digitalWrite(serveDrinkRelay, HIGH);
delay(10000);
digitalWrite(serveDrinkRelay, LOW);
}