Kod:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
LiquidCrystal_I2C lcd1(0x26,16,2);
LiquidCrystal_I2C lcd2(0x3f,16,2);
#include <IRremote.h>
#include <IRremoteIni.h>
#define RECV_PIN 13
IRrecv irrecv(RECV_PIN);
decode_results results;
#define Gora 0x80820DF
#define Dol 0x808728D
#define OK 0x808A05F
#define Lewo 0x808609F
#define Prawo 0x808E01F
#include <DS1307.h>
#define DS1307_ADDRESS_0x68
#include <Wire.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define SensorPh 1 //pH meter Analog output to Arduino Analog Input 0
unsigned long int avgValue; //Store the average value of the sensor feedback
float b;
int buf[10],temp;
#define Cyrkulator1 47
#define Cyrkulator2 48
#define Cyrkulator3 49
#define PompGl 50
#define PompOb 53
#define PompDol 51
int TD = 24;
int TG = 26;
int G1 = 52;
int W1 = 11;
int T1 = 8;
int GODZON = 7;
int MINON = 0;
int GODZOFF = 22;
int MINOFF = 0;
int dzienG;
int dzienM;
int nocG;
int nocM;
int LED1 = 9;
int LED2 = 10;
int LED3 = 12;
int GODZ;
int MIN;
int SEC;
int state;
int ledON =22;
int ledOFF = 7;
byte cursorLCD[8] = {B00000,B00000,B00110,B01111,B00110,B00000};
byte zegar[8] = {0b00000,0b01110,0b10101,0b10111,0b10001,0b01110,0b00000,0b00000};
byte stopnie[8] = {0b01000,0b10100,0b01000,0b00000,0b00000,0b00000,0b00000,0b00000};
byte termometr[8] = {0b01110,0b01010,0b01010,0b01110,0b01110,0b11111,0b11111,0b01110};
byte swiatlo[8] = {0b01110,0b10001,0b10001,0b10001,0b01110,0b01110,0b01110,0b00100};
byte kropla[8] = {0b00100,0b00100,0b01110,0b11111,0b11111,0b11111,0b01110,0b00000};
void setup()
{
irrecv.enableIRIn();
pinMode(Cyrkulator1,OUTPUT);
pinMode(Cyrkulator2,OUTPUT);
pinMode(Cyrkulator3,OUTPUT);
pinMode(PompGl,OUTPUT);
pinMode(PompOb,OUTPUT);
pinMode(PompDol,OUTPUT);
digitalWrite(Cyrkulator1,LOW);
digitalWrite(Cyrkulator2,LOW);
digitalWrite(Cyrkulator3,LOW);
digitalWrite(PompGl,LOW);
digitalWrite(PompOb,LOW);
digitalWrite(PompDol,HIGH);
pinMode(G1,OUTPUT);
digitalWrite(G1,HIGH);
pinMode(W1,OUTPUT);
pinMode(T1,INPUT);
pinMode(7,INPUT_PULLUP);
Serial.begin(9600);
pinMode(LED3,OUTPUT);
digitalWrite(LED3,LOW);
lcd.init();
lcd.backlight();
lcd1.init();
lcd1.backlight();
lcd2.init();
lcd2.backlight();
sensors.begin();
Wire.begin();
lcd.createChar(0,cursorLCD);
lcd.createChar(2,stopnie);
lcd.createChar(1,zegar);
lcd1.createChar(4,swiatlo);
lcd.createChar(5,kropla);
}
void loop()
{
TIME();
histeryza();
PH();
dolewka();
pwm();
noc();
lcd2.setCursor(0,0);lcd2.print("TD-");lcd2.print(TD);
lcd2.setCursor(0,1);lcd2.print("TG-");lcd2.print(TG);
lcd2.setCursor(7,0);lcd2.print("ON-");lcd2.print(GODZON);lcd2.print(":");lcd2.print(MINON);
lcd2.setCursor(7,1);lcd2.print("OFF-");lcd2.print(GODZOFF);lcd2.print(":");lcd2.print(MINOFF);
char resultButton[7] = "null";
getButtonPush(resultButton, 0, 200);
if(!strcmp(resultButton,"ok"))
LCDmenu();
}
void LCDmenu()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0); lcd.print("Oswietlenie");
lcd.setCursor(2,1); lcd.print("Temp i Zegar");
lcd.setCursor(2,2); lcd.print("Pompy");
lcd.setCursor(2,3); lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
lcd.setCursor(0, posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 3, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 3, 's');
else if(!strcmp(resultButton,"ok"))
opcMenu=posCursor;
switch( opcMenu)
{
case 0:
if(!strcmp(resultButton,"ok"))
LCDmenu0();
opcMenu=-2;
break;
case 1:
if(!strcmp(resultButton,"ok"))
LCDmenu1();
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
LCDmenu2();
opcMenu=-2;
break;
case 3:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while (opcMenu !=-1);
}
void LCDmenu0()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0); lcd.print("Wlaczenie");
lcd.setCursor(2,1); lcd.print("Wylaczenie");
lcd.setCursor(2,2); lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush( resultButton, 0, 200);
lcd.setCursor(0, posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok"))
opcMenu = posCursor;
switch (opcMenu)
{
case 0:
if(!strcmp(resultButton,"ok"))
LCDmenu3();
opcMenu = -2;
break;
case 1:
if(!strcmp(resultButton,"ok"))
LCDmenu4();
opcMenu = -2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu = -1;
lcd.clear();
break;
};
}
while(opcMenu != -1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Oswietlenie");
lcd.setCursor(2,1); lcd.print("Temp. i Zegar");
lcd.setCursor(2,2); lcd.print("Pompy");
lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu1()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0); lcd.print("Temperatura");
lcd.setCursor(2,1); lcd.print("Zegar");
lcd.setCursor(2,2); lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
lcd.setCursor(0, posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok"))
opcMenu = posCursor;
switch (opcMenu)
{
case 0:
if(!strcmp(resultButton,"ok"))
LCDmenu5();
opcMenu=-2;
break;
case 1:
if(!strcmp(resultButton,"ok"))
LCDmenu6();
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while (opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Oswietlenie");
lcd.setCursor(2,1); lcd.print("Temp i Zegar");
lcd.setCursor(2,2); lcd.print("Pompy");
lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu2()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0); lcd.print("Cyrkulacja");
lcd.setCursor(2,1); lcd.print("Pompy");
lcd.setCursor(2,2); lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
lcd.setCursor(0,posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok"))
opcMenu= posCursor;
switch (opcMenu)
{
case 0:
if(!strcmp(resultButton,"ok"))
LCDmenu7();
opcMenu=-2;
break;
case 1:
if(!strcmp(resultButton,"ok"))
LCDmenu8();
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while(opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Oswietlenie");
lcd.setCursor(2,1); lcd.print("Temp i Zegar");
lcd.setCursor(2,2); lcd.print("Pompy");
lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu3()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0); lcd.print("Godz wl.");lcd.setCursor(15,0);lcd.print(GODZON);
lcd.setCursor(2,1); lcd.print("Min. wl.");lcd.setCursor(15,1);lcd.print(MINON);
lcd.setCursor(2,2); lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
lcd.setCursor(0,posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
opcMenu = posCursor;
switch(opcMenu)
{
case 0:
lcd.setCursor(15,0);
if(GODZON<10)
lcd.print("0");
lcd.print(GODZON);
if(!strcmp(resultButton,"right"))
if ((GODZON < 23))
GODZON++;
if(!strcmp(resultButton,"left"))
if(GODZON > 0)
GODZON--;
opcMenu=-2;
break;
case 1:
lcd.setCursor(15,1);
if(MINON<10)
lcd.print("0");
lcd.print(MINON);
if(!strcmp(resultButton,"right"))
if(MINON <59)
MINON++;
if(!strcmp(resultButton,"left"))
if(MINON >0)
MINON--;
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while(opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Wlaczenie");
lcd.setCursor(2,1); lcd.print("Wylaczenie");
lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void LCDmenu4()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0);lcd.print("Godz. wyl.");lcd.setCursor(15,0);lcd.print(GODZOFF);
lcd.setCursor(2,1);lcd.print("Min. wyl."); lcd.setCursor(15,1);lcd.print(MINOFF);
lcd.setCursor(2,2);lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"right")|| !strcmp(resultButton,"left"))
opcMenu = posCursor;
switch(opcMenu)
{
case 0:
lcd.setCursor(15,0);
if(GODZOFF<10)
lcd.print("0");
lcd.print(GODZOFF);
if(!strcmp(resultButton,"right"))
if(GODZOFF < 23)
GODZOFF++;
if(!strcmp(resultButton,"left"))
if(GODZOFF >0)
GODZOFF--;
opcMenu=-2;
break;
case 1:
lcd.setCursor(15,1);
if(MINOFF<10)
lcd.print("0");
lcd.print(MINOFF);
if(!strcmp(resultButton,"right"))
if(MINOFF < 59)
MINOFF++;
if(!strcmp(resultButton,"left"))
if(MINOFF >0)
MINOFF--;
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while(opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Wlaczenie");
lcd.setCursor(2,1); lcd.print("Wylaczenie");
lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void LCDmenu5()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0);lcd.print("Temp. min.-");lcd.print(TD);
lcd.setCursor(2,1);lcd.print("Temp. max.-");lcd.print(TG);
lcd.setCursor(2,2);lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 2, 200);
lcd.setCursor(0,posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
opcMenu = posCursor;
switch(opcMenu)
{
case 0:
lcd.setCursor(13,0);
lcd.print(TD);
if(!strcmp(resultButton,"right"))
if(TD<27)
TD++;
if(!strcmp(resultButton,"left"))
if(TD>23)
TD--;
opcMenu=-2;
break;
case 1:
lcd.setCursor(13,1);
lcd.print(TG);
if(!strcmp(resultButton,"right"))
if(TG<27)
TG++;
if(!strcmp(resultButton,"left"))
if(TG>23)
TG--;
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu=-1;
lcd.clear();
break;
};
}
while(opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0);lcd.print("Temperatura");
lcd.setCursor(2,1);lcd.print("Zegar");
lcd.setCursor(2,2);lcd.print("Wyjdz");
}
void LCDmenu6()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0);lcd.print("Ust.godzine ");lcd.print(GODZ);
lcd.setCursor(2,1);lcd.print("Ust. minute ");lcd.print(MIN);
lcd.setCursor(2,2);lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush(resultButton, 0, 200);
lcd.setCursor(0,posCursor); lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
opcMenu = posCursor;
switch(opcMenu)
{
case 0:
lcd.setCursor(15,0);
if(GODZ<10)
lcd.print("0");
lcd.print(GODZ);
if(!strcmp(resultButton,"right"))
if(GODZ < 23)
GODZ++;
if(!strcmp(resultButton,"left"))
if(GODZ > 0)
GODZ--;
RTC.set(DS1307_HR,GODZ);
opcMenu = -2;
break;
case 1:
lcd.setCursor(15,1);
if(MIN<10)
lcd.print("0");
lcd.print(MIN);
if(!strcmp(resultButton,"right"))
if(MIN < 59)
MIN++;
if(!strcmp(resultButton,"left"))
if(MIN>0)
MIN--;
RTC.set(DS1307_MIN,MIN);
opcMenu = -2;
break;
break;
case 2:
opcMenu =-1;
lcd.clear();
break;
};
}
while(opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Temperatura");
lcd.setCursor(2,1); lcd.print("Zegar");
lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void LCDmenu7()
{
char *stan;
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0);lcd.print("Cyrkulator1 ");
lcd.setCursor(2,1);lcd.print("Cyrkulator2 ");
lcd.setCursor(2,2);lcd.print("Cyrkulator3 ");
lcd.setCursor(2,3);lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush( resultButton, 0, 200);
lcd.setCursor(0, posCursor);lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 3, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 3, 's');
else if(!strcmp(resultButton,"ok") || !strcmp(resultButton,"right") || !strcmp(resultButton,"left"))
opcMenu = posCursor;
switch( opcMenu )
{
case 0:
if(!strcmp(resultButton,"right"))
{
state=LOW;
lcd1.setCursor(0,1);lcd1.print("C1,");
}
else if(!strcmp(resultButton,"left"))
{
state=HIGH;
lcd1.setCursor(0,1);lcd1.print(" ,");
}
digitalWrite(Cyrkulator1,state);
opcMenu=-2;
break;
case 1:
if(!strcmp(resultButton,"right"))
{
state=LOW;
lcd1.setCursor(3,1);lcd1.print("C2,");
}
else if(!strcmp(resultButton,"left"))
{
state=HIGH;
lcd1.setCursor(3,1);lcd1.print(" ,");
}
digitalWrite(Cyrkulator2,state);
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"right"))
{
state=LOW;
lcd1.setCursor(6,1);lcd1.print("C3,");
}
else if(!strcmp(resultButton,"left"))
{
state=HIGH;
lcd1.setCursor(6,1);lcd1.print(" ,");
}
digitalWrite(Cyrkulator3,state);
opcMenu=-2;
break;
case 3:
if(!strcmp(resultButton,"ok"))
opcMenu =-1;
break;
};
}
while (opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Cyrkulacja");
lcd.setCursor(2,1); lcd.print("Pompy");
lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void LCDmenu8()
{
char resultButton[7];
int posCursor=0, opcMenu=-2;
lcd.clear();
lcd.setCursor(2,0);lcd.print("Pomp.Gl. ");
lcd.setCursor(2,1);lcd.print("Pomp.Ob. ");
lcd.setCursor(2,2);lcd.print("Wyjdz");
do{
strcpy(resultButton,"null");
getButtonPush( resultButton, 0, 200);
lcd.setCursor(0, posCursor);lcd.write(byte(0));
if(!strcmp(resultButton,"up"))
LCDMoveCursor(&posCursor, 2, 'r');
else if(!strcmp(resultButton,"down"))
LCDMoveCursor(&posCursor, 2, 's');
else if(!strcmp(resultButton,"ok") || !strcmp(resultButton,"right") || !strcmp(resultButton,"left"))
opcMenu = posCursor;
switch( opcMenu )
{
case 0:
if(!strcmp(resultButton,"right"))
{
state=LOW;
lcd1.setCursor(9,1);lcd1.print("PG,");
}
else if(!strcmp(resultButton,"left"))
{
state=HIGH;
lcd1.setCursor(9,1);lcd1.print(" ,");
}
digitalWrite(PompGl,state);
opcMenu=-2;
break;
case 1:
if(!strcmp(resultButton,"right"))
{
state=LOW;
lcd1.setCursor(12,1);lcd1.print("PO,");
}
else if(!strcmp(resultButton,"left"))
{
state=HIGH;
lcd1.setCursor(12,1);lcd1.print(" ,");
}
digitalWrite(PompOb,state);
opcMenu=-2;
break;
case 2:
if(!strcmp(resultButton,"ok"))
opcMenu =-1;
break;
};
}
while (opcMenu !=-1);
lcd.clear();
lcd.setCursor(2,0); lcd.print("Cyrkulacja");
lcd.setCursor(2,1); lcd.print("Pompy");
lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void TIME()
{
GODZ = (RTC.get(DS1307_HR,true));
MIN = (RTC.get(DS1307_MIN,true));
SEC = (RTC.get(DS1307_SEC,true));
if(GODZ<10)
{
Serial.print("0");
Serial.print(GODZ);
}
else
{
Serial.print(GODZ);
}
Serial.print(":");
if(MIN<10)
{
Serial.print("0");
Serial.print(MIN);
}
else
{
Serial.print(MIN);
}
Serial.print(":");
if(SEC<10)
{
Serial.print("0");
Serial.print(SEC);
}
else
{
Serial.print(SEC);
}
lcd.setCursor(0,0);
lcd.write(byte(1));
if(GODZ<10)
{
lcd.print("0");
lcd.print(GODZ);
}
else
{
lcd.print(GODZ);
}
lcd.print(":");
if(MIN<10)
{
lcd.print("0");
lcd.print(MIN);
}
else
{
lcd.print(MIN);
}
lcd.print(":");
if(SEC<10)
{
lcd.print("0");
lcd.print(SEC);
}
else
{
lcd.print(SEC);
}
delay(500);
}
void histeryza(){
sensors.requestTemperatures();
float tempC = (sensors.getTempCByIndex(0));
if (tempC < TD)
{
digitalWrite(W1,LOW);
digitalWrite(G1,LOW);
lcd.setCursor(16,3);
lcd.print("G-ON");
}
if ((TD <= tempC)&&(tempC <= TG))
{
digitalWrite(W1,LOW);
digitalWrite(G1,HIGH);
lcd.setCursor(16,3);
lcd.print(" ");
}
if (TG < tempC)
{
digitalWrite(W1,HIGH);
digitalWrite(G1,HIGH);
lcd.setCursor(16,3);
lcd.print("W-ON");
}
lcd.setCursor(0,1);
lcd.print("Temp.akw. ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");
lcd.setCursor(0,2);
lcd.print("Temp.Lamp. ");
lcd.print(sensors.getTempCByIndex(1));
Serial.print(sensors.getTempCByIndex(0));
Serial.print(sensors.getTempCByIndex(1));
lcd.print("C");
}
void PH()
{
for(int i=0;i<10;i++) //Get 10 sample value from the sensor for smooth the value
{
buf[i]=analogRead(SensorPh);
delay(10);
}
for(int i=0;i<9;i++) //sort the analog from small to large
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++) //take the average value of 6 center sample
avgValue+=buf[i];
float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
phValue=3.5*phValue;
lcd.setCursor(0,3);
lcd.print("PH:");
lcd.print(phValue,2);
}
void pwm(){
int CZAS = (GODZ*60+MIN);
//ustawienie czasu pwm********************************************
int maxDN = 100;
int maxDB = 100;
int STEP = 1;
int ZMIANA = 100;
//***************************czas***************************
int czas1 = (GODZON*60+MINON);
int czas2 = (GODZOFF*60+MINOFF);
GODZ = (RTC.get(DS1307_HR,true));
MIN = (RTC.get(DS1307_MIN,true));
SEC = (RTC.get(DS1307_SEC,true));
//***********************oświetlenie************************
static int DN;
static int DB;
byte mocDN[101] =
{
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,
29,30,32,34,36,38,40,42,44,46,48,50,52,
54,56,58,60,62,64,66,68,70,72,74,76,78,
80,82,84,86,88,90,93,96,99,102,105,108,
111,114,117,120,123,126,129,132,135,
138,141,144,147,150,154,158,162,166,
170,174,178,182,186,190,194,198,202,
206,210,214,220,230,240,250,255
};
byte mocDB[101] =
{
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,
29,30,32,34,36,38,40,42,44,46,48,50,52,
54,56,58,60,62,64,66,68,70,72,74,76,78,
80,82,84,86,88,90,93,96,99,102,105,108,
111,114,117,120,123,126,129,132,135,
138,141,144,147,150,154,158,162,166,
170,174,178,182,186,190,194,198,202,
206,210,214,220,235,245,255
};
if (CZAS<czas1) //noc
{
DB=0;
DN=1;
Serial.print("noc ");
lcd.setCursor(11,0);
lcd.print("Noc ");
}
if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA))) //świt
{
DB=((CZAS-czas1)/STEP);
DN=((CZAS-czas1)/STEP);
Serial.print("swit ");
lcd.setCursor(11,0);
lcd.print("Swit ");
}
if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA))) //dzień
{
DB=maxDB;
DN=maxDN;
Serial.print("dzien ");
lcd.setCursor(11,0);
lcd.print("Dzien");
}
if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2)) //zmrok
{
DB=((czas2-CZAS)/STEP);
DN=((czas2-CZAS)/STEP);
Serial.print("ZMROK ");
lcd.setCursor(11,0);
lcd.print("Zmrok");
}
if(czas2<=CZAS) //noc
{
DB=0;
DN=1;
lcd.setCursor(11,0);
lcd.print("Noc ");
Serial.print("NOC ");
}
analogWrite(LED1, mocDN[DN]);
analogWrite(LED2, mocDB[DB]);
lcd1.setCursor(0,0);
lcd1.write(byte(4));
lcd1.print("N-");
lcd1.print(DN);
lcd1.print("%");
lcd1.setCursor(8,0);
lcd1.write(byte(4));
lcd1.print("B-");
lcd1.print(DB);
lcd1.print("%");
}
void dolewka(){
if (digitalRead(7) == LOW){
digitalWrite(PompDol, LOW);
lcd.setCursor(11,3);
lcd.print("D-Lo");
lcd1.setCursor(14,1);
lcd1.print("PD");
}else{
digitalWrite(PompDol, HIGH);
lcd1.setCursor(14,1);
lcd1.print(" ");
lcd.setCursor(11,3);
lcd.print("D-Ok");
}
}
void noc(){
if(ledON==GODZ);
{
digitalWrite(LED3,HIGH);
lcd.setCursor(18,0);
lcd.print("ON");
}
if(ledOFF==GODZ);
{
digitalWrite(LED3,LOW);
lcd.setCursor(18,0);
lcd.print("OF");
}
}
void LCDMoveCursor(int *pos, int max, char ope)
{
// Warunek: Parametr ope powinien być znak „s” lub „R”, aby dodać lub odjąć pozycję.
// Maksymalny parametr wskazuje liczbę opcji do wyboru.
// Postcondition: nowa wartość kursor jest zwracany przez odniesienie.
if(ope == 's')
if(*pos < max) *pos += 1;
else *pos = 0;
else
if(*pos > 0) *pos -= 1;
else *pos = max;
// Se borran los cursores:
lcd.setCursor(0, 0); lcd.print(" ");
lcd.setCursor(0, 1); lcd.print(" ");
lcd.setCursor(0, 2); lcd.print(" ");
lcd.setCursor(0, 3); lcd.print(" ");
}
// PROCEDURA Jeśli nastąpiła KONTROLA nowe prasy z przyciskami:
void getButtonPush(char *resultButton, int pin, int pause)
{
// Warunek: Parametr kołek musi sworzeń analog Arduino.
// Postcondition: Parametr resultButton jest ciągiem przez odniesienie powrót wciśnięty przycisk.
// El parámetro pause ha de ser un numero entero igual o mayor que 0.
// Info: El teclado usado es este: http://giltesa.com/?p=11458 , según el tipo de resistencias habrá que cambiar las condicionales para adaptarse al valor leído desde el pin Analógico.
int data = analogRead(0);
if (data > 10)
{
if (data > 330 && data < 370)
strcpy(resultButton,"up");
else if (data > 100 && data < 190)
strcpy(resultButton,"ok");
else if (data > 240 && data < 280)
strcpy(resultButton,"left");
else if (data > 200 && data < 230)
strcpy(resultButton,"down");
else if (data > 480 && data < 520)
strcpy(resultButton,"right");
delay(pause);
Serial.print(A1);
}
}