// #include <SoftwareSerial.h>
// SoftwareSerial EEBlue(0, 1); // RX | TX
#include <IRremote.h>
#define PIN_RECEIVER A0
IRrecv receiver(PIN_RECEIVER);
// defining the pins used for each drink, you can changes this depending how you connect the pumps and the drinks.
int Vodka = 2;
int Cointreau = 3;
int CranberryJuice = 4;
int GrapeJuice = 5;
int LimeJuice = 6;
int CleaningWater = 7;
int Blender = 8;
int Discharge = 9;
int state = 0;
// how much time there is between switching to the next pump.
int interval = 500;
void setup()
{
// Start the remote control receiver
receiver.enableIRIn();
Serial.begin(9600);
Serial.println("The bluetooth gates are open.\
Connect to HC-05 from any other bluetooth device with 1234 as pairing key!");
// Set pin 2-9 to output pins to drive the relay board
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
// If the relayboard is a "low true" board.
// Set the output to low energize the relay's.
// You don't want that yhey all switch on when powering on the cocktailmaker...
// I have commented this out by default
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void loop()
{
if (Serial.available() > 0)
{ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
Serial.println(state);
}
// In the absense of the bluetooth controller, I have used an IR remote control for controlling the system.
// Checks received an IR signal
if (receiver.decode()) {
state = receiver.decodedIRData.command;
Serial.println(state);
receiver.resume();
// Receive the next value
}
// Cocktails:
// 1. Cosmopolitan (vodka, Cointreau, Cranberry, Lime)
if (state == "cos" || state == 48)
{
Serial.println("Cosmopolitan in the making");
Mix(800, 800, 800, 0, 800, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// 2. Vodka- cranberry (Vodka, Cranberry)
if (state == "vkc" || state == 24)
{
Serial.println("Vodka- cranberry in the making");
Mix(800, 0, 800, 0, 0, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// 3. Vodka Sidecar (vodka, Cointreau, lime)
if (state == "vsc" || state == 122)
{
Serial.println("Vodka- Sidecar in the making");
Mix(800, 800, 0, 0, 800, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// 4. Seabreeze (Vodka, Grapefruit, Cranberry)
if (state == "sb" || state == 16)
{
Serial.println("Seabreeze in the making");
Mix(800, 0, 800, 800, 0, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// 5. GreyHound (Vodka, Grapefruit)
if (state == "gh" || state == 56)
{
Serial.println("GreyHound in the making");
Mix(800, 0, 0, 800, 0, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// 6. Cape codder (Vodka, cranberry)
if (state == "cc" || state == 90)
{
Serial.println("Cape codder in the making");
Mix(800, 0, 800, 0, 0, 0, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// Perform Cleaning
if (state == "x" || state == 176)
{
Serial.println("Perform Cleaning");
Mix(0, 0, 0, 0, 0, 800, 800, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
// Set-up all (intial first time after cleaning)
if (state == "u" || state == 104)
{
Serial.println("Set-up All");
Mix(800, 800, 800, 800, 800, 800, 0, 800);
// Vodka, Cointreau, CranberryJuice, GrapeJuice, LimeJuice, CleaningWater, Blender, Discharge
}
}
void Mix(
int DelayTimeVodka,
int DelayTimeCointreau,
int DelayTimeCranberryJuice,
int DelayTimeGrapeJuice,
int DelayTimeLimeJuice,
int DelayTimeWater,
int DelayTimeBlender,
int DelayTimeDischarge)
{
state = 0;
delay(800);
digitalWrite(Vodka, LOW);
delay(DelayTimeVodka);
digitalWrite(Vodka, HIGH);
delay(interval);
digitalWrite(Cointreau, LOW);
delay(DelayTimeCointreau);
digitalWrite(Cointreau, HIGH);
delay(interval);
digitalWrite(CranberryJuice, LOW);
delay(DelayTimeCranberryJuice);
digitalWrite(CranberryJuice, HIGH);
delay(interval);
digitalWrite(GrapeJuice, LOW);
delay(DelayTimeGrapeJuice);
digitalWrite(GrapeJuice, HIGH);
delay(interval);
digitalWrite(LimeJuice, LOW);
delay(DelayTimeLimeJuice);
digitalWrite(LimeJuice, HIGH);
delay(interval);
digitalWrite(CleaningWater, LOW);
delay(DelayTimeWater);
digitalWrite(CleaningWater, HIGH);
delay(interval);
digitalWrite(Blender, LOW);
delay(DelayTimeBlender);
digitalWrite(Blender, HIGH);
delay(interval);
digitalWrite(Discharge, LOW);
delay(DelayTimeDischarge);
digitalWrite(Discharge, HIGH);
delay(interval);
Serial.println("Drink is done!");
state = 0;
}