I am not sure I follow you. This is the only way I think I could write it to work. Is there a more elegant/cleaner way to do this?
// digital I/O Pin Constants
int S1 = 2; // Float Switch 1
int S2 = 3; // Float Switch 2
int S3 = 4; // Manual Switch 1
int K1 = 8; // Relay K1 - Solenoid for Tank 1
int K2 = 9; // Relay K2 - Solenoid for Tank 2
int K3 = 10; // Relay K3 - Solenoid for Manual Use
int K4 = 11; // Relay K4 - Water Pump Relay
void setup() {
// Initialize the pins, define digital I/O Pin Use
pinMode(S1, INPUT);
pinMode(S2, INPUT);
pinMode(S3, INPUT);
pinMode(K1, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(K3, OUTPUT);
pinMode(K4, OUTPUT);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
}
// Begin Water Tank 1 Logic
void loop()
{
// If Switch 1 is Low, Water Low, First check if no other switches are LOW
if (digitalRead(S1) == LOW && digitalRead(S2) == HIGH && digitalRead(S3) == HIGH)
{
digitalWrite(K1,HIGH);
digitalWrite(K4,HIGH);
}
else
{
digitalWrite(K1,LOW);
digitalWrite(K4,LOW);
}
// If Switch 2 is Low, Water Low, First check if no other switches are LOW
if (digitalRead(S2) == LOW && digitalRead(S1) == HIGH && digitalRead(S3) == HIGH)
{
digitalWrite(K2,HIGH);
digitalWrite(K4,HIGH);
}
else
{
digitalWrite(K2,LOW);
digitalWrite(K4,LOW);
}
// If Switch 3 is Low, Water Low, First check if no other switches are LOW
if (digitalRead(S3) == LOW && digitalRead(S1) == HIGH && digitalRead(S2) == HIGH)
{
digitalWrite(K3,HIGH);
digitalWrite(K4,HIGH);
}
else
{
digitalWrite(K3,LOW);
digitalWrite(K4,LOW);
}
}