#include <Adafruit_ILI9341.h>
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
const int Pin4 = 25; // YELLOW - Flushing solenoid
const int Pin5 = 26; // GREEN - input solenoid
const int Pin6 = 27; // RED - water pomp
const int Pin7 = 33; // BLUE - buypass
const int Pin8 = 14; //
const int Pin1 = 32; // Min level permiat
const int Pin2 = 39; // Pressure max level
const int Pin3 = 34;
const int PinFlushing = 35;
const int PinWork = 36; // work mode status
int permiatMinLevel = 0;
int pressureMaxStatus = 0;
int buttonState3 = 0;
int flushingStatus = 0;
int workStatus = 0;
int modeStatus = 0; // 0 - wait, 1 - work, 2 - flushing
byte iChar[8] = {
0b11011,
0b11111,
0b10011,
0b11011,
0b11011,
0b11011,
0b10001,
0b11111
};
byte oneChar[8] = {
0b11011,
0b10011,
0b11011,
0b11011,
0b11011,
0b11011,
0b10001,
0b11111
};
byte customChar[8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
void setup() {
Serial.begin(115200);
pinMode(Pin1, INPUT);
pinMode(Pin2, INPUT);
pinMode(Pin3, INPUT);
pinMode(Pin4, OUTPUT);
pinMode(Pin5, OUTPUT);
pinMode(Pin6, OUTPUT);
pinMode(PinFlushing, INPUT);
pinMode(PinWork, INPUT);
tft.begin();
tft.setRotation(1);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.print("Connecting to WiFi");
}
void loop() {
// permiatLevel = digitalRead(Pin1);
// buttonState2 = digitalRead(Pin2);
// buttonState3 = digitalRead(Pin3);
workStatus = digitalRead(PinWork);
flushingStatus = digitalRead(PinFlushing);
if (workStatus == HIGH && flushingStatus == LOW) {
permiatMinLevel = digitalRead(Pin1);
pressureMaxStatus = digitalRead(Pin2);
if (permiatMinLevel == HIGH && pressureMaxStatus == LOW) {
delay(250);
if(modeStatus != 1){
work();
}
} else {
if(modeStatus != 0){
waiting();
}
}
} else if (flushingStatus == HIGH && workStatus == LOW) {
if(modeStatus != 2){
flushing();
}
} else {
if(modeStatus != 0){
waiting();
}
}
}
void work() {
modeStatus = 1;
digitalWrite(Pin5, HIGH);
delay(1000);
digitalWrite(Pin6, HIGH);
// LCD.clear();
// LCD.setCursor(0, 0);
// LCD.println("Status: WORK");
delay(1000);
}
void flushing() {
modeStatus = 2;
digitalWrite(Pin4, HIGH);
delay(1000);
digitalWrite(Pin5, HIGH);
delay(1000);
digitalWrite(Pin6, HIGH);
// LCD.clear();
// LCD.setCursor(0, 0);
// LCD.println("Status: Flushing");
delay(1000);
}
void waiting() {
modeStatus = 0;
digitalWrite(Pin6, LOW);
delay(1000);
digitalWrite(Pin5, LOW);
delay(1000);
digitalWrite(Pin4, LOW);
// LCD.clear();
// LCD.setCursor(0, 0);
// LCD.println("Status: Wait");
delay(1000);
}