void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void setup() {
// Set GPIO PINS
pinMode(16, INPUT_PULLUP); // Water Button GPIO Input Pin
pinMode(4, INPUT_PULLUP); // Drain Button GPIO Input Pin
pinMode(18, OUTPUT); // Water LED GPIO Output PIN
pinMode(19, OUTPUT); // Drain LED GPIO Output Pin
pinMode(14, OUTPUT); // Water Valve Contactor Digital Output GPIO Pin
pinMode(13, OUTPUT); // Drain Valve Contactor Digital Output GPIO Pin
Serial.begin(115200);
//Initialize PIN STATES
digitalWrite(14, LOW); // SET Water Valve OFF
digitalWrite(13, LOW); // SET Drain Valve OFF
digitalWrite(18, LOW); // SET Water LED OFF
digitalWrite(19, LOW); // SET Drain LED OFF
}
void loop() {
// CHECK CONDITIONS FOR WATER VALVE BUTTON PRESS
// Check if Water Button is Pressed and Water Contactor Valve Contactor is OFF and Drain Valve is OFF
if (digitalRead(16) == LOW && digitalRead(13) == LOW && digitalRead(14) == LOW) {
digitalWrite(13, HIGH); // Turn On Water Valve Contactor
digitalWrite(18, HIGH); // Turn On Water LED
Serial.println("Water Button Pressed, Water Valve was Closed - Opening Water Valve "); //debug line
delay(500);
}
// Check if Water Button is Pressed and Water Contactor Valve Contactor is ON and Drain Valve is OFF
else if (digitalRead(16) == LOW && digitalRead(13) == HIGH && digitalRead(14) == LOW) {
digitalWrite(13, LOW); // Turn Off Water Valve Contactor
digitalWrite(18, LOW); // Turn Off Water LED
Serial.println("Water Button Pressed, Water Valve was Open - Closing Water Valve"); //debug line
delay(500);
}
// Check if Water Button is Pressed and Water Contactor Valve Contactor is OFF and Drain Valve is ON
else if (digitalRead(16) == LOW && digitalRead(13) == LOW && digitalRead(14) == HIGH) {
digitalWrite(14, LOW); // Turn Off Drain Valve Contactor
Serial.println("Water Button Pressed, Drain Valve Open - Closing Drain Valve - 30 Second Blink Delay"); //debug line
// BLINK LEDS
for (int i = 0; i < 10; i++) {
digitalWrite(19, !digitalRead(19)); // Toggle Drain LED
delay(1000); // Wait for 1 second
}
digitalWrite(19, LOW); // Turn Off Drain LED
digitalWrite(13, HIGH); // Turn On Water Valve Contactor
digitalWrite(18, HIGH); // Turn On Water LED
Serial.println("Opening Water Valve"); //debug line
delay(500);
}
// CHECK CONDITIONS FOR DRAIN VALVE BUTTON PRESS
// Check if Drain Button is Pressed and DRAIN Valve Contactor is OFF and Water Valve is OFF
else if (digitalRead(4) == LOW && digitalRead(14) == LOW && digitalRead(13) == LOW) {
digitalWrite(14, HIGH); // Turn On Drain Valve Contactor
digitalWrite(19, HIGH); // Corrected syntax: added missing semicolon
Serial.println("Drain Button Pressed, Drain Valve was Closed - Opening Drain Valve "); //debug line
delay(500);
}
// Check if Drain Button is Pressed and Drain Valve Contactor ON and Water Valve Contactor is OFF
else if (digitalRead(4) == LOW && digitalRead(14) == HIGH && digitalRead(13) == LOW) {
digitalWrite(14, LOW);
digitalWrite(19, LOW); // Corrected syntax: added missing semicolon
Serial.println("Drain Button Pressed, Drain Valve was Open - Closing Drain Valve"); //debug line
delay(500);
}
// Check if Drain Button is Pressed and DRAIN Valve Contactor is OFF and Water Valve is ON
else if (digitalRead(4) == LOW && digitalRead(14) == LOW && digitalRead(13) == HIGH) {
digitalWrite(13, LOW); // Turn Off Water Valve
Serial.println("Drain Button Pressed, Water Valve Open - Closing Water Valve - 30 Second Blink Delay"); //debug line
// BLINK LEDS
for (int i = 0; i < 10; i++) {
digitalWrite(18, !digitalRead(18)); // Toggle Water LED
delay(1000); // Wait for 1 second
}
digitalWrite(18, LOW); // Turn Off Water LED
digitalWrite(14, HIGH); // Turn On Drain Valve Contactor
digitalWrite(19, HIGH); // Turn On Drain LED
Serial.println("Opening Drain Valve"); //debug line
delay(500);
}
}