#include "RTClib.h"
RTC_DS1307 rtc;
// tt - primary tank
// ut - Secondary/Underground tank
const int m1Pin = 24; // Pin number for m1 with a normally open solenoid valve
const int m2Pin = 26; // Pin number for m2
const int s1Pin = 30; // Pin number for s1 a normally closed solenoid valve
const int s2Pin = 28; // Pin number for s2 a normally closed solenoid valve
const int s3Pin = 31; // Pin number for s3 a normally closed solenoid valve
const int m1led = 27;
const int m2led = 29;
const int ttled = 23;
const int utled = 25;
const int T1 = 49;
const int T2 = 51;
int f = 22;
const int utppin = A11; // pin number for utPressure Sensor
const int ttppin = A3; // pin number for ttPressure Sensor
const float max = 900; //1023
const float ttt = 204.6;
const float utt = 512;
const int aut = 22; //for auto Mode
const int faul = 2; // fault finding
void setup() {
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
Serial.begin(115200);
pinMode(m1Pin, OUTPUT);
pinMode(m2Pin, OUTPUT);
pinMode(s1Pin, OUTPUT);
pinMode(s2Pin, OUTPUT);
pinMode(s3Pin, OUTPUT);
pinMode(ttled, OUTPUT);
pinMode(utled, OUTPUT);
pinMode(m1led, OUTPUT);
pinMode(m2led, OUTPUT);
pinMode(T1, INPUT_PULLUP);
pinMode(T2, INPUT_PULLUP);
pinMode(aut , INPUT_PULLUP);
pinMode(faul , INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
// 6= weight of water,tank,DUST PARTICLES - HEAVY WEIGHT
}
void loop() {
int F=22;
DateTime now = rtc.now();
int autto = !(digitalRead(aut));
int fault = !(digitalRead(faul));
int tank1 = !(digitalRead(T1));
int tank2 = !(digitalRead(T2));
int pressure2 = analogRead(utppin);
int pressure1 = analogRead(ttppin);
int hr = now.hour();
//mode selection
if(autto=1 && fault==0){
pressure2 = analogRead(utppin);
pressure1 = analogRead(ttppin);
autto = !(digitalRead(aut));
fault = !(digitalRead(faul));
if(pressure1<ttt){
while(pressure1<max){
pressure2 = analogRead(utppin);
pressure1 = analogRead(ttppin);
autto = !(digitalRead(aut));
fault = !(digitalRead(faul));
if (autto==1 && fault==0){
if ((hr >= 5 && hr < 9) || (hr >= 17 && hr < 21)) // Emmergency Condition-Expected to have high demand for washroom ,bathroom, kitchen
{
F=22;
if(pressure2>0){
F=01;
Serial.println("From UGtank + BoreWell to Primary Tank");
}
else if(pressure2==0){
F=00;
Serial.println("From BoreWell to Primary Tank");
}
}
else{ //Normal Timings
F=22;
if(pressure2>0){
F=11;
Serial.println("From UGtank to Primary Tank");
}
else if(pressure2==0){
F=00;
Serial.println("From BoreWell to Primary Tank");
}
}
}
else{
break; //other modes
}
Output(F);
F=22;
}
}
if(pressure2<utt){
while(pressure2<max){
pressure2 = analogRead(utppin);
pressure1 = analogRead(ttppin);
autto = !(digitalRead(aut));
fault = !(digitalRead(faul));
if(pressure1<ttt){
break;
}
if (autto==1 && fault==0){
F=10;
Serial.println("From BoreWell to UndergroundTank(Sump)");
}
else{
break;
}
Output(F);
F=22;
}
}
}
else if(autto==0 && fault==0){
}
else if(autto==0 && fault==1){
}
}
void Output(int f) {
if (f == 00) { // source to tt
digitalWrite(m2Pin, HIGH); // m2 = 1
digitalWrite(m2led, HIGH);
digitalWrite(s3Pin, HIGH); // s3 = 1
digitalWrite(m1Pin, LOW); // m1 = 0
digitalWrite(m1led, LOW);
digitalWrite(s1Pin, LOW); // s1 = 0
digitalWrite(s2Pin, LOW); // s2 = 0
digitalWrite(ttled, HIGH);
digitalWrite(utled, LOW);
}
else if (f == 10) { // source to ut
digitalWrite(m2Pin, HIGH); // m2 = 1
digitalWrite(m2led, HIGH);
digitalWrite(s1Pin, HIGH); // s1 = 1
digitalWrite(m1Pin, LOW); // m1 = 0
digitalWrite(m1led, LOW);
digitalWrite(s2Pin, LOW); // s2 = 0
digitalWrite(s3Pin, LOW); // s3 = 0
digitalWrite(utled, HIGH);
digitalWrite(ttled, LOW);
}
else if (f == 01) { // source and ut to tt
digitalWrite(m1Pin, HIGH); // m1 = 1
digitalWrite(m1led, HIGH);
digitalWrite(s2Pin, HIGH); // s2 = 1
digitalWrite(m2Pin, HIGH); // m2 = 1
digitalWrite(m2led, HIGH);
digitalWrite(s1Pin, LOW); // s1 = 0
digitalWrite(s3Pin, HIGH); // s3 = 1
digitalWrite(ttled, HIGH);
}
else if (f == 11) { // ut to tt
digitalWrite(m1Pin, HIGH); // m1 = 1
digitalWrite(m1led, HIGH);
digitalWrite(s2Pin, HIGH); // s2 = 1
digitalWrite(m2Pin, LOW); // m2 = 0
digitalWrite(m2led, LOW);
digitalWrite(s1Pin, LOW); // s2 = 1
digitalWrite(s3Pin, LOW); // s3 = 0
digitalWrite(ttled, HIGH);
digitalWrite(utled, LOW);
}
else if (f == 22) {
digitalWrite(m1Pin, LOW);
digitalWrite(m1led, LOW);
digitalWrite(s2Pin, LOW);
digitalWrite(m2Pin, LOW);
digitalWrite(m2led, LOW);
digitalWrite(s1Pin, LOW);
digitalWrite(s3Pin, LOW);
digitalWrite(ttled, LOW);
digitalWrite(utled, LOW);
}
}