int ButtonStatus = LOW;
boolean running = true;
long currentMillis = 0;
long previousMillis = 0;
//PIN ID
int WaterIn = 2;
int CausticIn = 3;
int CausticReturn= 4;
int SanitizerIn = 5;
int SanitizerReturn = 6;
int CO = 7;
int heaterPin = 8;
int WaterDrain = 9;
int CausticDrain = 10;
int SanitizerDrain = 11;
int button = 13;
int KegAir = 12;
int StopButton = 21;
int stoplight = 20;
//CYCLE TIMES
int WaterWashTime = 3000;
int WaterDrainTime = 3000;
int CausticWashTime = 3000;
int CausticDrainTime = 3000;
int SanitizerWashTime = 3000;
int SanitizerDrainTime = 3000;
int COTime = 3000;
int CycleDelay = 1000;
int COSanitizer = 2000;
int SanitizerReturnTime = 2000;
int CausticReturnTime = 2000;
int airtime = 500;
int stoplighttime = 3000;
void setup() {
pinMode(WaterIn,OUTPUT);
pinMode(CausticIn, OUTPUT);
pinMode(CausticReturn, OUTPUT);
pinMode(SanitizerIn, OUTPUT);
pinMode(SanitizerReturn, OUTPUT);
pinMode(CO, OUTPUT);
pinMode(heaterPin, OUTPUT);
pinMode(WaterDrain, OUTPUT);
pinMode(CausticDrain, OUTPUT);
pinMode(SanitizerDrain, OUTPUT);
pinMode(12, OUTPUT);
pinMode(button, INPUT_PULLUP);
pinMode(stoplight, OUTPUT);
pinMode(StopButton, INPUT_PULLUP);
}
void cycle1() {(digitalWrite(WaterIn, HIGH)); //water in valve opens
(digitalWrite(WaterDrain, HIGH)); //water drain valve opens
(delay(WaterWashTime)); //cycle 1 time
(digitalWrite(WaterIn, LOW)); //water in valve closes
(digitalWrite(KegAir, HIGH)); //air pushes water out
(delay (airtime)); //time air to keg
(digitalWrite(KegAir, LOW)); //air to keg off
(delay(WaterDrainTime)); //water drain time
(digitalWrite(WaterDrain, LOW)); //water drain closes
}
void cycle2(){
(digitalWrite(CausticIn, HIGH)); //Caustic in opens, caustic supply air opens, caustic reciever tank vents
(digitalWrite(CausticDrain, HIGH)); //Caustic Drain Valve opens
(delay(CausticWashTime)); //Cycle 2 time
(digitalWrite(CausticIn, LOW)); //Caustic in closes, caustic supply air closes, caustic reciever vent closes
(digitalWrite(KegAir, HIGH)); //air pushes water out
(delay (airtime)); //time air to keg
(digitalWrite(KegAir, LOW)); //air to keg off
(delay(CausticDrainTime)); //Caustic Drain Time
(digitalWrite(CausticDrain, LOW)); //Caustic Drain Closes
}
void cycle3(){
(digitalWrite(SanitizerIn, HIGH)); //Sanitizer in valve opens, Sanitizer supply air opens, Sanitizer reciever vents
(digitalWrite(SanitizerDrain, HIGH)); //Sanitizer Drain Opens
(delay(SanitizerWashTime)); //Cycle 3 time
(digitalWrite(SanitizerIn, LOW)); //Sanitizer in valve closes, Sanitizer supply air closes, Sanitizer reciever vent closes
(delay(SanitizerDrainTime)); //Sanitizer Drains
(digitalWrite(CO, HIGH)); //CO2 pushes out Sanitizer
(delay(COSanitizer)); //CO2 and Sanitizer Drain time
(digitalWrite(SanitizerDrain, LOW)); //Sanitizer Drain Closes
(delay(COTime)); //CO2 Pressurizes Keg
(digitalWrite(CO, LOW)); //CO2 off
}
void sanitizerreturn(){
(digitalWrite(SanitizerReturn, HIGH));
CheckStopButton(SanitizerReturnTime);
(digitalWrite(SanitizerReturn, LOW));
}
void causticreturn(){
(digitalWrite(CausticReturn, HIGH)); //Caustic returns to supply tank
CheckStopButton(CausticReturnTime);
(digitalWrite(CausticReturn, LOW));
} //Caustic return off
void CheckStopButton() {
}
void loop(){
int currentstatus = digitalRead(button);
if (currentstatus == LOW && ButtonStatus == LOW)
{(digitalWrite(heaterPin, HIGH));}
else {
(digitalWrite(heaterPin, LOW)); //heater turns off
(delay(CycleDelay)); //cycle switch delay
cycle1();
(delay(CycleDelay)); //cycle switch delay
cycle2();
(delay(CycleDelay));
cycle1();
(delay(CycleDelay));
cycle3();
causticreturn();
sanitizerreturn();
}
void CheckStopButton(int delay){
boolean ButtonDown = false;
boolean ButtonBackUp = false;
boolean input;
currentMillis = millis(); //number of MS since program started running
previousMillis = currentMillis; //records startup MS
while (currentMillis - previousMillis < delay)
{
input = digitalRead(StopButton);
if(input == HIGH){
buttonDown = true;
}
else if(buttonDown == true & input = LOW){
buttonBackUp = true;
}
currentMillis = millis();
}
if(buttonDown == true){
running = false;
}
while (running == false & buttonBackUp == false){
input = digitalRead(StopButton);
if(input == LOW){
buttonBackUp = true;
}
}
int lastInput = LOW;
while (running == false){
input = digitalRead(StopButton);
if(input == HIGH){
lastInput = HIGH;
}
else if(input == LOW & lastInput == HIGH){
running = true;
}
}
}
}