#include "Pump.cpp"
#include "EasyNextionLibrary.h"
EasyNex myNex(Serial);
unsigned long timer;
unsigned long pageRefreshTimer = millis(); // Timer for DATA_REFRESH_RATE
#define DATA_REFRESH_RATE 1000
#define Spritz 0
#define GinTonic 1
#define GinLemon 2
#define VodkaTonic 3
#define VodkaLemon 4
#define JagerBomb 5
#define JagerCola 6
String menu_banner = "Menu\n-1 riempi pompe\n-2 Spritz\n-3 GinTonic\n-4 pulisci pompe";
#define bottiglie 8
#define DrinkType 5
// CONFIGURAZIONE DRINK DA DEFINIRE
//int request[DrinkType][bottiglie] = {
/* prosecco aperol tonica gin vodka lemon
/* Spritz */ //{ 90 , 60 , 10 , 0 , 0 , 0},
/* GinTonic */ //{ 0 , 0 , 20 , 85 , 0 , 0},
/* GinLemon */ //{ 0 , 0 , 0 , 85 , 0 , 20},
/* VodkaTonic */ //{ 20 , 0 , 100 , 0 , 40 , 0},
/* VodkaLemon */ //{ 20 , 0 , 0 , 0 , 40 , 100},
//};
int request[DrinkType][bottiglie] = {
/* prosecco aperol tonica gin Jager lemon Cola Monster
/* Spritz */ { 90 , 60 , 10 , 0 , 0 , 0, 0, 0},
/* GinTonic */ { 0 , 0 , 40 , 85 , 0 , 0, 0, 0},
/* GinLemon */ { 0 , 0 , 0 , 85 , 0 , 40, 0, 0},
/* JagerBomb */ { 20 , 0 , 0 , 0 , 40 , 0, 0, 100},
/* JagerCola */ { 0 , 0 , 0 , 0 , 40 , 0 , 100, 0},
};
int level[bottiglie] = { 1000, 1000, 1000, 1000, 1000, 1000}; // da sostituire con la eeprom/flash
Pump pompe[bottiglie] = {Pump(22), Pump(23), Pump(24), Pump(25), Pump(26), Pump(27), Pump(28), Pump(29)};
void setup() {
myNex.begin(9600);
for(int i=22;i<bottiglie+22;i++){
pinMode(i, OUTPUT);
}
Serial.begin(9600);
pinMode(53, OUTPUT); //impostare rele LOW
digitalWrite(53, LOW);
pinMode(24, OUTPUT);
}
void loop() {
myNex.NextionListen();
//Menu();
}
void trigger0(){
riempiTubi();
}
void trigger1(){
PulisciTubi();
}
void trigger2(){
newDrink(GinTonic);
}
void trigger3(){
newDrink(GinLemon);
}
void trigger4(){
newDrink(JagerBomb);
}
void trigger5(){
newDrink(JagerCola);
}
void trigger6(){
newDrink(Spritz);
}
void Menu() {
Serial.println(menu_banner);
while(true) {
switch (Serial.read()) {
case '1': riempiTubi(); break;
case '2': newDrink(Spritz); break;
case '3': newDrink(GinTonic); break;
case '4': PulisciTubi(); break;
default: continue; // includes the case 'no input'
}
}
}
bool riempiTubi(){
for(int i=0;i<6;i++){
pompe[i].setActiveQuantity(25);
}
}
bool newDrink(int drink){
if(isPossible(drink))
dispens(drink);
Serial.print("drink completato \n");
}
bool isPossible(int drink){
for(int bottle=0; bottle<6; bottle++){
if(level[bottle] < (request[drink][bottle] + 50 && level[bottle]!= 0)) // giusto da avere almeno 50ml in più di quello che mi serve
return false;
return true;
}
}
void dispens(int drink){
for(int bottle=0; bottle<6; bottle++){
if(request[drink][bottle] != 0)
versa(request[drink][bottle], bottle);
level[bottle] -= request[drink][bottle];
}
}
void WaitForIt(char C)
{
while (true)
{
if (Serial.available() > 0)
if (Serial.read() == C)
break;
}
}
void PulisciTubi(){
for(int i=0;i<bottiglie;i++){
pompe[i].setActiveQuantity(35);
}
};
void versa(int quanto,int cosa)
{
Serial.print("sto versando: ");
Serial.print(cosa);
Serial.print(" - ");
Serial.print("quantita: ");
Serial.print(quanto);
Serial.print("\n");
pompe[cosa].setActiveQuantity(quanto);
}