/////////////////////////////////
//* Last Edit in 20/9/2023 *//
//* by Eng.Abdulrahman Yasser *//
/////////////////////////////////
//#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <TimerOne.h>
#include <EEPROM.h>
#include <Wire.h>
//*******************Arabic
byte alef[] = {
B00100,
B00100,
B00100,
B00100,
B00100,
B00100,
B00100,
B00100
};
byte alef_[] = {
B00100,
B00100,
B00100,
B00100,
B00111,
B00000,
B00000,
B00000
};
byte beh[] = {
B00000,
B00000,
B00001,
B00001,
B11111,
B00000,
B00100,
B00000
};
byte teh[] = {
B01010,
B00000,
B00100,
B00100,
B11111,
B00000,
B00000,
B00000
};
byte geem[] = {
B00000,
B01100,
B10010,
B00010,
B01111,
B10000,
B01010,
B00111
};
byte kha[] = {
B00100,
B00000,
B01110,
B00001,
B11111,
B00000,
B00000,
B00000
};
byte noon[] = {
B00000,
B00100,
B00001,
B00001,
B11111,
B00000,
B00000,
B00000
};
byte aien[] = {
B00000,
B00111,
B01000,
B01000,
B11111,
B00000,
B00000,
B00000
};
byte _meem[] = {
B00000,
B00000,
B00110,
B01001,
B11111,
B10000,
B10000,
B10000
};
byte meem[] = {
B00000,
B00000,
B00000,
B00000,
B11111,
B00101,
B00010,
B00000
};
byte la[] = {
B00000,
B00000,
B00001,
B10001,
B01001,
B00101,
B00011,
B11111
};
byte hamza[] = {
B01110,
B10001,
B00100,
B00100,
B00100,
B00100,
B00100,
B00000
};
byte dal[] = {
B00010,
B00110,
B01010,
B10010,
B11110,
B10000,
B01100,
B00000
};
byte thal[] = {
B00010,
B00010,
B00010,
B00110,
B01010,
B10010,
B01100,
B00000
};
byte ra[] = {
B00000,
B00000,
B00000,
B00000,
B00001,
B00001,
B00010,
B11100
};
byte waw[] = {
B00000,
B00000,
B01110,
B10001,
B10001,
B10001,
B11111,
B00000
};
byte lam[] = {
B00001,
B00001,
B00001,
B00001,
B11111,
B00000,
B00000,
B00000
};
// * LCD RS pin to digital pin 0
// * LCD Enable pin to digital pin 1
// * LCD D4 pin to digital pin 2
// * LCD D5 pin to digital pin 3
// * LCD D6 pin to digital pin 4
// * LCD D7 pin to digital pin 5
// * LCD R/W pin to ground
// * LCD VSS pin to ground
// * LCD VCC pin to 5V
//LiquidCrystal lcd(0, 1, 2, 3, 4, 5);
LiquidCrystal_I2C lcd(0x27,20,4);
void program(){
lcd.init();lcd.backlight();
lcd.createChar(0,geem );
lcd.createChar(1,meem );
lcd.createChar(2,alef_ );
lcd.createChar(3,noon );
lcd.createChar(4,ra );
lcd.createChar(5,beh );
lcd.createChar(6,lam );
lcd.createChar(7,alef );
lcd.clear();
lcd.setCursor(8, 0);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.write(5);
lcd.write(6);
lcd.write(7);
}
void No(){
lcd.createChar(0,_meem );
lcd.createChar(1,aien);
lcd.createChar(2,noon );
lcd.createChar(3,la );
lcd.setCursor(7, 1);
lcd.write(3);
lcd.setCursor(12, 1);
lcd.print('<');
lcd.setCursor(6, 2);
lcd.write(0);
lcd.write(1);
lcd.write(2);
}
void _No(){
lcd.createChar(0,_meem );
lcd.createChar(1,aien);
lcd.createChar(2,noon );
lcd.createChar(3,la );
lcd.setCursor(7, 2);
lcd.write(3);
lcd.setCursor(12, 2);
lcd.print('<');
lcd.setCursor(6, 3);
lcd.write(0);
lcd.write(1);
lcd.write(2);
}
void Yes(){
lcd.createChar(0,_meem );
lcd.createChar(1,aien);
lcd.createChar(2,noon );
lcd.createChar(3,la );
lcd.setCursor(7, 1);
lcd.write(3);
lcd.setCursor(6, 2);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.setCursor(12, 2);
lcd.print('<');
}
void _Yes(){
lcd.createChar(0,_meem );
lcd.createChar(1,aien);
lcd.createChar(2,noon );
lcd.createChar(3,la );
lcd.setCursor(7, 2);
lcd.write(3);
lcd.setCursor(6, 3);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.setCursor(12, 3);
lcd.print('<');
}
//////////// Declaring Variables for the Ports /////////////////////////
byte J1 = 9;//A5; // Water Supply (Solonoid) #9
byte J2 = 8;//A4; // Air Drying (Pump) #8
byte J3 = 7;//A3; // SIDEX Supply-from-Tank (Pump) #7
byte J4 = 6;//A2; // Water Drainage (Pump) #6
byte J5 = 5;//A1; // SIDEX-to-Tank (Pump) #5
byte J6 = 4;//A0; // Pumping Solution through Endoscope (Pump) #4
byte J7 = 3;//13; // can be converted to Digital Input Port #3
byte J8 = 2;//12; // can be converted to Digital Input Port #2
byte PB_DWN = A0;//6; //First Input #A0
byte PB_UP = A1;//7; //Second Input #A1
byte PB_Entr = A2;//8; //Third Input #A2
byte in4 = A3; //Forth Input #A3
//byte in5 = 10; //Fifth Input #Canceld
byte buzzer = 12;//11; #12
//////////// End of Declaring Variables for the Ports ///////////////////
//////////// Declaring Variables for steps durations ///////////////////
uint16_t waterSupplyDuration = 120;//120; // in seconds
uint16_t waterDrainageDuration = 120; // in seconds
uint16_t SIDEX_SupplyDuration = 120;//150; // in seconds
uint16_t SIDEX_toTankDuration = 120; // in seconds
uint16_t SIDEX_PumpingDuration = 6; // in minutes
//uint16_t restDuration ; // in seconds
uint16_t dryingDuration = 60; // in seconds //وقت التجفيف
//////////// End of Declaring Variables for steps durations ////////////
//////////// Declaring Variables for EEPROM Positions of steps status ///////////////////
byte EEPROM_waterSupplyRemainingTime = 1;
//byte EEPROM_waterPumpingRemainingTime=2;
byte EEPROM_waterDrainageRemainingTime = 3;
byte EEPROM_SIDEX_SupplyRemainingTime = 4;
byte EEPROM_SIDEX_toTankRemainingTime = 5;
byte EEPROM_SIDEX_PumpingRemainingTime = 6;
byte EEPROM_restRemainingTime = 7;
byte EEPROM_dryingRemainingTime = 8;
byte EEPROM_ExtraSIDEX_PumpingRemainingTime = 9;
//////////// End of Declaring Variables for EEPROM Positions of steps durations ////////////
byte EEPROM_ExtraSIDEX_PumpingDuration = 10;
byte EEPROM_currentMode = 11;
byte EEPROM_selectedProgram = 12;
byte EEPROM_firstWaterCycle = 13;
byte EEPROM_Rest_Duration = 14;
byte toneTime = 250;
byte mode = 0; // represent a screen
byte modeInitializing = 0;
byte snum = 1;
// byte startStop = 0; // program starting/running or stoped
volatile unsigned int startStop = 0; // program starting/running or stoped
byte selectedProgram; // the selected program by the operator
byte secondsCounter = 0;
byte pumpingRest = 0;
byte val ;
// Mode 0 >> Main Menu
// Mode 1 >> Back-Start-Edit screen for Program#1
// Mode 2 >> Edit Sreen for Pumping Time of Program#1
// Mode 3 >> Sure-To-Start-Question for All Programs
// Mode 4 >> Screen of the Water Supply Step
// Mode 5 >> Screen of the Water Pumping Step while continue Supplying
// Mode 6 >> Screen of the SIDEX Supply-from-Tank Step
// Mode 7 >> Screen of the SIDEX Pumping Step while continue supplying
// Mode 8 >> Screen of the Extra SIDEX Pumping Step
// Mode 9 >> Screen of the Rest Step
// Mode 10 >> Screen of SIDEX-To-Tank Step
// Mode 11 >> Screen of Air Drying Step
// Mode 12 >> Screen of the Drainage Step
// Mode 13 >> Power Failure Screen
int flag=0;
int AlterstartStop=0;
int f01=0;
void f1(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f01=0;
}
int f02=0;
void f2(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f02=0;
}
int f03=0;
void f3(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f03=0;
}
int f04=0;
void f4(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f04=0;
}
int f05=0;
void f5(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f05=0;
}
int f06=0;
void f6(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f06=0;
}
int f07=0;
void f7(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Rest Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f07=0;
}
int f08=0;
void f8(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f08=0;
}
int f09=0;
void f9(){
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f09=0;
}
int f010=0;
void f10(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f010=0;
}
int f011=0;
void f11(){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f011=0;
}
int f012=0;
void f12(){
if(selectedProgram == 4 )
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Water Draining"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
}else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
}
f012=0;
}
int f013=0;
void f13(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f013=0;
}
int f014=0;
void f14(){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f014=0;
}
int f015=0;
void f15(){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
f015=0;
}
void TimeIntrrupt(void) {
if (startStop == 1) {
if (mode == 4) {
int remainingT = EEPROM.read(EEPROM_waterSupplyRemainingTime) - 1;
if(selectedProgram == 1){
if(waterSupplyDuration==remainingT+1){digitalWrite(J7,HIGH);}
if(waterSupplyDuration-remainingT+1==7){digitalWrite(J7,LOW);}
}
if (remainingT <= waterSupplyDuration - 20) {
mode = 5;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_waterSupplyRemainingTime, remainingT);
}else {
digitalWrite(J1, HIGH);
EEPROM.write(EEPROM_waterSupplyRemainingTime, remainingT);
//lcd.begin(16, 4);
// lcd.init();lcd.backlight();
// lcd.begin(20,4);
f01=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Supplying Water_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}}
}else if (mode == 5) {
int remainingT = EEPROM.read(EEPROM_waterSupplyRemainingTime) - 1;
if (remainingT <= 0) {
mode = 12;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_waterSupplyRemainingTime, waterSupplyDuration);
digitalWrite(J1, LOW);
digitalWrite(J6, LOW);
} else {
digitalWrite(J1, HIGH);
digitalWrite(J6, HIGH);
EEPROM.write(EEPROM_waterSupplyRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f02=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("S&Pumping Water_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
} else if (mode == 6) {
int remainingT = EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime) - 1;
int supply_Duration;
if (selectedProgram == 3) {
supply_Duration = 100;
} else {
supply_Duration = 20;
}
if (remainingT <= SIDEX_SupplyDuration - supply_Duration) {
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, remainingT);
if (selectedProgram == 3) {
mode = 12;
EEPROM.write(EEPROM_currentMode, mode);
} else {
mode = 7;
EEPROM.write(EEPROM_currentMode, mode);
digitalWrite(J6, HIGH);
secondsCounter = 0;
}
snum = 1;
modeInitializing = 0;
}
// if (selectedProgram == 3) {
// if (remainingT <= 40) {
// EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, remainingT);
// mode = 12;
// EEPROM.write(EEPROM_currentMode, mode);
// snum = 1;
// modeInitializing = 0;
// }
// else {
// digitalWrite(J3, HIGH);
// EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, remainingT);
// //lcd.init();lcd.backlight();
// f03=1;
// // lcd.clear();
// // lcd.setCursor(0, 0);
// // lcd.print(F("Supplying SIDEX_"));
// // lcd.setCursor(6, 1);
// // lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
// // lcd.setCursor(13, 1);
// // lcd.print(F("Sec"));
// // lcd.setCursor(0, 3);
// // lcd.print(F("Stop <"));
// }
// }
else {
mode = 7;
EEPROM.write(EEPROM_currentMode, mode);
digitalWrite(J6, HIGH);
secondsCounter = 0;
}
} else if (mode == 7) {
int remainingT1 = (int)EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime) - 1;
if (remainingT1 <= 0) {
digitalWrite(J3, LOW);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, 0);
//lcd.init();lcd.backlight();
f04=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("S&Pumping SIDEX"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(6, 2);
// lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
// lcd.setCursor(13, 2);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
} else {
digitalWrite(J3, HIGH);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, remainingT1);
//lcd.init();lcd.backlight();
f05=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("S&Pumping SIDEX"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(6, 2);
// lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
// lcd.setCursor(13, 2);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
secondsCounter++;
if (secondsCounter >= 60) {
secondsCounter = 0;
int remainingT2 = EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime) - 1;
if (remainingT2 <= 0) {
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
EEPROM.write(EEPROM_SIDEX_PumpingRemainingTime, SIDEX_PumpingDuration);
digitalWrite(J3, LOW);
digitalWrite(J6, LOW);
if (EEPROM.read(EEPROM_ExtraSIDEX_PumpingDuration) > 0) {
mode = 8;
EEPROM.write(EEPROM_currentMode, mode);
digitalWrite(J6, HIGH);
} else {
mode = 9;
EEPROM.write(EEPROM_currentMode, mode);
}
snum = 1;
modeInitializing = 0;
} else {
digitalWrite(J6, HIGH);
EEPROM.write(EEPROM_SIDEX_PumpingRemainingTime, remainingT2);
//lcd.init();lcd.backlight();
f06=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("S&Pumping SIDEX"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(6, 2);
// lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
// lcd.setCursor(13, 2);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}
} else if (mode == 8) {
if (pumpingRest == 0) {
digitalWrite(J6, HIGH);
}else{
digitalWrite(J6, LOW);
}
secondsCounter++;
if (secondsCounter >= 60) {
secondsCounter = 0;
int remainingT2 = EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime) - 1;
if (remainingT2 <= 0) {
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, EEPROM.read(EEPROM_ExtraSIDEX_PumpingDuration));
digitalWrite(J3, LOW);
digitalWrite(J6, LOW);
mode = 9;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
} else {
if (pumpingRest == 0) {
digitalWrite(J6, LOW);
pumpingRest = 1;
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, remainingT2);
//lcd.init();lcd.backlight();
f07=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Rest Extra Time"));
// lcd.setCursor(0, 1);
// lcd.print(F("Of SIDEX Pumping"));
// lcd.setCursor(6, 2);
// lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
// lcd.setCursor(13, 2);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
} else {
digitalWrite(J6, HIGH);
pumpingRest = 0;
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, remainingT2+1);
//lcd.init();lcd.backlight();
f08=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Extra Time"));
// lcd.setCursor(0, 1);
// lcd.print(F("Of SIDEX Pumping"));
// lcd.setCursor(6, 2);
// lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
// lcd.setCursor(13, 2);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}
}
} else if (mode == 9) {
secondsCounter++;
if (secondsCounter >= 60) {
secondsCounter = 0;
int remainingT = EEPROM.read(EEPROM_restRemainingTime) - 1;
if (remainingT <= 0) {
digitalWrite(J1, LOW);
digitalWrite(J2, LOW);
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J6, LOW);
mode = 10;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_restRemainingTime, EEPROM.read(EEPROM_Rest_Duration));
} else {
EEPROM.write(EEPROM_restRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f09=1;
// lcd.clear();
// lcd.setCursor(6, 0);
// lcd.print(F("Rest"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_restRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Min"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}
} else if (mode == 10) {
int remainingT = EEPROM.read(EEPROM_SIDEX_toTankRemainingTime) - 1;
if (remainingT <= 15) {
mode = 21;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_SIDEX_toTankRemainingTime, remainingT);
}else {
digitalWrite(J5, HIGH);
EEPROM.write(EEPROM_SIDEX_toTankRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f010=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F(" SIDEX to Tank_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
} else if (mode == 11) {
int remainingT = EEPROM.read(EEPROM_dryingRemainingTime) - 1;
if (remainingT <= dryingDuration - 15) {
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J8, HIGH);
}
if (remainingT <= 0) {
digitalWrite(J2, LOW);
digitalWrite(J8, LOW);
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
startStop = 0;
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
} else {
digitalWrite(J2, HIGH);
EEPROM.write(EEPROM_dryingRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f011=1;
// lcd.clear();
// lcd.setCursor(2, 0);
// lcd.print(F("Air Drying"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
} else if (mode == 12) {
if (selectedProgram == 3) {
int remainingT1 = EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime) - 1;
if (remainingT1 <= 0) {
digitalWrite(J3, LOW);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, 0);
} else {
digitalWrite(J3, HIGH);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, remainingT1);
}
}
int remainingT = EEPROM.read(EEPROM_waterDrainageRemainingTime) - 1;
if(selectedProgram == 3 || selectedProgram == 4 ){
if (remainingT <= 0) {
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_waterDrainageRemainingTime, waterDrainageDuration);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
startStop = 0;
} else {
digitalWrite(J4, HIGH);
EEPROM.write(EEPROM_waterDrainageRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f012=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Draining SIDEX_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}else{
if (remainingT <= 15) {
mode = 11;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
//digitalWrite(J2, HIGH);
//digitalWrite(J4, LOW);
//digitalWrite(J3, LOW);
EEPROM.write(EEPROM_waterDrainageRemainingTime, waterDrainageDuration);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
if (selectedProgram == 1 ) {
if (EEPROM.read(EEPROM_firstWaterCycle) == 0) {
EEPROM.write(EEPROM_firstWaterCycle, 1);
mode = 20;
EEPROM.write(EEPROM_currentMode, mode);
} else {
EEPROM.write(EEPROM_firstWaterCycle, 0);
mode = 11;
EEPROM.write(EEPROM_currentMode, mode);
}
} else {
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
startStop = 0;
}
if(selectedProgram == 2){
mode = 11;
EEPROM.write(EEPROM_currentMode, mode);
}
snum = 1;
modeInitializing = 0;
} else {
digitalWrite(J4, HIGH);
EEPROM.write(EEPROM_waterDrainageRemainingTime, remainingT);
if (selectedProgram == 3) {
//lcd.init();lcd.backlight();
f012=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Draining SIDEX_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
} else {
//lcd.init();lcd.backlight();
f013=1;
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F("Draining Water_"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}
}
}else if (mode == 20) {
int remainingT = EEPROM.read(EEPROM_dryingRemainingTime) - 1;
//digitalWrite(J2, HIGH);
if (remainingT <= dryingDuration - 15) {
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
}
if (remainingT <= 0) {
digitalWrite(J2, LOW);
mode = 6;
EEPROM.write(EEPROM_currentMode, mode);
startStop = 0;
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
} else {
digitalWrite(J2, HIGH);
EEPROM.write(EEPROM_dryingRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f014=1;
// lcd.clear();
// lcd.setCursor(2, 0);
// lcd.print(F("Air Drying"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}else if (mode == 21) {
int remainingT = EEPROM.read(EEPROM_dryingRemainingTime) - 1;
// int remainingT2 = EEPROM.read(EEPROM_SIDEX_toTankRemainingTime)-1;
//digitalWrite(J2, HIGH);
if (remainingT <= dryingDuration - 15) {
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
EEPROM.write(EEPROM_SIDEX_toTankRemainingTime, SIDEX_toTankDuration);
}
if (remainingT <= 0) {
digitalWrite(J2, LOW);
if(selectedProgram == 5){mode = 0;}
else{mode = 4;}
EEPROM.write(EEPROM_currentMode, mode);
startStop = 1;
snum = 1;
modeInitializing = 0;
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
} else {
digitalWrite(J2, HIGH);
EEPROM.write(EEPROM_dryingRemainingTime, remainingT);
//lcd.init();lcd.backlight();
f015=1;
// lcd.clear();
// lcd.setCursor(2, 0);
// lcd.print(F("Air Drying"));
// lcd.setCursor(6, 1);
// lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
// lcd.setCursor(13, 1);
// lcd.print(F("Sec"));
// lcd.setCursor(0, 3);
// lcd.print(F("Stop <"));
}
}
//}
}
void setup() {
Serial.begin(9600);
/// First initializing after programming //First Time it will bee " false "
if (EEPROM.read(200) == 10 && EEPROM.read(210) == 10 && EEPROM.read(220) == 10 && EEPROM.read(230) == 10 && EEPROM.read(240) == 10 && EEPROM.read(250) == 10) {
// Do nothing
} else {
mode = 0;
selectedProgram = 1;
EEPROM.write(EEPROM_currentMode, mode);
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
EEPROM.write(EEPROM_ExtraSIDEX_PumpingDuration, 0);
EEPROM.write(EEPROM_restRemainingTime,2);
EEPROM.write(200, 10);
EEPROM.write(210, 10);
EEPROM.write(220, 10);
EEPROM.write(230, 10);
EEPROM.write(240, 10);
EEPROM.write(250, 10);
}
////////////////////////////////////////
//Check previous power fail
if (EEPROM.read(EEPROM_currentMode) != 0 && EEPROM.read(EEPROM_currentMode) != 1 && EEPROM.read(EEPROM_currentMode) != 2 && EEPROM.read(EEPROM_currentMode) != 3 && EEPROM.read(EEPROM_currentMode) != 11) {
mode = 13;
} else {
mode = 0;
//////// Saving intial status of Steps timings in EEPROM ////////////
EEPROM.write(EEPROM_waterSupplyRemainingTime, waterSupplyDuration);
//EEPROM.write(EEPROM_waterPumpingRemainingTime, waterPumpingDuration);
EEPROM.write(EEPROM_waterDrainageRemainingTime, waterDrainageDuration);
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
EEPROM.write(EEPROM_SIDEX_toTankRemainingTime, SIDEX_toTankDuration);
EEPROM.write(EEPROM_SIDEX_PumpingRemainingTime, SIDEX_PumpingDuration);
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, EEPROM.read(EEPROM_ExtraSIDEX_PumpingDuration));
EEPROM.write(EEPROM_restRemainingTime, EEPROM.read(EEPROM_Rest_Duration));
/////////////////////////////////////////////////////////////////////
}
////////////////////////////
lcd.init();lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(" -------- ");
lcd.setCursor(0, 1);
lcd.print(" Endoscope ");
lcd.setCursor(0, 2);
lcd.print(" Washing Machine");
lcd.setCursor(0, 3);
lcd.print(" -------- ");
tone(buzzer, 4000, 500);
delay(2500);
Timer1.initialize(1000000);
Timer1.attachInterrupt(TimeIntrrupt);
//Output Pins
pinMode(buzzer, OUTPUT);
pinMode(J1, OUTPUT);
pinMode(J2, OUTPUT);
pinMode(J3, OUTPUT);
pinMode(J4, OUTPUT);
pinMode(J5, OUTPUT);
pinMode(J6, OUTPUT);
pinMode(J7, OUTPUT);
pinMode(J8, OUTPUT);
//Input Pins
pinMode(PB_DWN, INPUT);
pinMode(PB_UP, INPUT);
pinMode(PB_Entr, INPUT);
pinMode(in4, INPUT);
//pinMode(in5, INPUT);
// Initialize Output Pins
digitalWrite(buzzer, LOW);
digitalWrite(J1, LOW);
digitalWrite(J2, LOW);
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J6, LOW);
digitalWrite(J7, LOW);
digitalWrite(J8, LOW);
//mode = EEPROM.read(EEPROM_currentMode);
//selectedProgram = EEPROM.read(EEPROM_selectedProgram);
//EEPROM.write(EEPROM_firstWaterCycle, 0);
}
void loop() {
if (f01==1){f1();}
if (f02==1){f2();}
if (f03==1){f3();}
if (f04==1){f4();}
if (f05==1){f5();}
if (f06==1){f6();}
if (f07==1){f7();}
if (f08==1){f8();}
if (f09==1){f9();}
if (f010==1){f10();}
if (f011==1){f11();}
if (f012==1){f12();}
if (f013==1){f13();}
if (f014==1){f14();}
if (f015==1){f15();}
// Serial.println("loop");
// the code is written in modes >> each mode represents a screen
// Mode 0 >> Main Menu
// Mode 1 >> Back-Start-Edit screen for Program#1
// Mode 2 >> Edit Sreen for Pumping Time of Program#1
// Mode 3 >> Sure-To-Start-Question for All Programs
// Mode 4 >> Screen of the Water Supply Step
// Mode 5 >> Screen of the Water Pumping Step while continue Supplying
// Mode 6 >> Screen of the SIDEX Supply-from-Tank Step
// Mode 7 >> Screen of the SIDEX Pumping Step while continue supplying
// Mode 8 >> Screen of the Extra SIDEX Pumping Step
// Mode 9 >> Screen of the Rest Step
// Mode 10 >> Screen of SIDEX-To-Tank Step
// Mode 11 >> Screen of Air Drying Step
// Mode 12 >> Screen of the Drainage Step
// Mode 13 >> Power Failure Screen
///////////////////////////////////////////// MODE0 Main Menu #*1*#
if (mode == 0) {
if (modeInitializing == 0) {
modeInitializing = 1;
//lcd.init();lcd.backlight();
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F(" Select Program"));
program();
// lcd.print(F(" Select اختر"));
switchStatment(0, snum);
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
switch (snum) {
case 1:
selectedProgram = 1;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 1;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 2:
selectedProgram = 2;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 3;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 3:
selectedProgram = 3;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 3;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 4:
selectedProgram = 4;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 3;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 5:
selectedProgram = 5;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 3;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
snum++;
if (snum > 5) snum = 1;
//lcd.init();lcd.backlight();
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F(" Select Program"));
program();
switchStatment(0, snum);
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
snum--;
if (snum < 1) snum = 5;
//lcd.init();lcd.backlight();
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print(F(" Select Program"));
program();
switchStatment(0, snum);
}
}
///////////////////////////////////////////// End of MODE0 Main Menu
///////////////////////////////////////////// MODE1 Back-Start-Edit screen for Program#1
if (mode == 1) {
if (modeInitializing == 0) {
modeInitializing = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(1, snum);
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
switch (snum) {
case 1:
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 2:
mode = 3;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 3:
mode = 2;
EEPROM.write(EEPROM_currentMode, mode);
break;
case 4:
mode = 14;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
snum++;
if (snum > 4) snum = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(1, snum);
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
snum--;
if (snum < 1) snum = 4;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(1, snum);
}
}
///////////////////////////////////////////// End of MODE1 Back-Start-Edit screen for Program#1
///////////////////////////////////////////// MODE2 Edit Sreen for Pumping Time of Program#1
if (mode == 2) {
if (modeInitializing == 0) {
modeInitializing = 1;
snum = EEPROM.read(EEPROM_ExtraSIDEX_PumpingDuration);
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(8, 2);
lcd.print(snum);
lcd.setCursor(13, 2);
lcd.print("Min");
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
EEPROM.write(EEPROM_ExtraSIDEX_PumpingDuration, snum);
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, snum);
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(8, 2);
lcd.print(snum);
lcd.setCursor(13, 2);
lcd.print("Min");
lcd.setCursor(0, 3);
lcd.print(" Saved* ");
delay(3000);
mode = 1;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
snum++;
if (snum >= 256) snum = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(8, 2);
lcd.print(snum);
lcd.setCursor(13, 2);
lcd.print("Min");
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
snum--;
if (snum <= -1) snum = 255;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(8, 2);
lcd.print(snum);
lcd.setCursor(13, 2);
lcd.print("Min");
}
}
////////////////////////////////////////////////// End of MODE2 Edit Sreen for Pumping Time of Program#1
//////////////////////////////////////////////////// MODE3 Sure-To-Start-Question for All Programs
if (mode == 3) {
if (modeInitializing == 0) {
modeInitializing = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(3, snum);
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (snum == 1) {
if (selectedProgram == 1) {
mode = 1;
EEPROM.write(EEPROM_currentMode, mode);
} else {
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
}
} else if (snum == 2) {
if (selectedProgram == 1) {
mode = 4;
EEPROM.write(EEPROM_currentMode, mode);
EEPROM.write(EEPROM_firstWaterCycle, 0);
} else if (selectedProgram == 2) {
mode = 10;
EEPROM.write(EEPROM_currentMode, mode);
} else if (selectedProgram == 3) {
mode = 6;
EEPROM.write(EEPROM_currentMode, mode);
} else if (selectedProgram == 4) {
mode = 12;
EEPROM.write(EEPROM_currentMode, mode);
} else if (selectedProgram == 5) {
mode = 10;
EEPROM.write(EEPROM_currentMode, mode);
}
}
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
snum++;
if (snum > 2) snum = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(3, snum);
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
snum--;
if (snum < 1) snum = 2;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(3, snum);
}
}
///////////////////////////////////////////////////// End of MODE3 Sure-To-Start-Question for All Programs
///////////////////////////////////////////// MODE4 Screen of the Water Supply Step
if (mode == 4) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J1, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
// startStop = 0;
}
if (digitalRead(PB_Entr)== HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 1) {
digitalWrite(J1, LOW);
startStop = 0;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
digitalWrite(J1, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_waterSupplyRemainingTime, waterSupplyDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN)== HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE4 Screen of the Water Supply Step
///////////////////////////////////////////// MODE5 Screen of the Water Pumping Step while continue Supplying
if (mode == 5) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J1, HIGH);
digitalWrite(J6, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J1, LOW);
digitalWrite(J6, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
Serial.println("1");
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
digitalWrite(J1, LOW);
digitalWrite(J6, LOW);
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_waterSupplyRemainingTime, waterSupplyDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterSupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE5 Screen of the Water Pumping Step while continue Supplying
///////////////////////////////////////////// MODE6 Screen of the SIDEX Supply-from-Tank Step
if (mode == 6) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J3, HIGH);
// startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
Serial.println(startStop);
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J3, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
digitalWrite(J3, HIGH);
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
modeInitializing = 0;
snum = 1;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Supplying SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE6 Screen of the SIDEX Supply-from-Tank Step
///////////////////////////////////////////// MODE7 Screen of the SIDEX Pumping Step while continue supplying
if (mode == 7) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J3, HIGH);
digitalWrite(J6, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J3, LOW);
digitalWrite(J6, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
digitalWrite(J6, HIGH);
if(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime)>0)digitalWrite(J3, HIGH);
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_SupplyRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_SIDEX_SupplyRemainingTime, SIDEX_SupplyDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 1) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("S&Pumping SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE7 Screen of the SIDEX Pumping Step while continue supplying
///////////////////////////////////////////// MODE8 Screen of the Extra SIDEX Pumping Step
if (mode == 8) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J6, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J6, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of SIDEX Pumping"));
lcd.setCursor(6, 2);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 2);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_ExtraSIDEX_PumpingRemainingTime, EEPROM.read(EEPROM_ExtraSIDEX_PumpingDuration));
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Extra Pumping"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_ExtraSIDEX_PumpingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE8 Screen of the Extra SIDEX Pumping Step
///////////////////////////////////////////// MODE9 Screen of the Rest Step
if (mode == 9) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J1, LOW);
digitalWrite(J2, LOW);
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J6, LOW);
digitalWrite(J7, LOW);
digitalWrite(J8, LOW);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_restRemainingTime, EEPROM.read(EEPROM_Rest_Duration));
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print(F("Rest"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_restRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Min"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE9 Screen of the Rest Step
///////////////////////////////////////////// MODE10 Screen of SIDEX-To-Tank Step
if (mode == 10) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J5, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J5, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_SIDEX_toTankRemainingTime, SIDEX_toTankDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(" SIDEX to Tank_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_SIDEX_toTankRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE10 Screen of SIDEX-To-Tank Step
///////////////////////////////////////////// MODE11 Screen of Air Drying Step
if (mode == 11) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J2, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J2, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE11 Screen of Air Drying Step
///////////////////////////////////////////// MODE12 Screen of the Drainage Step
if (mode == 12) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J4, HIGH);
startStop = 1;
if (selectedProgram == 3) {
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
} else {
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J4, LOW);
digitalWrite(J3, LOW);
startStop = 1;
snum = 1;
if (selectedProgram == 3) {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
} else {
switch (snum) {
case 1:
digitalWrite(J4, HIGH);
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_waterDrainageRemainingTime, waterDrainageDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
if (selectedProgram == 3) {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
if (selectedProgram == 3) {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining SIDEX_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Draining Water_"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_waterDrainageRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
}
///////////////////////////////////////////// End of MODE12 Screen of the Drainage Step
///////////////////////////////////////////// MODE13 Power Failure
if (mode == 13) {
if (modeInitializing == 0) {
modeInitializing = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(13, snum);
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
switch (snum) {
case 1:
selectedProgram = EEPROM.read(EEPROM_selectedProgram);
mode = EEPROM.read(EEPROM_currentMode);
break;
case 2:
selectedProgram = 1;
EEPROM.write(EEPROM_selectedProgram, selectedProgram);
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
EEPROM.write(EEPROM_firstWaterCycle, 0);
break;
}
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
snum++;
if (snum > 2) snum = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(13, snum);
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
snum--;
if (snum < 1) snum = 2;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
switchStatment(13, snum);
}
}
///////////////////////////////////////////// End of MODE13 Power Failure
///////////////////////////////////////////// MODE14 Edit Sreen for Rest Time of Program#1
if (mode == 14) {
if (modeInitializing == 0) {
modeInitializing = 1;
val = EEPROM.read(EEPROM_Rest_Duration);
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Edit Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of Rest Duration"));
lcd.setCursor(8, 2);
lcd.print(val);
lcd.setCursor(13, 2);
lcd.print("Min");
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
EEPROM.write(EEPROM_restRemainingTime, val);
EEPROM.write(EEPROM_Rest_Duration, val);
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Edit Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of Rest Duration"));
lcd.setCursor(8, 2);
lcd.print(val);
lcd.setCursor(13, 2);
lcd.print("Min");
lcd.setCursor(0, 3);
lcd.print(" Saved* ");
delay(3000);
mode = 1;
EEPROM.write(EEPROM_currentMode, mode);
snum = 1;
modeInitializing = 0;
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
val++;
//if (snum >= 256) snum = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Edit Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of Rest Duration"));
lcd.setCursor(8, 2);
lcd.print(val);
lcd.setCursor(13, 2);
lcd.print("Min");
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
val-- ;
if (val <= -1) val = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(F("Edit Time"));
lcd.setCursor(0, 1);
lcd.print(F("Of Rest Duration"));
lcd.setCursor(8, 2);
lcd.print(val);
lcd.setCursor(13, 2);
lcd.print("Min");
}
}
////////////////////////////////////////////////// End of MODE14 Edit Sreen for Rest Time of Program#1
///////////////////////////////////////////// MODE20 Screen of Air Drying Step
if (mode == 20) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J2, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J1, LOW);
digitalWrite(J2, LOW);
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J6, LOW);
digitalWrite(J7, LOW);
digitalWrite(J8, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE20 Screen of Air Drying Step
///////////////////////////////////////////// MODE21 Screen of Air Drying Step
if (mode == 21) {
if (modeInitializing == 0) {
modeInitializing = 1;
digitalWrite(J2, HIGH);
startStop = 1;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
startStop = 0;
}
if (digitalRead(PB_Entr) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_Entr) == HIGH) {}
delay(200);
if (startStop == 0) {
digitalWrite(J1, LOW);
digitalWrite(J2, LOW);
digitalWrite(J3, LOW);
digitalWrite(J4, LOW);
digitalWrite(J5, LOW);
digitalWrite(J6, LOW);
digitalWrite(J7, LOW);
digitalWrite(J8, LOW);
startStop = 1;
snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
} else {
switch (snum) {
case 1:
startStop = 0;
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 3);
lcd.print(F("Stop <"));
break;
case 2:
EEPROM.write(EEPROM_dryingRemainingTime, dryingDuration);
snum = 1;
modeInitializing = 0;
mode = 0;
EEPROM.write(EEPROM_currentMode, mode);
break;
}
}
}
if (digitalRead(PB_DWN) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_DWN) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum++;
if (snum > 2) snum = 1;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
if (digitalRead(PB_UP) == HIGH) {
tone(buzzer, 4000, toneTime);
while (digitalRead(PB_UP) == HIGH) {}
delay(200);
if (startStop == 0) {
} else {
snum--;
if (snum < 1) snum = 2;
switch (snum) {
case 1:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume <"));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu "));
break;
case 2:
//lcd.init();lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(F("Air Drying"));
lcd.setCursor(6, 1);
lcd.print(EEPROM.read(EEPROM_dryingRemainingTime));
lcd.setCursor(13, 1);
lcd.print(F("Sec"));
lcd.setCursor(0, 2);
lcd.print(F("Resume "));
lcd.setCursor(0, 3);
lcd.print(F("Back Main Menu <"));
break;
}
}
}
}
///////////////////////////////////////////// End of MODE21 Screen of Air Drying Step
}
void switchStatment(byte mode, byte snum) {
if (mode == 0) {
switch (snum) {
case 1:
lcd.setCursor(0, 1);
lcd.print(F("Washing <"));
lcd.setCursor(0, 2);
lcd.print(F("SIDEX To Tank "));
lcd.setCursor(0, 3);
lcd.print(F("SIDEX Drainage"));
break;
case 2:
lcd.setCursor(0, 1);
lcd.print(F("Washing "));
lcd.setCursor(0, 2);
lcd.print(F("SIDEX To Tank <"));
lcd.setCursor(0, 3);
lcd.print(F("SIDEX Drainage"));
break;
case 3:
lcd.setCursor(0, 1);
lcd.print(F("Washing "));
lcd.setCursor(0, 2);
lcd.print(F("SIDEX To Tank "));
lcd.setCursor(0, 3);
lcd.print(F("SIDEX Drainage<"));
break;
case 4:
lcd.setCursor(0, 1);
lcd.print(F("Water Drainage<"));
lcd.setCursor(0, 2);
lcd.print(F("Sidex Back"));
break;
case 5:
lcd.setCursor(0, 1);
lcd.print(F("Water Drainage"));
lcd.setCursor(0, 2);
lcd.print(F("Sidex Back <"));
break;
}
} else if (mode == 1) {
switch (snum) {
case 1:
lcd.print(F("Back Main Menu <"));
lcd.setCursor(0, 1);
lcd.print(F("Start Program"));
lcd.setCursor(0, 2);
lcd.print(F("Edit Program"));
lcd.setCursor(0, 3);
lcd.print(F("Rest Duration"));
break;
case 2:
lcd.print(F("Back Main Menu"));
lcd.setCursor(0, 1);
lcd.print(F("Start Program <"));
lcd.setCursor(0, 2);
lcd.print(F("Edit Program"));
lcd.setCursor(0, 3);
lcd.print(F("Rest Duration"));
break;
case 3:
lcd.print(F("Back Main Menu"));
lcd.setCursor(0, 1);
lcd.print(F("Start Program"));
lcd.setCursor(0, 2);
lcd.print(F("Edit Program <"));
lcd.setCursor(0, 3);
lcd.print(F("Rest Duration"));
break;
case 4:
lcd.print(F("Back Main Menu"));
lcd.setCursor(0, 1);
lcd.print(F("Start Program"));
lcd.setCursor(0, 2);
lcd.print(F("Edit Program"));
lcd.setCursor(0, 3);
lcd.print(F("Rest Duration <"));
break;
}
} else if (mode == 3) {
switch (snum) {
case 1:
lcd.print(F("Sure To Start_"));
No();
// lcd.setCursor(6, 1);
// lcd.print(F("No <"));
// lcd.setCursor(6, 2);
// lcd.print(F("Yes"));
break;
case 2:
lcd.print(F("Sure To Start_"));
Yes();
// lcd.setCursor(6, 1);
// lcd.print(F("No"));
// lcd.setCursor(6, 2);
// lcd.print(F("Yes <"));
break;
}
} else if (mode == 13) {
switch (snum) {
case 1:
lcd.print(F("Power Failure "));
lcd.setCursor(0, 1);
lcd.print(F("To Last State?"));
_Yes();
// lcd.setCursor(6, 2);
// lcd.print(F("Yes <"));
// lcd.setCursor(6, 3);
// lcd.print(F("No"));
break;
case 2:
lcd.print(F("Power Failure "));
lcd.setCursor(0, 1);
lcd.print(F("To Last State?"));
_No();
// lcd.setCursor(6, 2);
// lcd.print(F("Yes"));
// lcd.setCursor(6, 3);
// lcd.print(F("No <"));
break;
}
}
}