#include "Countimer.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
#include "Max72xxPanel.h"
//Vcc - Vcc
//Gnd - Gnd
//Din - Mosi (Pin 51)
//CS - SS (Pin 53)
//Clk - Sck (Pin 52)
const int pinCS = 53;
const int numberOfHorizontalDisplays = 8;
const int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
const int wait = 50; // Velocidad a la que realiza el scroll
const int spacer = 1;
const int width = 5 + spacer; // Ancho de la fuente a 5 pixeles
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
//PUMPE (UREDJAJI):
//digitalni izlazi
//PUMPA VELIKA KUĆA
const int PVK = 27;
//PUMPA NOVA KUĆA = PNK
const int PNK = 28;
//PUMPA DNEVNI BORAVAK = PZB
const int PZB = 2;
//PUMPA BIRO = PB
const int PB = 3;
//PUMPA PODNO KAFIĆ = PPK
const int PPK = 4;
//PUMPA PODNO NOVA KUĆA = PPNK
const int PPNK = 5;
//PUMPA RAZDELNIK -> BOJLER = PBR
const int PBR = 6;//proveri tj izbaci
//PUMPA PELET -> BOJLER = PBP
const int PBP = 7;
//PUMPA PELET RECIRKULACIJA = PPR
const int PPR = 8;
//PUMPA PELET -> BAFER = PPB
const int PPB = 9;
//DPUMPA DRVA -> BAFER = PDB
const int PDB = 10;
//PUMPA RECIRKULACIJA SANITARNE VODE = PRSV
const int PRSV = 11;
//MOTOR KLAPNE ZA SVEŽ VAZDUH = MK
const int MK = 12;
//KOTAO NA PELET = KP
const int KP = 13;
//ALARM KOTLA NA DRVA = AD
const int AD = 14;
//GORNJI TRANSPORTER 1 = GT1
const int GT1 = 15;
//SIRENA = ALARM
const int ALARM = 16;
const int ALARM1 = 29;
const int ALARM2 = 30;
const int GA = 31;
const int PA = 32;
//MERENJA:
//analogno
//SPOLJNA TEMPERATURA = ITSP
const int ITSP = A0;
//TEMPERATURA KOTLARNICE = ITK
const int ITK = A1;
//TEMPERATURA BAFERA = ITB
const int ITB = A2;
//TEMPERATURA KOTLA NA DRVA = ITD
const int ITD = A3;
//TEMPERATURA PELET KOTLA =ITP
const int ITP = A4;
//TEMPERATURTA BOJLERA = ITSV
const int ITSV = A5;
//*NAPON GLAVNOG AKUMULATORA = INA
const int INA = A6;
//digitalno...ulazi
//*NAPAJANJE 220V =IN220
const int IN220 = 17;
//NIZAK NIVO PELETA U DONJEM BUNKERU 1 = INNDB
const int INNDB = 18;
//NIZAK NIVO PELETA U GORNJEM BUNKERU = INNGB
const int INNGB = 19;
//RAD GORNJEG TRANSPORTERA 1 = IRGT1
const int IRGT1 = 22;
//RAD DONJEG TRANSPORTERA 1 = IDT1
const int IDT1 = 23;
//OTVARANJE VRATA PELTEC = IOVP
const int IOVP = 24;
//ZATVARANJE VRATA PELTEC = IZVP
const int IZVP = 25;
//PRITISAK VODE = IPV
const int IPV = 26;
bool N220 ;
//NIZAK NIVO PELETA U DONJEM BUNKERU 1 = NNDB
bool NNDB ;
//NIZAK NIVO PELETA U GORNJEM BUNKERU = NNGB
bool NNGB ;
//RAD GORNJEG TRANSPORTERA 1 = RGT1
bool RGT1 ;
//RAD DONJEG TRANSPORTERA 1 = DT1
bool DT1 ;
//OTVARANJE VRATA PELTEC = OVP
bool OVP ;
//ZATVARANJE VRATA PELTEC = ZVP
bool ZVP ;
//PRITISAK VODE = PV
bool PV ;
bool TDP1set;
bool TUGBset;
bool TUCP1set;
bool TUCP2set;
bool TCPset;
bool TRNset;
bool TVPAset;
bool INTERVALON1set;
bool INTERVALOFF1set;
bool INTERVALON2set;
bool INTERVALOFF2set;
bool INTERVALON3set;
bool INTERVALOFF3set;
bool KPdisabled;
//SPOLJNA TEMPERATURA = TSP
int TSP;
//TEMPERATURA KOTLARNICE = TK
int TK;
//TEMPERATURA BAFERA = TB
int TB ;
//TEMPERATURA KOTLA NA DRVA = TD
int TD ;
//TEMPERATURA PELET KOTLA =TP
int TP ;
//TEMPERATURTA BOJLERA = TSV
int TSV ;
//*NAPON GLAVNOG AKUMULATORA = NA
int NA ;
String TXT1;
String TXT2;
String TXT3;
String TXT4;
String TXT5;
String TXT6;
String TXT7;
String TXT8;
/*TAJMERI:
DOPUNA PELETA 1 = TDP1
UPOZORENJE GORNJI BUNKER = TUGB
UPOZORENJE ZA CISCENJE KOTLA NA PELET = TUCP
VREME ZA CISCENJE KOTLA NA PELET = TCP
VREME REZERVNOG NAPAJANJA = TRN
VREME PUNJENJA AKUMULATORA = TVPA
*/
Countimer tTDP1;
Countimer tTUGB;
Countimer tTUCP;
Countimer tTCP;
Countimer tTRN;
Countimer tTVPA;
Countimer tINTERVALON1;
Countimer tINTERVALOFF1;
Countimer tINTERVALON2;
Countimer tINTERVALOFF2;
Countimer tINTERVALON3;
Countimer tINTERVALOFF3;
Countimer tinterval1;
String tDP1 ;
String tUGB ;
String tUCP ;
String tCP ;
String tRN ;
String tVPA ;
String tINTERVALon1;
String tINTERVALoff1;
String tINTERVALon2;
String tINTERVALoff2;
String tINTERVALon3;
String tINTERVALoff3;
int TDP1 ;
int TUGB ;
int TUCP ;
int TCP ;
int TRN ;
int TVPA ;
int INTERVALON1;
int INTERVALOFF1;
int INTERVALON2;
int INTERVALOFF2;
int INTERVALON3;
int INTERVALOFF3;
int hoursTDP1, minutesTDP1, secondsTDP1;
int hoursTUGB, minutesTUGB, secondsTUGB;
int hoursTUCP, minutesTUCP, secondsTUCP;
int hoursTCP, minutesTCP, secondsTCP;
int hoursTRN, minutesTRN, secondsTRN;
int hoursTVPA, minutesTVPA, secondsTVPA;
int hoursINTERVALON1, minutesINTERVALON1, secondsINTERVALON1;
int hoursINTERVALOFF1, minutesINTERVALOFF1, secondsINTERVALOFF1;
int hoursINTERVALON2, minutesINTERVALON2, secondsINTERVALON2;
int hoursINTERVALOFF2, minutesINTERVALOFF2, secondsINTERVALOFF2;
int hoursINTERVALON3, minutesINTERVALON3, secondsINTERVALON3;
int hoursINTERVALOFF3, minutesINTERVALOFF3, secondsINTERVALOFF3;
int VPA;
int p1;
int p2;
int p3;
int i1;
int i2;
bool tprotection;
void setup() {
//connect serial port
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
//Digitalni ulazi
pinMode(PVK, OUTPUT);
pinMode(PNK, OUTPUT);
pinMode(PZB, OUTPUT);
pinMode(PB, OUTPUT);
pinMode(PPK, OUTPUT);
pinMode(PPNK, OUTPUT);
pinMode(PBR, OUTPUT);
pinMode(PBP, OUTPUT);
pinMode(PPR, OUTPUT);
pinMode(PPB, OUTPUT);
pinMode(PDB, OUTPUT);
pinMode(PRSV, OUTPUT);
pinMode(MK, OUTPUT);
pinMode(KP, OUTPUT);
pinMode(AD, OUTPUT);
pinMode(GT1, OUTPUT);
pinMode(ALARM, OUTPUT);
pinMode(ALARM1, OUTPUT);
pinMode(ALARM2, OUTPUT);
pinMode(GA, OUTPUT);
pinMode(PA, OUTPUT);
//Digitalni izlazi
pinMode(IN220, INPUT);
pinMode(INNDB, INPUT);
pinMode(INNGB, INPUT);
pinMode(IRGT1, INPUT);
pinMode(IDT1, INPUT);
pinMode(IOVP, INPUT);
pinMode(IZVP, INPUT);
pinMode(IPV, INPUT);
// Count-up timer with 10s
tTDP1.setCounter(0, 20, 0, tTDP1.COUNT_UP, tTDP1Complete);
// Call print_time1() method every 1s.
tTDP1.setInterval(print_time1, 1000);
// Count-up timer with 10s
tTUGB.setCounter(0, 20, 0, tTUGB.COUNT_UP, tTUGBComplete);
// Call print_time1() method every 1s.
tTUGB.setInterval(print_time2, 1000);
// Count-up timer with 10s
tTUCP.setCounter(0, 20, 0, tTUCP.COUNT_UP, tTUCPComplete);
// Call print_time1() method every 1s.
tTUCP.setInterval(print_time3, 1000);
// Count-up timer with 10s
tTCP.setCounter(0, 20, 0, tTCP.COUNT_UP, tTCPComplete);
// Call print_time1() method every 1s.
tTCP.setInterval(print_time5, 1000);
// Count-up timer with 10s
tTRN.setCounter(0, 20, 0, tTRN.COUNT_UP, tTRNComplete);
// Call print_time1() method every 1s.
tTRN.setInterval(print_time6, 1000);
// Count-up timer with 10s
tTVPA.setCounter(0, 20, 0, tTVPA.COUNT_UP, tTVPAComplete);
// Call print_time1() method every 1s.
tTVPA.setInterval(print_time7, 1000);
// Count-up timer with 10s
tINTERVALON1.setCounter(0, 0, 10, tINTERVALON1.COUNT_UP, tINTERVALON1Complete);
tINTERVALON1.setInterval(print_time8, 1000);
// Count-up timer with 10s
tINTERVALOFF1.setCounter(0, 0, 10, tINTERVALOFF1.COUNT_UP, tINTERVALOFF1Complete);
tINTERVALOFF1.setInterval(print_time9, 1000);
// Count-up timer with 10s
tINTERVALON2.setCounter(0, 0, 10, tINTERVALON2.COUNT_UP, tINTERVALON2Complete);
tINTERVALON2.setInterval(print_time10, 1000);
// Count-up timer with 10s
tINTERVALOFF2.setCounter(0, 0, 10, tINTERVALOFF2.COUNT_UP, tINTERVALOFF2Complete);
tINTERVALOFF2.setInterval(print_time11, 1000);
// Count-up timer with 10s
tINTERVALON3.setCounter(0, 0, 10, tINTERVALON3.COUNT_UP, tINTERVALON3Complete);
tINTERVALON3.setInterval(print_time12, 1000);
// Count-up timer with 10s
tINTERVALOFF3.setCounter(0, 0, 10, tINTERVALOFF3.COUNT_UP, tINTERVALOFF3Complete);
tINTERVALOFF3.setInterval(print_time13, 1000);
/*// Count-down timer with 21s
tDole1.setCounter(0, 0, 21, tDole1.COUNT_DOWN, tDole1Complete);
// Call print_time2() method every 1s.
tDole1.setInterval(print_time2, 1000);
*/
N220 = false ;
//NIZAK NIVO PELETA U DONJEM BUNKERU 1 = NNDB
NNDB = false ;
//NIZAK NIVO PELETA U GORNJEM BUNKERU = NNGB
NNGB = false ;
//RAD GORNJEG TRANSPORTERA 1 = RGT1
RGT1 = false ;
//RAD DONJEG TRANSPORTERA 1 = DT1
DT1 = false ;
//OTVARANJE VRATA PELTEC = OVP
OVP = false ;
//ZATVARANJE VRATA PELTEC = ZVP
ZVP = false ;
//PRITISAK VODE = PV
PV = false ;
KPdisabled = false;
tprotection = false;
p1 = 0;
p2 = 0;
p3 = 0;
i1 = 0;
i2 = 0;
VPA = 0;
matrix. setIntensity ( 15 ) ; // Adjust the brightness between 0 and 15
matrix. setPosition ( 0 , 0 , 1 ) ; // The first display is at <0, 0>
matrix. setPosition ( 1 , 0 , 1 ) ; // The second display is at <1, 0>
matrix. setPosition ( 2 , 0 , 1 ) ; // The third display is in <2, 0>
matrix. setPosition ( 3 , 0 , 1 ) ; // The fourth display is at <3, 0>
matrix. setPosition ( 4 , 0 , 1 ) ; // The fifth display is at <4, 0>
matrix. setPosition ( 5 , 0 , 1 ) ; // The sixth display is at <5, 0>
matrix. setPosition ( 6 , 0 , 1 ) ; // The seventh display is at <6, 0>
matrix. setPosition ( 7 , 0 , 1 ) ; // The eighth display is in <7, 0>
matrix. setRotation ( 0 , 1 ) ; // Display position
matrix. setRotation ( 1 , 1 ) ; // Display position
matrix. setRotation ( 2 , 1 ) ; // Display position
matrix. setRotation ( 3 , 1 ) ; // Display position
matrix. setRotation ( 4 , 1 ) ; // Display position
matrix. setRotation ( 5 , 1 ) ; // Display position
matrix. setRotation ( 6 , 1 ) ; // Display position
matrix. setRotation ( 7 , 1 ) ; // Display position
}
void loop() {
if( p1 == 1 || p2 == 1 || p3 == 1 || i1 == 1 || i2 == 1){
tprotection = true;
}
else{
tprotection = false;
}
//String string = "VTsaedI";
/*int x = 10; // Početna x koordinata
matrix.fillScreen(LOW); // Prazni ekran
// Prikazivanje teksta na matrici na trenutnoj poziciji x
for (int i = 0; i < TXT1.length(); i++) {
matrix.drawChar(x + i * width, (matrix.height() - 8) / 2, TXT1[i], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int a = 0; a < TXT2.length(); a++) {
matrix.drawChar(x + a * width, (matrix.height() - 8) / 2, TXT2[a], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int s = 0; s < TXT3.length(); s++) {
matrix.drawChar(x + s * width, (matrix.height() - 8) / 2, TXT3[s], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int d = 0; d < TXT4.length(); d++) {
matrix.drawChar(x + d * width, (matrix.height() - 8) / 2, TXT4[d], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int f = 0; f < TXT5.length(); f++) {
matrix.drawChar(x + f * width, (matrix.height() - 8) / 2, TXT5[f], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int g = 0; g < TXT6.length(); g++) {
matrix.drawChar(x + g * width, (matrix.height() - 8) / 2, TXT6[g], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int h = 0; h < TXT7.length(); h++) {
matrix.drawChar(x + h * width, (matrix.height() - 8) / 2, TXT7[h], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
for (int j = 0; j < TXT8.length(); j++) {
matrix.drawChar(x + j * width, (matrix.height() - 8) / 2, TXT8[j], HIGH, LOW, 1);
matrix.write(); // Prikazi karaktere
}
matrix.write(); // Prikazi karaktere
//matrix.invertDisplay(true);
//matrix.shutdown(HIGH);
*/
String tekstovi[] = {
TXT1,
TXT2,
TXT3,
TXT4,
TXT5,
TXT6,
TXT7,
TXT8
};
int x = 10; // Početna x koordinata
for (int i = 0; i < 8; i++) {
String trenutniTekst = tekstovi[i];
for (int j = 0; j < trenutniTekst.length(); j++) {
matrix.drawChar(x + j * width, (matrix.height() - 8) / 2, trenutniTekst[j], HIGH, LOW, 1);
}
}
matrix.write(); // Prikazi karaktere
tTDP1.run();
tTUGB.run();
tTUCP.run();
tTCP.run();
tTVPA.run();
tINTERVALON1.run();
tINTERVALOFF1.run();
tINTERVALON2.run();
tINTERVALOFF2.run();
tINTERVALON3.run();
tINTERVALOFF3.run();
tTRN.run();
tDP1 = tTDP1.getCurrentTime();
tUGB = tTUGB.getCurrentTime();
tUCP = tTUCP.getCurrentTime();
tCP = tTCP.getCurrentTime();
tRN = tTRN.getCurrentTime();;
tVPA = tTVPA.getCurrentTime();
tINTERVALon1 = tINTERVALON1.getCurrentTime();
tINTERVALoff1 = tINTERVALOFF1.getCurrentTime();
tINTERVALon2 = tINTERVALON2.getCurrentTime();
tINTERVALoff2 = tINTERVALOFF2.getCurrentTime();
tINTERVALon3 = tINTERVALON3.getCurrentTime();
tINTERVALoff3 = tINTERVALOFF3.getCurrentTime();
sscanf(tDP1.c_str(), "%d:%d:%d", &hoursTDP1, &minutesTDP1, &secondsTDP1);
sscanf(tUGB.c_str(), "%d:%d:%d", &hoursTUGB, &minutesTUGB, &secondsTUGB);
sscanf(tUCP.c_str(), "%d:%d:%d", &hoursTUCP, &minutesTUCP, &secondsTUCP);
sscanf(tCP.c_str(), "%d:%d:%d", &hoursTCP, &minutesTCP, &secondsTCP);
sscanf(tRN.c_str(), "%d:%d:%d", &hoursTRN, &minutesTRN, &secondsTRN);
sscanf(tVPA.c_str(), "%d:%d:%d", &hoursTVPA, &minutesTVPA, &secondsTVPA);
sscanf(tINTERVALon1.c_str(), "%d:%d:%d", &hoursINTERVALON1, &minutesINTERVALON1, &secondsINTERVALON1);
sscanf(tINTERVALoff1.c_str(), "%d:%d:%d", &hoursINTERVALOFF1, &minutesINTERVALOFF1, &secondsINTERVALOFF1);
sscanf(tINTERVALon2.c_str(), "%d:%d:%d", &hoursINTERVALON2, &minutesINTERVALON2, &secondsINTERVALON2);
sscanf(tINTERVALoff2.c_str(), "%d:%d:%d", &hoursINTERVALOFF2, &minutesINTERVALOFF2, &secondsINTERVALOFF2);
sscanf(tINTERVALon3.c_str(), "%d:%d:%d", &hoursINTERVALON3, &minutesINTERVALON3, &secondsINTERVALON3);
sscanf(tINTERVALoff3.c_str(), "%d:%d:%d", &hoursINTERVALOFF3, &minutesINTERVALOFF3, &secondsINTERVALOFF3);
// Calculate the total duration in seconds
TDP1 = hoursTDP1 * 3600 + minutesTDP1 * 60 + secondsTDP1 ;
TUGB = hoursTUGB * 3600 + minutesTUGB * 60 + secondsTUGB ;
TUCP = hoursTUCP * 3600 + minutesTUCP * 60 + secondsTUCP ;
TCP = hoursTCP * 3600 + minutesTCP * 60 + secondsTCP ;
TRN = hoursTRN * 3600 + minutesTRN * 60 + secondsTRN ;
TVPA = hoursTVPA * 3600 + minutesTVPA * 60 + secondsTVPA ;
INTERVALON1 = hoursINTERVALON1 * 3600 + minutesINTERVALON1 * 60 + secondsINTERVALON1;
INTERVALOFF1 = hoursINTERVALOFF1 * 3600 + minutesINTERVALOFF1 * 60 + secondsINTERVALOFF1;
INTERVALON2 = hoursINTERVALON2 * 3600 + minutesINTERVALON2 * 60 + secondsINTERVALON2;
INTERVALOFF2 = hoursINTERVALOFF2 * 3600 + minutesINTERVALOFF2 * 60 + secondsINTERVALOFF2;
INTERVALON2 = hoursINTERVALON3 * 3600 + minutesINTERVALON3 * 60 + secondsINTERVALON3;
INTERVALOFF2 = hoursINTERVALOFF3 * 3600 + minutesINTERVALOFF3 * 60 + secondsINTERVALOFF3;
Serial.print(TDP1);
Serial.print("vreme");
Serial.print("\n");
Serial.print(TRN);
Serial.print("vremetrn");
Serial.print("\n");
/*
tUp.stop();
tUp.restart();
tUp.start();
tUp.pause();
Serial.println(tUp.getCurrentTime());
*/
TSP = 1 / (log(1 / (1023. / analogRead(ITSP) - 1)) / BETA + 1.0 / 298.15) - 273.15;
TK = 1 / (log(1 / (1023. / analogRead(ITK) - 1)) / BETA + 1.0 / 298.15) - 273.15;
TB = 1 / (log(1 / (1023. / analogRead(ITB) - 1)) / BETA + 1.0 / 298.15) - 273.15;
TD = 1 / (log(1 / (1023. / analogRead(ITD) - 1)) / BETA + 1.0 / 298.15) - 273.15;
TP = 1 / (log(1 / (1023. / analogRead(ITP) - 1)) / BETA + 1.0 / 298.15) - 273.15;
TSV = 1 / (log(1 / (1023. / analogRead(ITSV) - 1)) / BETA + 1.0 / 298.15) - 273.15;
NA = 1 / (log(1 / (1023. / analogRead(INA) - 1)) / BETA + 1.0 / 298.15) - 273.15;
N220 = digitalRead(IN220);
NNDB = digitalRead(INNDB);
NNGB = digitalRead(INNGB);
RGT1 = digitalRead(IRGT1);
DT1 = digitalRead(IDT1);
OVP = digitalRead(IOVP);
ZVP = digitalRead(IZVP);
PV = digitalRead(IPV);
/*
IF N220=OFF AND TVPA=0 THEN START TRN, PA=OFF
IF N220=OFF AND GA=ON AND (TRN=120 OR NA<11V) AND ALARM2=OFF THEN PA=ON, DELAY 2S > GA=OFF, TXT7, ALARM1=ON
IF N22O=OFF AND ALARM1=ON AND NA<11V THEN GA=ON, ALARM2=ON
IF N220=ON AND (ALARM1=ON OR ALARM2=ON) THEN GA=ON, PAUZA TRN, VPA=(TRN X 5) - TVPA, START TVPA, ALARM2=OFF, TXT8
IF N220=OFF AND 0<TVPA<VPA THEN START TRN
IF N22O=ON AND NA>14.5V AND TVPA=VPA THEN STOP TVPA, STOP TRN, PA=OFF, ALARM1=OFF, TXT7=OFF, TXT8=OFF
*/
if(N220 == LOW){
if(TVPA == 0){
tTRN.start();
digitalWrite(PA, LOW);
}
if(TRN == 120 || NA < 11){
if(GA == HIGH && ALARM2 == LOW){
digitalWrite(PA, HIGH);
//delay(2000); vrati pre finalnog pokretanja
digitalWrite(GA, LOW);
TXT7 = "7777";
Serial.print("TXT7");
Serial.print("\n");
digitalWrite(ALARM1, HIGH);
}
}
if(ALARM1 == HIGH && NA < 11 ){
digitalWrite(GA, HIGH);
digitalWrite(ALARM2, HIGH);
}
if (TVPA > 0 && VPA > TVPA){
tTRN.start();
}
}
if(N220 == HIGH){
if(ALARM1 == HIGH || ALARM2 == HIGH){
digitalWrite(GA, HIGH);
tTRN.pause();
VPA = (TRN * 5) - TVPA;
tTVPA.start();
digitalWrite(ALARM2, LOW);
TXT8 = "8888";
Serial.print("TXT8");
Serial.print("\n");
}
if(NA > 14.5 && TVPA == VPA){
tTVPA.stop();
tTRN.stop();
digitalWrite(PA, LOW);
digitalWrite(ALARM1, LOW);
TXT7.remove(0, 20);
Serial.print("TXT7OFF");
Serial.print("\n");
TXT8.remove(0, 20);
Serial.print("TXT8OFF");
Serial.print("\n");
}
}
/*
IF TD>30 THEN MK=ON ELSE MK=OFF
IF TD>59 THEN KP=OFF, PPB=OFF, ELSE PPB=ON, KP=ON
IF TD>59 AND TD>TB+5 THEN PDB=ON ELSE PDB=OFF
IF TD>85 THEN AD=ON, PDB=ON ***
IF TD<60 AND KP=ON AND TP>TSV+5 THEN PBP=ON ELSE PBP=OFF
*/
if(TD > 30){
digitalWrite(MK, HIGH);
}
else{
digitalWrite(MK, LOW);
}
if(TD > 59 && !tprotection){
digitalWrite(KP, LOW);
digitalWrite(PPB, LOW);
}
else {
if(!KPdisabled){
digitalWrite(KP, HIGH);
digitalWrite(PPB, HIGH);
}
}
if(TD > 59 && TD > (TB + 5)){
digitalWrite(PDB, HIGH);
}
else{
if(!tprotection){
digitalWrite(PDB, LOW);
}
}
if(TD > 75){ //postavljeno na 75 samo radi probe
digitalWrite(AD, HIGH); //proveri
digitalWrite(PDB, HIGH);
}
if(TD < 60 && KP == HIGH && TP > (TSV + 5)){
if(!KPdisabled){
digitalWrite(PBP, HIGH);
}
}
else{
if(!tprotection){
digitalWrite(PBP, LOW);
}
}
/*
IF DT1=ON THEN START TUCP
IF DT1=OFF pauza TUCP
IF TUCP>120 THEN TXT1
IF TUCP>150 THEN TXT1=OFF, TXT2, KP=OFF ***
IF OVP=ON THEN KP=OFF, START TCP ***
IF TCP<=15 AND ZVP=ON THEN STOP TCP
IF TCP>15 AND ZVP=ON THEN KP=ON, STOP TUCP, STOP TCP, TXT1=OFF, TXT2=OFF ***
*/
if(DT1 == HIGH){
tTUCP.start();
}
if(DT1 == LOW){
tTUCP.pause();
}
if(TUCP > 120){
Serial.print("TXT1");
TXT1 = "1111";
Serial.print("\n");
}
if(TUCP > 150){
Serial.print("TXT2");
TXT2 = "2222";
Serial.print("\n");
KPdisabled = true;
}
else{
KPdisabled = false;
}
if(OVP == HIGH){
KPdisabled = true;
tTCP.start();
}
if(TCP <= 15 && ZVP == HIGH){
tTCP.stop();
}
if(TCP > 15 && ZVP == HIGH){
KPdisabled = false;
tTUCP.stop();
tTCP.stop();
TXT1.remove(0, 20);
Serial.print("TXT1OFF");
Serial.print("\n");
TXT2.remove(0, 20);
Serial.print("TXT2OFF");
Serial.print("\n");
}
/*
IF NNDB=ON THEN GT1=ON, START TDP1
IF TDP1=120 THEN GT1=OFF
IF TDP1=120 AND NNDB=ON THEN TXT3, KP=OFF, PAUZA TDP1 ***
IF TDP1=120 AND NNDB=OFF THEN STOP TDP1, KP=ON, TXT3=OFF ***
IF NNGB=ON THEN START TUGB, TXT4
IF NNGB=ON AND TUGB>2880 THEN KP=OFF, TXT4=OFF, TXT5 ***
IF NNGB=OFF THEN STOP TUGB, KP=ON, TXT4=OFF, TXT5=OFF ***
*/
if(NNDB == HIGH){
digitalWrite(GT1, HIGH);
tTDP1.start();
}
if(TDP1 > 120){
digitalWrite(GT1, LOW);
}
if(TDP1 > 120 && NNDB == HIGH){
TXT3 = "3333";
Serial.print("TXT3");
Serial.print("\n");
KPdisabled = true;
tTDP1.pause();
}
if(TDP1 > 120 && NNDB == LOW){
tTDP1.stop();
KPdisabled = false;
TXT3.remove(0, 20);
Serial.print("TXT3OFF");
Serial.print("\n");
}
if(NNGB == HIGH){
tTUGB.start();
Serial.print("TXT4");
TXT4 = "4444";
Serial.print("\n");
}
if(NNGB == HIGH && TUGB > 2880){
KPdisabled = true;
TXT4.remove(0, 20);
Serial.print("TXT4OFF");
Serial.print("\n");
TXT5 = "5555";
Serial.print("TXT5");
Serial.print("\n");
}
if(NNGB == LOW){
tTUGB.stop();
KPdisabled = false;
TXT4.remove(0, 20);
Serial.print("TXT4OFF");
Serial.print("\n");
TXT5.remove(0, 20);
Serial.print("TXT5OFF");
Serial.print("\n");
}
/*
IF TSP<0 AND TB<15 THEN SVE PUMPE=ON
IF TSP<0 AND TB=>15 THEN SVE PUMPE=INTERVAL
IF TSP<0 AND TK>2 AND TK<5 THEN SVE PUMPE=INTERVAL
IF TSP<0 AND TK<2 THEN SVE PUMPE=ON, TXT6 ELSE TXT6=OFF
IF TSP<0 AND TSV=>20 AND PV=ON AND TB<20 THEN PRSV=INTERVAL
IF TSP<0 AND TSV<20 AND PV=ON AND TB<20 THEN PRSV=ON
*/
if(TSP < 0 && TB < 15 ){
p1 = 1;
if(p1 == 1){
digitalWrite(PVK, HIGH);
digitalWrite(PNK, HIGH);
digitalWrite(PZB, HIGH);
digitalWrite(PB, HIGH);
digitalWrite(PPK, HIGH);
digitalWrite(PPNK, HIGH);
digitalWrite(PBR, HIGH);
digitalWrite(PBP, HIGH);
digitalWrite(PPR, HIGH);
digitalWrite(PPB, HIGH);
digitalWrite(PDB, HIGH);
}
}
else{
p1 = 0;
}
if (TSP < 0 && TB >= 15) {
i1 = 1;
// Serial.print("sssaadasdada");
if(!INTERVALON1set) {
tINTERVALON1.start(); // Pokreni tajmer samo ako nije već pokrenut
INTERVALON1set = true; // Postavi flag da je tajmer pokrenut
}
if (INTERVALON1set && !tINTERVALON1.isStopped()) {
// Ako je tajmer za uključivanje u toku
digitalWrite(PVK, HIGH);
digitalWrite(PNK, HIGH);
digitalWrite(PZB, HIGH);
digitalWrite(PB, HIGH);
digitalWrite(PPK, HIGH);
digitalWrite(PPNK, HIGH);
digitalWrite(PBR, HIGH);
digitalWrite(PBP, HIGH);
digitalWrite(PPR, HIGH);
digitalWrite(PPB, HIGH);
digitalWrite(PDB, HIGH);
}
if (tINTERVALON1.isCounterCompleted()) {
// Ako je prošlo 10 sekundi
if (!INTERVALOFF1set) {
tINTERVALOFF1.start(); // Pokreni tajmer za isključivanje nakon 10 sekundi
INTERVALOFF1set = true; // Postavi flag da je tajmer za isključivanje pokrenut
}
}
if (INTERVALOFF1set && !tINTERVALOFF1.isStopped() && tINTERVALOFF1.isCounterCompleted()) {
// Ako je tajmer za isključivanje u toku i završen
digitalWrite(PVK, LOW);
digitalWrite(PNK, LOW);
digitalWrite(PZB, LOW);
digitalWrite(PB, LOW);
digitalWrite(PPK, LOW);
digitalWrite(PPNK, LOW);
digitalWrite(PBR, LOW);
digitalWrite(PBP, LOW);
digitalWrite(PPR, LOW);
digitalWrite(PPB, LOW);
digitalWrite(PDB, LOW);
// Resetuj tajmere za sledeći ciklus
tINTERVALON1.stop();
tINTERVALOFF1.stop();
INTERVALON1set = false;
INTERVALOFF1set = false;
}
}
else{
i1 = 0;
}
if(TSP < 0 && TK > 2 && TK < 5){
i1 = 2;
if(!INTERVALON2set) {
tINTERVALON2.start(); // Pokreni tajmer samo ako nije već pokrenut
INTERVALON2set = true; // Postavi flag da je tajmer pokrenut
}
if (INTERVALON2set && !tINTERVALON2.isStopped()) {
// Ako je tajmer za uključivanje u toku
digitalWrite(PVK, HIGH);
digitalWrite(PNK, HIGH);
digitalWrite(PZB, HIGH);
digitalWrite(PB, HIGH);
digitalWrite(PPK, HIGH);
digitalWrite(PPNK, HIGH);
digitalWrite(PBR, HIGH);
digitalWrite(PBP, HIGH);
digitalWrite(PPR, HIGH);
digitalWrite(PPB, HIGH);
digitalWrite(PDB, HIGH);
}
if (tINTERVALON2.isCounterCompleted()) {
// Ako je prošlo 10 sekundi
if (!INTERVALOFF2set) {
tINTERVALOFF2.start(); // Pokreni tajmer za isključivanje nakon 10 sekundi
INTERVALOFF2set = true; // Postavi flag da je tajmer za isključivanje pokrenut
}
}
if (INTERVALOFF2set && !tINTERVALOFF2.isStopped() && tINTERVALOFF2.isCounterCompleted()) {
// Ako je tajmer za isključivanje u toku i završen
digitalWrite(PVK, LOW);
digitalWrite(PNK, LOW);
digitalWrite(PZB, LOW);
digitalWrite(PB, LOW);
digitalWrite(PPK, LOW);
digitalWrite(PPNK, LOW);
digitalWrite(PBR, LOW);
digitalWrite(PBP, LOW);
digitalWrite(PPR, LOW);
digitalWrite(PPB, LOW);
digitalWrite(PDB, LOW);
// Resetuj tajmere za sledeći ciklus
tINTERVALON2.stop();
tINTERVALOFF2.stop();
INTERVALON2set = false;
INTERVALOFF2set = false;
}
}
else{
i2 = 0;
}
/*
IF TSP<0 AND TB<15 THEN SVE PUMPE=ON
IF TSP<0 AND TB=>15 THEN SVE PUMPE=INTERVAL
IF TSP<0 AND TK>2 AND TK<5 THEN SVE PUMPE=INTERVAL
IF TSP<0 AND TK<2 THEN SVE PUMPE=ON, TXT6 ELSE TXT6=OFF
IF TSP<0 AND TSV=>20 AND PV=ON AND TB<20 THEN PRSV=INTERVAL
IF TSP<0 AND TSV<20 AND PV=ON AND TB<20 THEN PRSV=ON
*/
if(TSP < 0 && TK < 2){
p2 = 1;
if(p2 == 1){
digitalWrite(PVK, HIGH);
digitalWrite(PNK, HIGH);
digitalWrite(PZB, HIGH);
digitalWrite(PB, HIGH);
digitalWrite(PPK, HIGH);
digitalWrite(PPNK, HIGH);
digitalWrite(PBR, HIGH);
digitalWrite(PBP, HIGH);
digitalWrite(PPR, HIGH);
digitalWrite(PPB, HIGH);
digitalWrite(PDB, HIGH);
TXT6 = "6666";
Serial.print("6666");
Serial.print("\n");
}
}
else{
p2 = 0;
TXT6.remove(0, 20);
Serial.print("TXT6OFF");
Serial.print("\n");
}
if(TSP < 0 && TSV >= 20 && PV == HIGH && TB < 20){
if(!INTERVALON3set) {
tINTERVALON3.start(); // Pokreni tajmer samo ako nije već pokrenut
INTERVALON3set = true; // Postavi flag da je tajmer pokrenut
}
if (INTERVALON3set && !tINTERVALON3.isStopped()) {
// Ako je tajmer za uključivanje u toku
digitalWrite(PRSV, HIGH);
}
if (tINTERVALON3.isCounterCompleted()) {
// Ako je prošlo 10 sekundi
if (!INTERVALOFF3set) {
tINTERVALOFF3.start(); // Pokreni tajmer za isključivanje nakon 10 sekundi
INTERVALOFF3set = true; // Postavi flag da je tajmer za isključivanje pokrenut
}
}
if (INTERVALOFF3set && !tINTERVALOFF3.isStopped() && tINTERVALOFF3.isCounterCompleted()) {
// Ako je tajmer za isključivanje u toku i završen
digitalWrite(PRSV, LOW);
// Resetuj tajmere za sledeći ciklus
tINTERVALON3.stop();
tINTERVALOFF3.stop();
INTERVALON3set = false;
INTERVALOFF3set = false;
}
}
if(TSP < 0 && TSV < 20 && PV == HIGH && TB < 20){
p3 = 1;
if(p3 == 1){
digitalWrite(PRSV, HIGH);
}
}
else{
p3 =0;
}
delay(1000);
}
void print_time1()
{
Serial.print("TDP1: ");
Serial.println(tTDP1.getCurrentTime());
Serial.print("\n");
}
void print_time2()
{
Serial.print("TUGB: ");
Serial.println(tTUGB.getCurrentTime());
Serial.print("\n");
}
void print_time3()
{
Serial.print("TUCP1: ");
Serial.println(tTUCP.getCurrentTime());
Serial.print("\n");
}
void print_time4()
{
Serial.print("TUCP2: ");
Serial.println(tTUCP.getCurrentTime());
Serial.print("\n");
}
void print_time5()
{
Serial.print("TCP: ");
Serial.println(tTCP.getCurrentTime());
Serial.print("\n");
}
void print_time6()
{
Serial.print("TRN: ");
Serial.println(tTRN.getCurrentTime());
}
void print_time7()
{
Serial.print("TVPA: ");
Serial.println(tTVPA.getCurrentTime());
Serial.print("\n");
}
void print_time8()
{
Serial.print("INT1ON: ");
Serial.println(tINTERVALON1.getCurrentTime());
Serial.print("\n");
}
void print_time9()
{
Serial.print("INT1OFF: ");
Serial.println(tINTERVALOFF1.getCurrentTime());
Serial.print("\n");
}
void print_time10()
{
Serial.print("INT2ON: ");
Serial.println(tINTERVALON2.getCurrentTime());
Serial.print("\n");
}
void print_time11()
{
Serial.print("INT2OFF: ");
Serial.println(tINTERVALOFF2.getCurrentTime());
Serial.print("\n");
}
void print_time12()
{
Serial.print("INT3ON: ");
Serial.println(tINTERVALON3.getCurrentTime());
Serial.print("\n");
}
void print_time13()
{
Serial.print("INT3OFF: ");
Serial.println(tINTERVALOFF3.getCurrentTime());
Serial.print("\n");
}
void tTDP1Complete()
{
TDP1set = true;
}
void tTUGBComplete()
{
TUGBset = true;
}
void tTUCPComplete()
{
TUCP1set = true;
}
void tTCPComplete()
{
TCPset = true;
}
void tTRNComplete()
{
TRNset = true;
}
void tTVPAComplete()
{
TVPAset = true;
}
void tINTERVALON1Complete()
{
}
void tINTERVALOFF1Complete()
{
}
void tINTERVALON2Complete()
{
}
void tINTERVALOFF2Complete()
{
}
void tINTERVALON3Complete()
{
}
void tINTERVALOFF3Complete()
{
}
void tinterval()
{
Serial.print("intervalonn");
}