//Управление насосом водоснабжения в зависимости от давления на входе.
#define Nasos 3 // Насос водоснабжения - пин белого светодиода 3
#define K_1 4 // Клапан 1 - пин фиолетового светодиода 4
#define K_2 5 // Клапан 2 - пин желтого светодиода 5
#define K_3 6 // Клапан 3 - пин оранжевого светодиода 6
#define K_4 7 // Клапан 4 - пин сиреневого светодиода 7
#define L_1 9 // Уровень 1 - пин голубого светодиода 0
#define L_2 10 // Уровень 2 - пин зеленого светодиода 1
#define L_3 11// Уровень 3 - пин красного светодиода 2
// These constants should match the photoresistor's "gamma" and "rl10" attributes
//const float GAMMA = 0.7;
//const float RL10 = 50;
//#include <Max4489_Current_Loop.h> // Библиотека для токовой петли
//Max4489 sensor(A0); // Создаём объект датчика, указывая пин A0
void setup() {
pinMode(Nasos, OUTPUT); /* Устанавливает режим работы пина Nasos на режим OUTPUT */
pinMode(K_1, OUTPUT); /* Устанавливает режим работы пина K_1 на режим OUTPUT */
pinMode(K_2, OUTPUT); /* Устанавливает режим работы пина K_2 на режим OUTPUT */
pinMode(K_3, OUTPUT); /* Устанавливает режим работы пина K_3 на режим OUTPUT */
pinMode(K_4, OUTPUT); /* Устанавливает режим работы пина K_4 на режим OUTPUT */
pinMode(L_1, INPUT); /* Устанавливает режим работы пина L_1 на режим INPUT */
pinMode(L_2, INPUT); /* Устанавливает режим работы пина L_2 на режим INPUT */
pinMode(L_3, INPUT); /* Устанавливает режим работы пина L_3 на режим INPUT */
Serial.begin(115200);
//sensor.setScale(4, 20); // Устанавливаем диапазон: 4 мА = 0 PSI, 20 мА = 1 PSI
pinMode(A0, INPUT);
//Serial.println("Давление на входе");
}
void loop() {
// Convert the analog value into lux value:
//int analogValue = analogRead(A1);
//float voltage = float(analogValue) / 1024.0 * 5.0;
//float resistance = 2000.0 * voltage / (1.0 - voltage / 5.0);
//float lux = pow(RL10 * 1e3 * pow(10.0, GAMMA) / resistance, (1.0 / GAMMA));
int analogpressure = analogRead(A0);
float value = float(analogpressure)*6/1023;
//float pressure = sensor.getCurrent() * 100; // Преобразуем ток в давление (psi)
//float value = float pressure/14.5033; // Преобразуем давление psi в Bar
bool L1=digitalRead(L_1);
Serial.print("L1= ");
Serial.print(L1);
bool L2=digitalRead(L_2);
Serial.print(" L2= ");
Serial.print(L2);
bool L3=digitalRead(L_3);
Serial.print(" L3= ");
Serial.println( L3);
if(value>=1)
{
if(value<=5)
{
digitalWrite(K_1, LOW); // Подаёт на пин K_1 сигнал 0 или LOW – 0 Вольт (GND)
digitalWrite(K_2, HIGH); // Подаёт на пин K_2 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_3, HIGH); // Подаёт на пин K_2 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_4, HIGH); // Подаёт на пин K_2 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(Nasos, LOW); // Подаёт на пин Nasos сигнал 0 или LOW – 0 Вольт (GND)
Serial.print("Режим: прямая без насоса ");
Serial.println(" Насос отключен");
}
else
{
digitalWrite(Nasos, LOW); // Подаёт на пин Nasos сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_1, HIGH); // Подаёт на пин K_1 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_2, HIGH); // Подаёт на пин K_2 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_3, HIGH); // Подаёт на пин K_3 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_4, HIGH); // Подаёт на пин K_4 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
Serial.print("Режим: авария по высокому давлению ");
Serial.println(" Насос отключен");
}
//Serial.print("L1= ");
//Serial.print(digitalRead(L_1));
//Serial.print(" L2= ");
//Serial.print(digitalRead(L_2));
//Serial.print(" L3= ");
//Serial.print(digitalRead(L_3));
//Serial.print(" Р= ");
//Serial.print(value);
//Serial.println(" Bar");
}
else
{
if(value>=0.5)
{
digitalWrite(K_1, HIGH); // Подаёт на пин K_1 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_2, LOW); // Подаёт на пин K_2 сигнал 0 или LOW – 0 Вольт (GND)
//digitalWrite(K_3, HIGH); // Подаёт на пин K_3 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_4, HIGH); // Подаёт на пин K_4 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(Nasos, HIGH); // Подаёт на пин Nasos сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
Serial.print("Режим: прямая c насосом ");
Serial.println(" Насос включен");
if(L1==true)
{
if(L2==true)
{
if(L3==true)
{
digitalWrite(K_3, HIGH); // Подаёт на пин K_3 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
}
else
{
digitalWrite(K_3, LOW); // Подаёт на пин K_3 сигнал 0 или LOW – 0 Вольт (GND)
}
}
else
{
digitalWrite(K_3, LOW); // Подаёт на пин K_3 сигнал 0 или LOW – 0 Вольт (GND)
}
}
else
{
digitalWrite(Nasos, LOW); // Подаёт на пин Nasos сигнал 0 или LOW – 0 Вольт (GND)
digitalWrite(K_4, HIGH); // Подаёт на пин K_4 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
}
}
else
{
delay(2000);
if(L1==true)
{
digitalWrite(K_1, HIGH); // Подаёт на пин K_1 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_2, HIGH); // Подаёт на пин K_2 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_3, HIGH); // Подаёт на пин K_3 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(K_4, LOW); // Подаёт на пин K_4 сигнал 0 или LOW – 0 Вольт (GND)
digitalWrite(Nasos, HIGH); // Подаёт на пин Nasos сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
Serial.print("Режим: бак c насосом ");
Serial.println(" Насос включен");
}
else
{
digitalWrite(K_4, HIGH); // Подаёт на пин K_3 сигнал 1 или HIGH – 5 Вольт (точнее, напряжение питания)
digitalWrite(Nasos,LOW); // Подаёт на пин Nasos сигнал 0 или LOW – 0 Вольт (GND)
Serial.print("Режим: бак c насосом ");
Serial.println(" Насос отключен");
}
}
//Serial.print("P= ");
//Serial.print(value);
//Serial.println(" Bar Насос включен");
//Serial.print("L1= ");
//Serial.print(digitalRead(L_1));
//Serial.print(" L2= ");
//Serial.print(digitalRead(L_2));
//Serial.print(" L3= ");
//Serial.print(digitalRead(L_3));
//Serial.print(" Р= ");
//Serial.print(value);
//Serial.println(" Bar");
}
Serial.print("L_1= ");
Serial.print(digitalRead(L_1));
Serial.print(" L_2= ");
Serial.print(digitalRead(L_2));
Serial.print(" L_3= ");
Serial.print(digitalRead(L_3));
Serial.print(" Р= ");
Serial.print(value);
Serial.println(" Bar");
Serial.print("K1= ");
Serial.print(digitalRead(K_1));
Serial.print(" K2= ");
Serial.print(digitalRead(K_2));
Serial.print(" K3= ");
Serial.print(digitalRead(K_3));
Serial.print(" K4= ");
Serial.println(digitalRead(K_4));
delay(3000);
}