#define RelayPin1 23
#define RelayPin2 22
#define RelayPin3 98
#define RelayPin4 99
#define vr 26
unsigned long currentTime = 0;
unsigned long previousMillisA = 0;
unsigned long previousMillisB = 0; // stores last time relay was active(on)
unsigned long aTimeSet = 3000;
unsigned long bTimeSet = 2000;
unsigned long aWaittime = 5000;
unsigned long bWaittime = 5000;
int toggleState_1 = 1; //Define integer to remember the toggle state for relay 1
int toggleState_2 = 1; //Define integer to remember the toggle state for relay 2
int toggleState_3 = 1; //Define integer to remember the toggle state for relay 3
int toggleState_4 = 1; //Define integer to remember the toggle state for relay 4
int CountA, CountB;
boolean aFlag1 = true;
boolean aFlag2 = true;
boolean bFlag1 = true;
boolean bFlag2 = true;
int Value;
namespace sensor {
unsigned int ec;
}
namespace SET {
int NutrientsSet = 1500; //1400
int ecpump = 5;
}
void setup() {
Serial.begin(9600);
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(vr, INPUT);
}
void loop() {
fertilizer_PUMP_A();
fertilizer_PUMP_B();
if (CountA > 1000 && CountB > 1000) {
aFlag1 = 1;
aFlag2 = 1;
bFlag1 = 1;
bFlag2 = 1;
CountA = 0;
CountB = 0;
Serial.println("Confirm B");
Serial.println("Confirm A");
}
//if (CountB > 500) {
// bFlag1 = 1; bFlag2 = 1;
// CountB = 0;
// Serial.println("Confirm B");
// }
sensor::ec = analogRead(vr);
//Serial.print(aFlag1); Serial.print(aFlag2); Serial.print(bFlag1);Serial.println(bFlag2);
}
void fertilizer_PUMP_A() {
if (aFlag1 == 1 && aFlag2 == 1 && (sensor::ec) < SET::NutrientsSet) {
CountA = 0;
aFlag1 = 0;
previousMillisA = millis();
Serial.println(F("Adding Fertilizer A 0 1"));
digitalWrite(RelayPin1, HIGH); // turn on
}
else if (aFlag1 == 0 && aFlag2 == 1 && (millis() - previousMillisA > aTimeSet)) {
digitalWrite(RelayPin1, LOW); // turn off
previousMillisA = millis();
aFlag1 = 0;
aFlag2 = 0;
Serial.println(F("A Time elapsed.... Waiting 0 0"));
}
else if (aFlag1 == 0 && aFlag2 == 0 && (millis() - previousMillisA > aWaittime)) {
aFlag1 = 1;
aFlag2 = 0;
Serial.print("\t");
Serial.println(F("A End Wait 1 0"));
}
else if (aFlag1 == 1 && aFlag2 == 0 && bFlag1 == 1 && bFlag2 == 0 && (sensor::ec) < SET::NutrientsSet ) {
CountA = 0;
aFlag1 = 0;
aFlag2 = 1;
previousMillisA = millis();
Serial.println(F("More Adding Fertilizer A stage 2/ 0 1"));
digitalWrite(RelayPin1, HIGH); // turn on
}
else if (aFlag2 == 0 && (sensor::ec) >= SET::NutrientsSet) {
digitalWrite(RelayPin1, LOW);
//aFlag1 = 1;
//aFlag2 = 1;
CountA++;
Serial.println("++");
//Serial.println(F("A Reset condition encountered 1 1"));
}
else {}
//Serial.println(F("EC Ok"));
}
void fertilizer_PUMP_B() {
if (bFlag1 == 1 && bFlag2 == 1 && (sensor::ec) < SET::NutrientsSet) {
CountB = 0;
bFlag1 = 0;
previousMillisB = millis();
Serial.println(F("Adding Fertilizer B 0 1"));
digitalWrite(RelayPin2, HIGH); // turn on
}
else if (bFlag1 == 0 && bFlag2 == 1 && (millis() - previousMillisB > bTimeSet)) {
digitalWrite(RelayPin2, LOW); // turn off
previousMillisB = millis();
bFlag1 = 0;
bFlag2 = 0;
Serial.println(F("B Time elapsed.... Waiting 0 0"));
}
else if (bFlag1 == 0 && bFlag2 == 0 && (millis() - previousMillisB > bWaittime)) {
bFlag1 = 1;
bFlag2 = 0;
Serial.print("\t");
Serial.println(F("B End Wait 1 0"));
}
else if (aFlag1 == 0 && aFlag2 == 1 && bFlag1 == 1 && bFlag2 == 0 && (sensor::ec) < SET::NutrientsSet) {
CountB = 0;
bFlag1 = 0;
bFlag2 = 1;
previousMillisB = millis();
Serial.println(F("More Adding Fertilizer B stage 2/ 0 1"));
digitalWrite(RelayPin2, HIGH); // turn on
}
else if (bFlag2 == 0 && (sensor::ec) >= SET::NutrientsSet) {
digitalWrite(RelayPin2, LOW);
//bFlag1 = 1;
//bFlag2 = 1;
CountB++;
Serial.println("--");
//Serial.println(F("B Reset condition encountered 1 1"));
}
else {
//Serial.println(F("B Wait"));
}
}