#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//КЛАПАНЫ
int K1 = 1;
int K2 = 0;
int K3 = 0;
//ДАТЧИКИ УРОВНЯ
int vD1 = 1;
int vD2 = 1;
int vD3 = 1;
//ПРОДУКТ
int vokpis = 0;
// СЧЁТЧИК ЗАПОЛНЕННЫХ РЕЗЕРВУАРОВ
int rezCounter = 0;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
//СВЕТОДИОДЫ
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
// ПУСТОЙ = КРАСНЫЙ
// НАПОЛНЯЕТСЯ = ЖЕЛТЫЙ
// ПОЛНЫЙ = ЗЕЛЁНЫЙ
//ДАТЧИКИ УРОВНЯ
pinMode(A0 ,INPUT);
pinMode(A1 ,INPUT);
pinMode(A2 ,INPUT);
//КЛАПАНЫ
pinMode(A3 ,OUTPUT);
pinMode(A4 ,OUTPUT);
pinMode(A5 ,OUTPUT);
}
void loop() {
//СВЕТОДИОДЫ ЦВЕТА
if (K1 == 1) {analogWrite(8, 255);analogWrite(9, 255);}
if (K2 == 1) {analogWrite(5, 255);analogWrite(6, 255);}
if (K3 == 1) {analogWrite(2, 255);analogWrite(3, 255);}
if (vD1 == 0) {analogWrite(8, 0);analogWrite(9, 255);}
if (vD2 == 0) {analogWrite(5, 0);analogWrite(6, 255);}
if (vD3 == 0) {analogWrite(2, 0);analogWrite(3, 255);}
if (vD1 == 1 && K1 == 0) {analogWrite(8, 255);analogWrite(9, 0);}
if (vD2 == 1 && K2 == 0) {analogWrite(5, 255);analogWrite(6, 0);}
if (vD3 == 1 && K3 == 0) {analogWrite(2, 255);analogWrite(3, 0);}
//КНОПКИ
int R1 = digitalRead(11);
int R2 = digitalRead(12);
int R3 = digitalRead(13);
vokpis++;
if (vokpis % 500 == 1) {
if (vokpis > 500) {
vD1 = 0;
rezCounter = 1;
}
if (vokpis > 1000) {
vD2 = 0;
rezCounter = 2;
}
if (vokpis > 1500) {
vD3 = 0;
rezCounter = 3;
}
lcd.clear();
showLine(0, "PE3-OB 3APOLHEHO: " + String(rezCounter));
showLine(1, "PE3 1: " + String(rezCounter < 1 ? "IN PROG" : "READY"));
showLine(2, "PE3 2: " + String(rezCounter < 2 ? "IN PROG" : "READY"));
showLine(3, "PE3 3: " + String(rezCounter < 3 ? "IN PROG" : "READY"));
}
if (vD1 == 0) {
K1 = 0;
K2 = 1;
}
if (vD2 == 0) {
K2 = 0;
K3 = 1;
}
if (vD3 == 0) {
K3 = 0;
K1 = 1;
}
delay(10);
Serial.print(vokpis);
Serial.print(" ");
Serial.print(vD1);
Serial.print(" ");
Serial.print(vD2);
Serial.print(" ");
Serial.println(vD3);
}
void showLine(int line, String text) {
lcd.setCursor(0, line); // Устанавливаем указатель дисплея на строку line
lcd.print(text); // Выводим текст
}