Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // function
- void getKey();
- void shift_serial_test();
- void RTC_LCD__test();
- void valvecontrol();
- void setclock();
- void lcddisplay();
- void load();
- void save();
- void valvereset();
- void progreset();
- void checkprog();
- void runprogfun();
- void shiftout();
- void saverunprogdata();
- void loadrunprogdata();
- void check_off_timer();
- void fastcheck();
- void stopprog();
- void continueprog();
- void saveday();
- void loadday();
- void stopall();
- void setvalvetime();
- void readph();
- // eeprom
- #include<EEPROM.h>
- byte savedone=0;
- byte eedata=0;
- // keypad
- #include <Wire.h>
- byte input=0;
- byte lastInput1=0,lastInput2=0,lastInput3=0,lastInput4=0;
- byte key=16; //10>>A 11>>B 12>>C 13>>D 14>>* 15>>#
- // shift reg
- byte clk=D3,latch=D4,data=D0;
- byte dataout1=0b11111111;
- byte dataout2=0b11111111;
- byte dataout3=0b00001111;
- byte x=0;
- byte r=0;
- //lcd
- #include<Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd (0x27,20,4);
- // lock
- byte customChar[] = {0x0E,0x11,0x11,0x11,0x1F,0x1B,0x1B,0x1F};// lock
- byte locktime=1;
- byte locktimer=0;
- int password=1234;
- int interpassword=0;
- // display
- byte pointer1=0,pointer2=0,pointer3=0;
- byte number1=0,number2=0,number3=0,number4=0;
- bool timedis=0;
- bool main_page_data=0;
- // valves data
- byte valvenum=1;
- byte valvedu[10]={0,0,0,0,0,0,0,0,0,0};
- byte valvePH[10]={0,0,0,0,0,0,0,0,0,0};
- byte valveCE[10]={0,0,0,0,0,0,0,0,0,0};
- byte fer1per[10]={0,0,0,0,0,0,0,0,0,0};
- byte fer2per[10]={0,0,0,0,0,0,0,0,0,0};
- byte fer3per[10]={0,0,0,0,0,0,0,0,0,0};
- byte fer4per[10]={0,0,0,0,0,0,0,0,0,0};
- byte fer5per[10]={0,0,0,0,0,0,0,0,0,0};
- // test valve
- byte testvalve=0;
- bool valvestatus[10]={0,0,0,0,0,0,0,0,0,0};
- bool testvalvepage=0;
- // program data
- byte prognum=1;
- bool progact[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progday1[25]={0,0,0,0,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//S
- bool progday2[25]={0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//M
- bool progday3[25]={0,0,1,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//T
- bool progday4[25]={0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//W
- bool progday5[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//T
- bool progday6[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//F
- bool progday7[25]={0,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//S
- byte proghour[25]={0,0,0,0,12,10,0,4,0,0,8,1,0,1,0,1,0,1,0,1,0,1,0,1,0}; //hour
- byte progmin[25] ={0,0,15,0,30,1,0,1,0,0,10,1,0,15,0,1,0,31,0,1,0,1,0,1,0}; //min
- byte progvalve=0;
- bool progvalve1[25]={0,0,0,0,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve2[25]={0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve3[25]={0,0,1,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve4[25]={0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve5[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve6[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve7[25]={0,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- bool progvalve8[25]={0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,1,0};
- bool progvalve9[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0};
- bool progvalve10[25]={0,0,0,0,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
- // run prog
- byte valverun=0;
- byte valvetimer[10]={0,0,0,0,0,0,0,0,0,0};
- bool on_off_timer=0;
- byte on_timer=0;
- int off_timer=0;
- unsigned long lastmillis=0;
- unsigned long lastmillis1=0;
- // system on off timer
- byte progyear=0;
- byte progmonth=0;
- byte progday=0;
- byte progh=0;
- byte progm=0;
- bool fastmode=0;
- bool progsta=0;// 0>>starting 1>>paused
- byte stopedprog=0;
- // test prog
- byte testprog=0,runprog=0,lastrunprog=0;
- // PH calibration
- float STDPH1=7,STDPH2=6; // PH for calibration STD 1,2
- float STDread1=2,STDread2=1; // PH analog read for STD 1,2
- float PHa=3,PHb=1; // PH equation constant
- byte PH_calib_timer=120;
- int phanalog=0;
- // set clock
- byte setyear=20,setmonth=12,setday=6,sethour=17,setmin=29;
- // timer
- #include <PCF8563.h>
- PCF8563 pcf;
- byte day =5;
- String dayStr[7]={"Sunday","Monday","Tuesday","Wednesday","Thuresday","Friday","Saturday"};
- byte RTCday=0;
- byte lastRTCday=0;
- byte RTCsec=0;
- byte lastRTCsec=0;
- byte seccounter=0;
- byte RTCmin=0;
- byte lastRTCmin=0;
- void setup() {
- // pin
- pinMode(clk, OUTPUT); pinMode(latch, OUTPUT) ; pinMode(data, OUTPUT);
- Serial.begin(9600);
- // shift reg
- digitalWrite(latch,0);
- shiftOut(data,clk,MSBFIRST,dataout3);
- shiftOut(data,clk,MSBFIRST,dataout2);
- shiftOut(data,clk,MSBFIRST,dataout1);
- digitalWrite(latch,1);
- //timer
- pcf.init();//initialize the clock
- pcf.stopClock();//stop the clock
- //set time
- /*pcf.setYear(20);//set year
- pcf.setMonth(12);//set month
- pcf.setDay(6);//set dat
- pcf.setHour(17);//set hour
- pcf.setMinut(29);//set minut
- pcf.setSecond(50);//set second*/
- pcf.startClock();//start the clock
- Time nowTime = pcf.getTime();//get current time
- RTCday=nowTime.day;
- lastRTCday=RTCday;
- RTCsec=nowTime.second;
- lastRTCsec=RTCsec;
- RTCmin=nowTime.minute;
- lastRTCmin=RTCmin;
- //lcd
- lcd.init();
- lcd.backlight();
- lcd.clear();
- lcd.createChar(0, customChar);
- lcd.home();
- lcd.print (" loading data ");
- // eeprom
- EEPROM.begin(1024);
- load();
- // key pad
- Wire.begin();
- Wire.beginTransmission(0x20);
- Wire.write(0x00); // IO0dir reg port A
- Wire.write(0xff); // input
- Wire.endTransmission();
- Wire.begin();
- Wire.beginTransmission(0x20);
- Wire.write(0x01); // IO0dir reg port B
- Wire.write(0x00); // output
- Wire.endTransmission();
- Wire.beginTransmission(0x20);
- Wire.write(0x0C); // pull up res port A
- Wire.write(0xff);
- Wire.endTransmission();
- // load last prog data
- loadrunprogdata();
- check_off_timer();
- lcd.clear();
- // load day
- loadday();
- }
- void loop() {
- // RTC_LCD__test();
- shift_serial_test ();
- getKey();
- lcddisplay();
- if (progsta==0){
- if (runprog==0 && fastmode==0){ checkprog();saverunprogdata();}
- else if (runprog==0 && fastmode==1){ fastcheck();}
- else if (runprog!=0 && fastmode==0){ runprogfun();saverunprogdata();}
- else if (runprog!=0 && fastmode==1){ runprogfun();}
- if (runprog!=0){if (stopedprog==runprog){runprog=0;}
- else {stopedprog=0;}}
- unsigned long currentmillis=millis();
- if ((unsigned long)(currentmillis-lastmillis1)>=10000){lastmillis1=currentmillis;}}
- if (runprog==0 && testvalvepage==0){stopall();}
- }
- void getKey(){
- // keypad read
- key=16;
- // Write :
- Wire.beginTransmission(0x20);
- Wire.write(0x13); // port B data address
- Wire.write(0b11111110); // port B data
- Wire.endTransmission();
- // read
- Wire.beginTransmission(0x20);
- Wire.write(0x12); // port A data address
- Wire.endTransmission();
- Wire.requestFrom(0x20,1); //request 1 byte
- if(Wire.available()){
- input=Wire.read();
- if (input!=lastInput1){
- if ((input/16)==14){key=1;}
- else if ((input/16)==13){key=2;}
- else if ((input/16)==11){key=3;}
- else if ((input/16)==7 ){key=10;}
- }}
- lastInput1=input;
- // Write :
- Wire.beginTransmission(0x20);
- Wire.write(0x13); // port B data address
- Wire.write(0b11111101); // port B data
- Wire.endTransmission();
- // read
- Wire.beginTransmission(0x20);
- Wire.write(0x12); // port A data address
- Wire.endTransmission();
- Wire.requestFrom(0x20,1); //request 1 byte
- if(Wire.available()){
- input=Wire.read();
- if (input!=lastInput2){
- if ((input/16)==14){key=4;}
- else if ((input/16)==13){key=5;}
- else if ((input/16)==11){key=6;}
- else if ((input/16)==7 ){key=11;}}}
- lastInput2=input;
- // Write :
- Wire.beginTransmission(0x20);
- Wire.write(0x13); // port B data address
- Wire.write(0b11111011); // port B data
- Wire.endTransmission();
- // read
- Wire.beginTransmission(0x20);
- Wire.write(0x12); // port A data address
- Wire.endTransmission();
- Wire.requestFrom(0x20,1); //request 1 byte
- if(Wire.available()){
- input=Wire.read();
- if (input!=lastInput3){
- if ((input/16)==14){key=7;}
- else if ((input/16)==13){key=8;}
- else if ((input/16)==11){key=9;}
- else if ((input/16)==7 ){key=12;}}}
- lastInput3=input;
- // Write :
- Wire.beginTransmission(0x20);
- Wire.write(0x13); // port B data address
- Wire.write(0b11110111); // port B data
- Wire.endTransmission();
- // read
- Wire.beginTransmission(0x20);
- Wire.write(0x12); // port A data address
- Wire.endTransmission();
- Wire.requestFrom(0x20,1); //request 1 byte
- if(Wire.available()){
- input=Wire.read();
- if (input!=lastInput4){
- if ((input/16)==14){key=14;}
- else if ((input/16)==13){key=0;}
- else if ((input/16)==11){key=15;}
- else if ((input/16)==7 ){key=13;}}}
- lastInput4=input;
- }
- void shift_serial_test (){
- // reading serial
- if(Serial.available()>0){
- x=Serial.read();
- if (x=='a'){r=1;}
- else if (x=='b'){r=2;}
- else if (x=='c'){r=3;}
- else {
- if (r==1){bitWrite(dataout1,x-49,!bitRead(dataout1,x-49));r=0;}
- if (r==2){bitWrite(dataout2,x-49,!bitRead(dataout2,x-49));r=0;}
- if (r==3 && (x-49)<4){bitWrite(dataout3,x-49,!bitRead(dataout3,x-49));r=0;}
- }
- digitalWrite(latch,0);
- shiftOut(data,clk,MSBFIRST,dataout3);
- shiftOut(data,clk,MSBFIRST,dataout2);
- shiftOut(data,clk,MSBFIRST,dataout1);
- digitalWrite(latch,1);}
- }
- void valvecontrol (){
- bitWrite(dataout1,0,!valvestatus[1]);
- bitWrite(dataout1,1,!valvestatus[0]);
- bitWrite(dataout2,0,!valvestatus[9]);
- bitWrite(dataout2,1,!valvestatus[8]);
- bitWrite(dataout2,2,!valvestatus[7]);
- bitWrite(dataout2,3,!valvestatus[6]);
- bitWrite(dataout2,4,!valvestatus[5]);
- bitWrite(dataout2,5,!valvestatus[4]);
- bitWrite(dataout2,6,!valvestatus[3]);
- bitWrite(dataout2,7,!valvestatus[2]);
- digitalWrite(latch,0);
- shiftOut(data,clk,MSBFIRST,dataout3);
- shiftOut(data,clk,MSBFIRST,dataout2);
- shiftOut(data,clk,MSBFIRST,dataout1);
- digitalWrite(latch,1);
- }
- void RTC_LCD__test(){
- lcd.setCursor(0,0);
- Time nowTime = pcf.getTime();//get current time
- //print current time
- lcd.print("date:");
- lcd.print(nowTime.day);
- RTCday=nowTime.day;
- if (!(lastRTCday==RTCday)){day++;
- if (day==7){day=0;}}
- lastRTCday=RTCday;
- lcd.print("/");
- lcd.print(nowTime.month);
- lcd.print("/");
- lcd.print(nowTime.year);
- lcd.setCursor(0,1);
- lcd.print("time:");
- lcd.print(nowTime.hour);
- lcd.print(":");
- lcd.print(nowTime.minute);
- lcd.print(":");
- lcd.print(nowTime.second);
- lcd.setCursor(0,2);
- lcd.print("day:");
- lcd.print(dayStr [day]);
- }
- void setclock(){
- //timer
- pcf.init();//initialize the clock
- pcf.stopClock();//stop the clock
- //set time
- if (pointer2==2){pcf.setYear(setyear);}//set year
- if (pointer2==1){pcf.setMonth(setmonth);}//set month
- if (pointer2==0){pcf.setDay(setday);}//set dat
- if (pointer2==4){pcf.setHour(sethour);}//set hour
- if (pointer2==5){pcf.setMinut(setmin);}//set minut
- pcf.setSecond(0);//set second
- pcf.startClock();//start the clock
- Time nowTime = pcf.getTime();//get current time
- }
- void lcddisplay(){
- // day timer
- Time nowTime = pcf.getTime();//get current time
- // day
- RTCday=nowTime.day;
- if (!(lastRTCday==RTCday)){day++; if (day==7){day=0;} saveday();}
- lastRTCday=RTCday;
- if (pointer1==0){ // home
- if (main_page_data==0){
- lcd.setCursor(0,2); lcd.print("valve :");
- lcd.setCursor(0,1); lcd.print("program:");
- lcd.setCursor(0,3); lcd.print("PH:");
- lcd.setCursor(9,3); lcd.print("CE:");}
- // sec
- RTCsec=nowTime.second;
- if (!(lastRTCsec==RTCsec)){if (locktimer>0){locktimer--;}
- // read ph serial
- readph();Serial.println("ph="); Serial.println(phanalog);
- //date and time
- seccounter++; if (seccounter==5){timedis=!timedis;seccounter=0;}
- lcd.setCursor(0,0); lcd.print(dayStr [day]);
- if (timedis==1){lcd.setCursor(9,0); lcd.print(nowTime.day); lcd.print("/"); lcd.print(nowTime.month); lcd.print("/"); lcd.print("20");lcd.print(nowTime.year); }
- else {lcd.setCursor(9,0); lcd.print(nowTime.hour);lcd.print(":");lcd.print(nowTime.minute);lcd.print(":");lcd.print(nowTime.second);lcd.print(" ");}
- // current prog
- lcd.setCursor(8,1);
- if (runprog>0){lcd.print(runprog);lcd.print(" ");}
- else {lcd.print(" ");}
- if (progsta==0){lcd.print("running");lcd.print(" ");}
- else {lcd.print("paused ");lcd.print(" ");}
- // current valve
- lcd.setCursor(8,2);if (valverun>0){lcd.print(valverun);}lcd.print(" ");
- // ph
- lcd.setCursor(3,3);
- if (valverun>0){
- if (valvePH[valverun-1]>9){lcd.print(valvePH[valverun-1]/10);lcd.print(".");lcd.print(valvePH[valverun-1]%10);}
- else {lcd.print(valvePH[valverun-1]);lcd.print(".0 ");}}
- // CE
- else {lcd.print(" ");}
- lcd.setCursor(12,3);
- if (valverun>0){
- if (valveCE[valverun-1]>9){lcd.print(valveCE[valverun-1]/10);lcd.print(".");lcd.print(valveCE[valverun-1]%10);lcd.print(" ");}
- else {lcd.print(valveCE[valverun-1]);lcd.print(".0 ");}}
- else {lcd.print(" ");}
- //T
- if (progsta==0){
- if (valvetimer[valverun-1]>0 && runprog>0){lcd.setCursor(11,2);lcd.print(valvetimer[valverun-1]-1);lcd.print(":");lcd.print(59-nowTime.second);lcd.print(" ");}
- else {
- if (valverun==0 && runprog==0) {lcd.setCursor(11,2);lcd.print(" ");}
- else {lcd.setCursor(11,2);lcd.print("waiting");}}}
- }
- main_page_data=1;
- if (locktimer>0){
- if (key==12){pointer1=1;pointer2=0; lcd.clear();main_page_data=0;}//setting
- if (key==15){ lcd.clear();main_page_data=0;continueprog();}//start
- if (key==14){ lcd.clear();main_page_data=0;stopprog();}//paused
- if (key==0) { lcd.clear();main_page_data=0;stopedprog=runprog;stopall();}}//stop
- else {
- lcd.setCursor(19,3); lcd.write(0);// lock
- if (key<16){pointer1=13;pointer2=0; lcd.clear();main_page_data=0;}key=16;}
- lastRTCsec=RTCsec;}
- else if (pointer1==1){ //setting
- if (main_page_data==0){
- lcd.setCursor(0,0); lcd.print("1_valve");
- lcd.setCursor(10,0); lcd.print("2_program");
- lcd.setCursor(0,1); lcd.print("3_clock");
- lcd.setCursor(10,1); lcd.print("4_test_val");
- lcd.setCursor(0,2); lcd.print("5_test_pro");
- lcd.setCursor(10,2); lcd.print("6_reset");
- lcd.setCursor(0,3); lcd.print("7_calib");
- lcd.setCursor(10,3); lcd.print("8_other");}
- main_page_data=1;
- if (key==13){pointer1=0;pointer2=0;key=16 ;lcd.clear();save();main_page_data=0;} // home
- else if (key==1 ){pointer1=2;pointer2=0;key=16 ; lcd.clear();main_page_data=0;} // valve setting
- else if (key==2 ){pointer1=4;pointer2=0;key=16; lcd.clear();main_page_data=0;} // program setting
- else if (key==3 ){pointer1=7;pointer2=0;key=16; lcd.clear();main_page_data=0;} // time setting
- else if (key==4 ){pointer1=8;pointer2=0;key=16; lcd.clear();main_page_data=0;testvalvepage=1;} // test valve
- else if (key==5 ){pointer1=9;pointer2=0;key=16; lcd.clear();main_page_data=0;}// test prog
- else if (key==6 ){pointer1=10;pointer2=0;key=16; lcd.clear();main_page_data=0;}// reset
- else if (key==7 ){pointer1=11;pointer2=0;key=16; lcd.clear();main_page_data=0;}// calibration
- //pointer1=12 >> other (password)
- //pointer1=13 >> lock screen
- }
- else if (pointer1==2){ // valve setting page 1
- // num
- lcd.setCursor(0,0); lcd.print("valve num");
- if (pointer2==0){lcd.print(">");
- if (key==10 && valvenum<10){valvenum++;}
- else if (key==11 && valvenum>1) {valvenum--;}
- if (key<10){
- if (pointer3==0){number1=key;valvenum=number1; pointer3=1;}
- else if (pointer3==1){number2=key;valvenum=number1*10+number2; if (valvenum>11){valvenum=number2;} pointer3=0;}}}
- else {lcd.print(":");}
- lcd.print(" "); lcd.print(valvenum);lcd.print(" ");
- //duration
- lcd.setCursor(0,1); lcd.print("duration ");
- if (pointer2==1){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;valvedu[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;valvedu[valvenum-1]=number1*10+number2;
- if (valvedu[valvenum-1]>60){valvedu[valvenum-1]=number2;} pointer3=0;}}}
- else {lcd.print(":");}
- lcd.print(valvedu[valvenum-1]);lcd.print("min ");
- // ph
- lcd.setCursor(0,2); lcd.print("PH");
- if (pointer2==2){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;valvePH[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;valvePH[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;valvePH[valvenum-1]=number1*100+number2*10+number3;
- if (valvePH[valvenum-1]>140){valvePH[valvenum-1]=number2+number3*0.1;} pointer3=0;}}}
- else {lcd.print(":");}
- if (valvePH[valvenum-1]>9){lcd.print(" ");lcd.print(valvePH[valvenum-1]/10);lcd.print(".");lcd.print(valvePH[valvenum-1]%10);lcd.print(" ");}
- else {lcd.print(" ");lcd.print(valvePH[valvenum-1]);lcd.print(".0 ");}
- // CE
- lcd.setCursor(10,2); lcd.print("CE");
- if (pointer2==3){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;valveCE[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;valveCE[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;valveCE[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}}
- else {lcd.print(":");}
- if (valveCE[valvenum-1]>9){lcd.print(" ");lcd.print(valveCE[valvenum-1]/10);lcd.print(".");lcd.print(valveCE[valvenum-1]%10);lcd.print(" ");}
- else {lcd.print(" ");lcd.print(valveCE[valvenum-1]);lcd.print(".0 ");}
- lcd.setCursor(0,3); lcd.print("p 1/2");
- if (key==13){pointer1=0; lcd.clear();save();} // home
- else if (key==12){pointer1=1; lcd.clear();} // settings
- else if (key==15 && pointer2<4){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>0){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- else if (key==14 && pointer2==0){pointer2=5;pointer3=0;number1=0;number2=0;number3=0;} // Beck to page 2
- if (pointer2==4){pointer1=3;pointer2=1;pointer3=0;number1=0;number2=0;number3=0; lcd.clear(); key=16;}//go to page 2
- if (pointer2==5){pointer1=3;pointer2=6;pointer3=0;number1=0;number2=0;number3=0; lcd.clear();if (valvenum>1){valvenum--;}}//back to page 2
- }
- else if (pointer1==3){ // valve setting page 2
- // num
- lcd.setCursor(0,0); lcd.print("valve num");
- if (pointer2==1){lcd.print(">");
- if (key==10 && valvenum<10){valvenum++;}
- else if (key==11 && valvenum>1) {valvenum--;}
- if (key<10){
- if (pointer3==0){number1=key;valvenum=number1; pointer3=1;}
- else if (pointer3==1){number2=key;valvenum=number1*10+number2; if (valvenum>11){valvenum=number2;} pointer3=0;}}}
- else {lcd.print(":");}
- lcd.print(" ");lcd.print(valvenum);lcd.print(" ");
- //F1
- lcd.setCursor(0,1); lcd.print("F1");
- if (pointer2==2){lcd.setCursor(2,1);lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;fer1per[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;fer1per[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;fer1per[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}
- if (fer1per[valvenum-1]>101){fer1per[valvenum-1]=number2*10+number3;}}
- else {lcd.print(":");}
- lcd.print(fer1per[valvenum-1]);lcd.print(" ");
- //F2
- lcd.setCursor(7,1); lcd.print("F2");
- if (pointer2==3){lcd.setCursor(9,1);lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;fer2per[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;fer2per[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;fer2per[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}
- if (fer2per[valvenum-1]>101){fer2per[valvenum-1]=number2*10+number3;}}
- else {lcd.print(":");}
- lcd.print(fer2per[valvenum-1]);lcd.print(" ");
- //F3
- lcd.setCursor(14,1);lcd.print("F3");
- if (pointer2==4){lcd.setCursor(16,1);lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;fer3per[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;fer3per[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;fer3per[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}
- if (fer3per[valvenum-1]>101){fer3per[valvenum-1]=number2*10+number3;}}
- else {lcd.print(":");}
- lcd.print(fer3per[valvenum-1]);lcd.print(" ");
- //F4
- lcd.setCursor(0,2); lcd.print("F4");
- if (pointer2==5){lcd.setCursor(2,2);lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;key=16;fer4per[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;key=16;fer4per[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;key=16;fer4per[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}
- if (fer4per[valvenum-1]>101){fer4per[valvenum-1]=number2*10+number3;}}
- else{lcd.print(":");}
- lcd.print(fer4per[valvenum-1]);lcd.print(" ");
- //F5
- lcd.setCursor(7,2); lcd.print("F5");
- if (pointer2==6){lcd.setCursor(9,2);lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;key=16;fer5per[valvenum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;key=16;fer5per[valvenum-1]=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;key=16;fer5per[valvenum-1]=number1*100+number2*10+number3; pointer3=0;}}
- if (fer5per[valvenum-1]>101){fer5per[valvenum-1]=number2*10+number3;}}
- else {lcd.print(":");}
- lcd.print(fer5per[valvenum-1]);lcd.print(" ");
- lcd.setCursor(0,3); lcd.print("p 2/2");
- if (key==15 && pointer2<7){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>0){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- else if (key==13){pointer1=0; lcd.clear();save();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- if (pointer2==0){pointer1=2;pointer2=3;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();main_page_data=0;} // page1
- if (pointer2==7){pointer1=2;pointer2=0;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();valvenum++;main_page_data=0;} //page 1
- }
- else if (pointer1==4){ // program setting page 1
- // num
- lcd.setCursor(0,0); lcd.print("prog num: ");
- if (pointer2==0){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;prognum=number1; pointer3=1;}
- else if (pointer3==1){number2=key;prognum=number1*10+number2; if (prognum>25){prognum=number2;} pointer3=0;}}
- if (key==10 && prognum<25){prognum++;}
- else if (key==11 && prognum>1) {prognum--;}}
- else {lcd.print(":");}
- lcd.print(" ");lcd.print(prognum);lcd.print(" ");
- // ativation
- lcd.setCursor(0,1); lcd.print("Activation");
- if (pointer2==1){lcd.print(">");
- if (key==10 || key==11){progact[prognum-1]=!progact[prognum-1];}}
- else {lcd.print(":");}
- if (progact[prognum-1]==1){lcd.print(" on ");}
- else if (progact[prognum-1]==0){lcd.print(" off ");}
- //day
- lcd.setCursor(0,2); lcd.print("days ");
- if (pointer2==2){lcd.print(">");
- if (key==1){progday1[prognum-1]=!progday1[prognum-1];}
- else if (key==2){progday2[prognum-1]=!progday2[prognum-1];}
- else if (key==3){progday3[prognum-1]=!progday3[prognum-1];}
- else if (key==4){progday4[prognum-1]=!progday4[prognum-1];}
- else if (key==5){progday5[prognum-1]=!progday5[prognum-1];}
- else if (key==6){progday6[prognum-1]=!progday6[prognum-1];}
- else if (key==7){progday7[prognum-1]=!progday7[prognum-1];}}
- else {lcd.print(":");}
- if (progday1[prognum-1]==1){lcd.print("S");} else {lcd.print(" ");}
- if (progday2[prognum-1]==1){lcd.print("M");} else {lcd.print(" ");}
- if (progday3[prognum-1]==1){lcd.print("T");} else {lcd.print(" ");}
- if (progday4[prognum-1]==1){lcd.print("W");} else {lcd.print(" ");}
- if (progday5[prognum-1]==1){lcd.print("T");} else {lcd.print(" ");}
- if (progday6[prognum-1]==1){lcd.print("F");} else {lcd.print(" ");}
- if (progday7[prognum-1]==1){lcd.print("S");} else {lcd.print(" ");}
- lcd.setCursor(0,3); lcd.print("p 1/3");
- if (key==15 && pointer2<7){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>0){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- else if (key==14 && pointer2==0){pointer2=4;pointer3=0;number1=0;number2=0;number3=0;main_page_data=0;} // Beck to page 3
- else if (key==13){pointer1=0; lcd.clear();save();} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- if (pointer2==3){pointer1=5;pointer2=1; lcd.clear(); key=16;main_page_data=0;}//page 2
- if (pointer2==4){pointer1=6;pointer2=3; lcd.clear(); key=16;if (prognum>1){prognum--;}main_page_data=0;}//page 3
- }
- else if (pointer1==5){ // program setting page 2
- // num
- lcd.setCursor(0,0); lcd.print("prog num ");
- if (pointer2==1){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;prognum=number1; pointer3=1;}
- else if (pointer3==1){number2=key;prognum=number1*10+number2; if (prognum>25){prognum=number2;} pointer3=0;}}
- if (key==10 && prognum<25){prognum++;}
- else if (key==11 && prognum>1) {prognum--;}}
- else {lcd.print(":");}
- lcd.print(prognum);lcd.print(" ");
- // valve num
- lcd.setCursor(0,1);lcd.print("Write valve num:");
- if (pointer2==2){lcd.setCursor(15,1); lcd.print(">");
- if (key<10){
- if (pointer3==0){ number1=key;progvalve=number1; pointer3=1;}
- else if (pointer3==1){ number2=key;progvalve=number1*10+number2; }}
- if (key==10){pointer3=0;number1=0;number2=0;number3=0;key=16;lcd.setCursor(16,1);lcd.print(" ");
- if (progvalve==1){progvalve1[prognum-1]=!progvalve1[prognum-1];}
- else if (progvalve==2){progvalve2[prognum-1]=!progvalve2[prognum-1];}
- else if (progvalve==3){progvalve3[prognum-1]=!progvalve3[prognum-1];}
- else if (progvalve==4){progvalve4[prognum-1]=!progvalve4[prognum-1];}
- else if (progvalve==5){progvalve5[prognum-1]=!progvalve5[prognum-1];}
- else if (progvalve==6){progvalve6[prognum-1]=!progvalve6[prognum-1];}
- else if (progvalve==7){progvalve7[prognum-1]=!progvalve7[prognum-1];}
- else if (progvalve==8){progvalve8[prognum-1]=!progvalve8[prognum-1];}
- else if (progvalve==9){progvalve9[prognum-1]=!progvalve9[prognum-1];}
- else if (progvalve==10){progvalve10[prognum-1]=!progvalve10[prognum-1];}
- progvalve=0;} // next
- }
- lcd.setCursor(16,1); if (pointer3>0){lcd.print(progvalve);}lcd.print(" ");
- lcd.setCursor(6,3);lcd.print(" V:");
- if (progvalve1[prognum-1]==1){lcd.print("1");} else {lcd.print(" ");}
- if (progvalve2[prognum-1]==1){lcd.print("2");} else {lcd.print(" ");}
- if (progvalve3[prognum-1]==1){lcd.print("3");} else {lcd.print(" ");}
- if (progvalve4[prognum-1]==1){lcd.print("4");} else {lcd.print(" ");}
- if (progvalve5[prognum-1]==1){lcd.print("5");} else {lcd.print(" ");}
- if (progvalve6[prognum-1]==1){lcd.print("6");} else {lcd.print(" ");}
- if (progvalve7[prognum-1]==1){lcd.print("7");} else {lcd.print(" ");}
- if (progvalve8[prognum-1]==1){lcd.print("8");} else {lcd.print(" ");}
- if (progvalve9[prognum-1]==1){lcd.print("9");} else {lcd.print(" ");}
- if (progvalve10[prognum-1]==1){lcd.print("10");} else {lcd.print(" ");}
- lcd.setCursor(0,3); lcd.print("p 2/3");
- lcd.setCursor(0,2);lcd.print("Then pess UP ");
- if (key==15 && pointer2<3){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>0){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- else if (key==13){pointer1=0; lcd.clear();save();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- if (pointer2==0){pointer1=4;pointer2=2;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();main_page_data=0;} // page 1
- if (pointer2==3){pointer1=6;pointer2=1;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();key=16;main_page_data=0;} // page 3
- }
- else if (pointer1==6){ // program setting page 3
- // num
- lcd.setCursor(0,0); lcd.print("prog num ");
- if (pointer2==1){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;prognum=number1; pointer3=1;}
- else if (pointer3==1){number2=key;prognum=number1*10+number2; if (prognum>25){prognum=number2;} pointer3=0;}}
- if (key==10 && prognum<25){prognum++;}
- else if (key==11 && prognum>1) {prognum--;}}
- else {lcd.print(":");}
- lcd.print(prognum);lcd.print(" ");
- //hour
- lcd.setCursor(0,1);lcd.print("start hour");
- if (pointer2==2){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;proghour[prognum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;proghour[prognum-1]=number1*10+number2; if (proghour[prognum-1]>23){proghour[prognum-1]=number2;} pointer3=0;}}}
- else {lcd.print(":");}
- lcd.print(proghour[prognum-1]);lcd.print("h ");
- //min
- lcd.setCursor(0,2);lcd.print("start min ");
- if (pointer2==3){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;progmin[prognum-1]=number1; pointer3=1;}
- else if (pointer3==1){number2=key;progmin[prognum-1]=number1*10+number2; if (progmin[prognum-1]>59){progmin[prognum-1]=number2;} pointer3=0;}}}
- else {lcd.print(":");}
- lcd.print(progmin[prognum-1]);lcd.print("min ");
- lcd.setCursor(0,3); lcd.print("p 3/3");
- if (key==15 && pointer2<5){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>0){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- else if (key==13){pointer1=0; lcd.clear();save();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- if (pointer2==0){pointer1=5;pointer2=2;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();main_page_data=0;} // page 2
- if (pointer2==4){pointer1=4;pointer2=1;pointer3=0;number1=0;number2=0;number3=0;lcd.clear();prognum++;main_page_data=0;} // page 1
- }
- else if (pointer1==7){ // clock setting
- // date
- lcd.setCursor(0,0); lcd.print("data");
- if (pointer2==0){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;setday=number1; pointer3=1;}
- else if (pointer3==1){number2=key;setday=number1*10+number2; if (setday>31){setday=number2;} pointer3=0;}
- setclock();}}
- else {lcd.print(":");}
- lcd.print(" ");
- if (nowTime.day<10){lcd.print("0");lcd.print(nowTime.day);}
- else {lcd.print(nowTime.day);}
- if (pointer2==1){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;setmonth=number1; pointer3=1;}
- else if (pointer3==1){number2=key;setmonth=number1*10+number2; if (setmonth>12){setmonth=number2;} pointer3=0;}
- setclock();}}
- else {lcd.print("/");}
- if (nowTime.month<10){lcd.print("0");lcd.print(nowTime.month); }
- else {lcd.print(nowTime.month);}
- if (pointer2==2){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;setyear=number1; pointer3=1;}
- else if (pointer3==1){number2=key;setyear=number1*10+number2; pointer3=0;}
- setclock();}}
- else {lcd.print("/");}
- lcd.print("20");
- if(nowTime.year>9){lcd.print(nowTime.year);}
- else {lcd.print("0");lcd.print(nowTime.year);}
- // day
- lcd.setCursor(0,1); lcd.print("day ");
- if (pointer2==3){lcd.print(">"); if (key<8){day=key-1;}}
- else {lcd.print(":");}
- lcd.print(" "); lcd.print(dayStr[day]); lcd.print(" ");
- // hour
- lcd.setCursor(0,2); lcd.print("hour");
- if (pointer2==4){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;sethour=number1; pointer3=1;}
- else if (pointer3==1){number2=key;sethour=number1*10+number2; if (sethour>23){sethour=number2;} pointer3=0;}
- setclock();}}
- else{lcd.print(":");}
- lcd.print(" ");lcd.print(nowTime.hour); lcd.print("h ");
- // min
- lcd.setCursor(0,3); lcd.print("min ");
- if (pointer2==5){lcd.print(">");
- if (key<10){
- if (pointer3==0){number1=key;setmin=number1; pointer3=1;}
- else if (pointer3==1){number2=key;setmin=number1*10+number2; if (setmin>60){setmin=number2;} pointer3=0;}
- setclock();}}
- else {lcd.print(":");}
- lcd.print(" ");lcd.print(nowTime.minute); lcd.print("min ");
- if (key==15 && pointer2<5){pointer2++;number1=0;number2=0;} // next
- else if (key==14 && pointer2>0){pointer2--;} // Beck
- else if (key==13){pointer1=0; lcd.clear();main_page_data=0;saveday();} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- }
- else if (pointer1==8){ // test valve
- lcd.setCursor(0,0); lcd.print("choose valve num ");
- lcd.setCursor(0,1); lcd.print("then press next >");
- if (testvalve>0){lcd.print(testvalve);}lcd.print(" ");
- if (key<10){
- if (pointer3==0){number1=key;testvalve=number1; pointer3=1;}
- else if (pointer3==1){number2=key;testvalve=number1*10+number2;pointer3=0;}}
- if (runprog==0){
- if (key==15){pointer3=0;valvestatus[testvalve-1]=!valvestatus[testvalve-1];testvalve=0;valvecontrol ();}
- lcd.setCursor(0,3);lcd.print(" ");} // next
- else { lcd.setCursor(0,3);lcd.print(" wait current prog ");}
- lcd.setCursor(0,2);
- if (valvestatus[0]==1){lcd.print("1 ");} else {lcd.print(" ");}
- if (valvestatus[1]==1){lcd.print("2 ");} else {lcd.print(" ");}
- if (valvestatus[2]==1){lcd.print("3 ");} else {lcd.print(" ");}
- if (valvestatus[3]==1){lcd.print("4 ");} else {lcd.print(" ");}
- if (valvestatus[4]==1){lcd.print("5 ");} else {lcd.print(" ");}
- if (valvestatus[5]==1){lcd.print("6 ");} else {lcd.print(" ");}
- if (valvestatus[6]==1){lcd.print("7 ");} else {lcd.print(" ");}
- if (valvestatus[7]==1){lcd.print("8 ");} else {lcd.print(" ");}
- if (valvestatus[8]==1){lcd.print("9 ");} else {lcd.print(" ");}
- if (valvestatus[9]==1){lcd.print("10");} else {lcd.print(" ");}
- if (key==13){pointer1=0; lcd.clear();main_page_data=0;} // home
- if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- }
- if (pointer1==9){ // test prog
- lcd.setCursor(0,0); lcd.print("choose prog num ");
- lcd.setCursor(0,1); lcd.print("then press next >");
- if (testprog>0){lcd.print(testprog);}lcd.print(" ");
- lcd.setCursor(0,2); lcd.print("prog num:");
- if (runprog>0){lcd.print(runprog);lcd.print(" "); lcd.setCursor(0,3); lcd.print("is running");}
- if (key<10){
- if (pointer3==0){number1=key;testprog=number1; pointer3=1;}
- else if (pointer3==1){number2=key;testprog=number1*10+number2;pointer3=0;}}
- if (key==15){pointer3=0;runprog=testprog;setvalvetime();runprogfun();} // next
- else if (key==13){pointer1=0; lcd.clear();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;} // settings
- }
- else if (pointer1==10){ // reset
- if (pointer2==0){
- lcd.setCursor(0,0); lcd.print("1-reset valve seting");
- lcd.setCursor(0,1); lcd.print("2-reset prog seting");
- lcd.setCursor(0,2); lcd.print("3-reset all seting");
- if (key==1){pointer2=1;lcd.clear();}
- else if (key==2){pointer2=2;lcd.clear();}
- else if (key==3){pointer2=3;lcd.clear();}
- }
- if (pointer2==1){
- lcd.setCursor(0,0); lcd.print(" valve reset ");
- lcd.setCursor(0,1); lcd.print("press next to reset ");
- lcd.setCursor(0,2); lcd.print("press back to cancel");
- if (key==15){pointer2=0;lcd.clear();valvereset();}//next
- else if (key==14){pointer2=0; lcd.clear();} //back
- }
- if (pointer2==2){
- lcd.setCursor(0,0); lcd.print(" prog reset ");
- lcd.setCursor(0,1); lcd.print("press next to reset ");
- lcd.setCursor(0,2); lcd.print("press back to cancel");
- if (key==15){pointer2=0;lcd.clear();progreset();}//next
- else if (key==14){pointer2=0; lcd.clear();} //back
- }
- if (pointer2==3){
- lcd.setCursor(0,0); lcd.print(" reset all ");
- lcd.setCursor(0,1); lcd.print("press next to reset");
- lcd.setCursor(0,2); lcd.print("press back to cancel");
- if (key==15){pointer2=0;lcd.clear();progreset(); valvereset();}//next
- else if (key==14){pointer2=0; lcd.clear();} // back
- }
- if (key==13){pointer1=0; lcd.clear();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;}// settings
- }
- else if (pointer1==11){ // calibration
- if (pointer2==0){ // calibration main page
- lcd.setCursor(0,0);lcd.print("1_PH calib");
- if (key==1){pointer2=1;lcd.clear();main_page_data=0;} // ph calibration page 1
- }
- // PH
- else if (pointer2==1){ // ph calibration STD1 page 1
- lcd.setCursor(0,0);lcd.print("put PH sensor on");
- lcd.setCursor(0,1);lcd.print("STD1 ( PH=");lcd.print(STDPH1);lcd.print(")");
- lcd.setCursor(0,2);lcd.print("then press next ");
- if (key==15){pointer2=2; lcd.clear();PH_calib_timer=120;} // next
- if (key==14){pointer2=0; lcd.clear();PH_calib_timer=120;} // back
- }
- else if (pointer2==2){ // ph wait page 2
- lcd.setCursor(0,0);lcd.print("please wait");
- //timer
- pcf.getTime();//get current time
- RTCsec=nowTime.second;
- if (!(lastRTCsec==RTCsec)){PH_calib_timer--;
- lcd.setCursor(19-PH_calib_timer%20,1);lcd.print(".");
- if ((PH_calib_timer%20)==0){lcd.setCursor(0,1);lcd.print(" ");}
- if (PH_calib_timer<1){pointer2=3;readph(); STDread1=phanalog;lcd.clear();}}
- lastRTCsec=RTCsec;}
- else if (pointer2==3){ // ph calibration STD2 page 3
- lcd.setCursor(0,0);lcd.print("put PH sensor on");
- lcd.setCursor(0,1);lcd.print("STD2 ( PH=");lcd.print(STDPH2);lcd.print(")");
- lcd.setCursor(0,2);lcd.print("then press next ");
- if (key==15){pointer2=4; lcd.clear();PH_calib_timer=120;} // next
- if (key==14){pointer2=1; lcd.clear();PH_calib_timer=120;} // back
- }
- else if (pointer2==4){ // ph wait page 4
- lcd.setCursor(0,0);lcd.print("please wait");
- //timer
- pcf.getTime();//get current time
- RTCsec=nowTime.second;
- if (!(lastRTCsec==RTCsec)){PH_calib_timer--;
- lcd.setCursor(19-PH_calib_timer%20,1);lcd.print(".");
- if ((PH_calib_timer%20)==0){lcd.setCursor(0,1);lcd.print(" ");}
- if (PH_calib_timer<1){pointer2=5;readph(); STDread2=phanalog;lcd.clear();
- // calculate PH constant
- PHa=(STDPH1-STDPH2)/(STDread1/STDread2);
- PHb=STDPH1-STDread1*PHa;}}
- lastRTCsec=RTCsec;}
- else if (pointer2==5){//ph calibration done page 5
- lcd.setCursor(0,0);lcd.print("PH calibration done");
- lcd.setCursor(0,1);lcd.print("press next to exit");
- lcd.setCursor(0,2);lcd.print("PH=");lcd.print(PHa);lcd.print("*analog+");lcd.print(PHb);
- if (key==15){pointer2=0; lcd.clear();PH_calib_timer=120;
- } // next
- if (key==14){pointer2=3; lcd.clear();PH_calib_timer=120;} // back
- }
- if (key==13){pointer1=0; lcd.clear();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;}// settings
- }
- else if (pointer1==12){ //other (lock setting)
- lcd.setCursor(0,0);lcd.print("screen lock setting");
- lcd.setCursor(0,1);lcd.print("password :");lcd.print(password);
- if (pointer2==0){
- if (key<10){
- if (pointer3==0){number1=key;password=number1; pointer3=1;}
- else if (pointer3==1){number2=key;password=number1*10+number2; pointer3=2;}
- else if (pointer3==2){number3=key;password=number1*100+number2*10+number3; pointer3=3;}
- else if (pointer3==3){number4=key;password=number1*1000+number2*100+number3*10+number4; pointer3=0;}}}
- lcd.setCursor(0,1);lcd.print("locking time:");lcd.print(locktime);
- if (pointer2==1){
- if (key<10){
- if (pointer3==0){number1=key;locktime=number1; pointer3=1;}
- else if (pointer3==1){number2=key;locktime=number1*10+number2; pointer3=0;}}}
- if (key==13){pointer1=0; lcd.clear();main_page_data=0;} // home
- else if (key==12){pointer1=1; lcd.clear();main_page_data=0;}// settings
- else if (key==15 && pointer2<0){pointer2++;pointer3=0;number1=0;number2=0;number3=0;} // next
- else if (key==14 && pointer2>1){pointer2--;pointer3=0;number1=0;number2=0;number3=0;} // Beck
- }
- if (pointer1==13){ // lock
- lcd.setCursor(0,0); lcd.print("The screen is locked");
- lcd.setCursor(0,1); lcd.print("Inter the password: ");
- if (key<10){
- if (pointer2==0){number1=key;interpassword=number1; lcd.setCursor(8,2); lcd.print("* "); pointer2=1;}
- else if (pointer2==1){number2=key;interpassword=number1*10+number2; lcd.setCursor(8,2); lcd.print("** "); pointer2=2;}
- else if (pointer2==2){number3=key;interpassword=number1*100+number2*10+number3; lcd.setCursor(8,2); lcd.print("*** "); pointer2=3;}
- else if (pointer2==3){number4=key;interpassword=number1*1000+number2*100+number3*10+number4;lcd.setCursor(8,2); lcd.print("****");
- if ( password==interpassword){locktimer=locktime*60;lcd.clear();pointer1=0;main_page_data=0;} // go home
- else {lcd.setCursor(0,3); lcd.print(" incorrect password ");}interpassword=0; pointer2=0;}
- }
- }
- key=16;
- }
- void save(){
- // valve
- lcd.setCursor(0,0);lcd.print(" saving data ");
- for (int i=0;i<10;i++){
- lcd.setCursor(i,1);lcd.print(".");
- EEPROM.write(i,valvedu[i]);EEPROM.commit();
- EEPROM.write(i+10,fer1per[i]);EEPROM.commit();
- EEPROM.write(i+20,fer2per[i]);EEPROM.commit();
- EEPROM.write(i+30,fer3per[i]);EEPROM.commit();
- EEPROM.write(i+40,fer4per[i]);EEPROM.commit();
- EEPROM.write(i+50,fer5per[i]);EEPROM.commit();
- EEPROM.write(i+60,valvestatus[i]);EEPROM.commit();}
- // prog
- for (int i=0;i<25;i++){
- lcd.setCursor(i+10,1);lcd.print(".");
- EEPROM.write(i+75,progact[i]);EEPROM.commit();
- EEPROM.write(i+100, progday1[i]);EEPROM.commit();
- EEPROM.write(i+125, progday2[i]);EEPROM.commit();
- EEPROM.write(i+150, progday3[i]);EEPROM.commit();
- EEPROM.write(i+175, progday4[i]);EEPROM.commit();
- EEPROM.write(i+200, progday5[i]);EEPROM.commit();
- EEPROM.write(i+225, progday6[i]);EEPROM.commit();
- EEPROM.write(i+250, progday7[i]);EEPROM.commit();
- EEPROM.write(i+275, proghour[i]);EEPROM.commit();
- EEPROM.write(i+300, progmin[i]);EEPROM.commit();
- EEPROM.write(i+325, progvalve1[i]);EEPROM.commit();
- EEPROM.write(i+350, progvalve2[i]);EEPROM.commit();
- EEPROM.write(i+375, progvalve3[i]);EEPROM.commit();
- EEPROM.write(i+400, progvalve4[i]);EEPROM.commit();
- EEPROM.write(i+425, progvalve5[i]);EEPROM.commit();
- EEPROM.write(i+450, progvalve6[i]);EEPROM.commit();
- EEPROM.write(i+475, progvalve7[i]);EEPROM.commit();
- EEPROM.write(i+500, progvalve8[i]);EEPROM.commit();
- EEPROM.write(i+525, progvalve9[i]);EEPROM.commit();
- EEPROM.write(i+550, progvalve10[i]);EEPROM.commit();}
- //PH EC
- for (int i=0,j=0;i<10;i++){
- EEPROM.write(i+600,valvePH[i]);EEPROM.commit();
- EEPROM.write(i+640,valveCE[i]);EEPROM.commit();}
- EEPROM.write(668,password);EEPROM.commit();
- EEPROM.write(669,locktime);EEPROM.commit();
- lcd.clear();
- }
- void load(){
- // valve
- lcd.setCursor(0,0);lcd.print(" loading data ");
- for (int i=0;i<10;i++) {
- lcd.setCursor(i,1);lcd.print(".");
- valvedu[i]=EEPROM.read(i);
- fer1per[i]=EEPROM.read(i+10);
- fer2per[i]=EEPROM.read(i+20);
- fer3per[i]=EEPROM.read(i+30);
- fer4per[i]=EEPROM.read(i+40);
- fer5per[i]=EEPROM.read(i+50);
- valvestatus[i]=EEPROM.read(i+60);}
- // prog
- for (int i=0;i<25;i++) {
- lcd.setCursor(i+10,1);lcd.print(".");
- progact[i]=EEPROM.read(i+75);
- progday1[i]=EEPROM.read(i+100);
- progday2[i]=EEPROM.read(i+125);
- progday3[i]=EEPROM.read(i+150);
- progday4[i]=EEPROM.read(i+175);
- progday5[i]=EEPROM.read(i+200);
- progday6[i]=EEPROM.read(i+225);
- progday7[i]=EEPROM.read(i+250);
- proghour[i]=EEPROM.read(i+275);
- progmin[i]=EEPROM.read(i+300);
- progvalve1[i]=EEPROM.read(i+325);
- progvalve2[i]=EEPROM.read(i+350);
- progvalve3[i]=EEPROM.read(i+375);
- progvalve4[i]=EEPROM.read(i+400);
- progvalve5[i]=EEPROM.read(i+425);
- progvalve6[i]=EEPROM.read(i+450);
- progvalve7[i]=EEPROM.read(i+475);
- progvalve8[i]=EEPROM.read(i+500);
- progvalve9[i]=EEPROM.read(i+525);
- progvalve10[i]=EEPROM.read(i+550);}
- //PH EC
- for (int i=0,j=0;i<10;i++){
- valvePH[i]=EEPROM.read(i+600);
- valveCE[i]=EEPROM.read(i+640);}
- // password=EEPROM.read(668);
- // locktime=EEPROM.read(669);
- lcd.clear();
- }
- void valvereset(){
- // valves data
- for (int i=0;i<10;i++){
- valvedu[i]=0; valvePH[i]=0; valveCE[i]=0;fer1per[i]=0;
- fer2per[i]=0; fer3per[i]=0;fer4per[i]=0; fer5per[i]=0;}
- save();
- }
- void progreset(){
- // program data
- for (int i=0;i<25;i++){
- progact[i]=0;progday1[i]=0;progday2[i]=0;progday3[i]=0;
- progday4[i]=0;progday5[i]=0;progday6[i]=0;progday7[i]=0;
- proghour[i]=0;progmin[i]=0;progvalve1[i]=0;progvalve2[i]=0;
- progvalve3[i]=0;progvalve4[i]=0;progvalve5[i]=0;progvalve6[i]=0;
- progvalve7[i]=0;progvalve8[i]=0;progvalve9[i]=0;progvalve10[i]=0;}
- save();
- }
- void checkprog(){
- valverun=0;runprog=0;
- // read time
- Time nowTime = pcf.getTime();//get current time
- // check active prog
- for (int i=0;i<25;i++){ // i:prog num
- if (progact[i]==1){
- // check the day
- if (day==0){// sunday
- // ckeck if the day active and check hour and min
- if (progday1[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==1){//monday
- // ckeck if the day active and check hour and min
- if (progday2[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==2){//tuesday
- // ckeck if the day active and check hour and min
- if (progday3[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==3){//wednesday
- // ckeck if the day active and check hour and min
- if (progday4[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==4){//theresday
- // ckeck if the day active and check hour and min
- if (progday5[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==5){//friday
- // ckeck if the day active and check hour and min
- if (progday6[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- else if (day==6){//saturday
- // ckeck if the day active and check hour and min
- if (progday7[i]==1 && proghour[i]==nowTime.hour && progmin[i]==nowTime.minute){runprog=i+1;}}
- }
- }
- valverun=0;
- if (progvalve1[runprog-1]==1){valvetimer[0]=valvedu[0]+1;} else {valvetimer[0]=0;}
- if (progvalve2[runprog-1]==1){valvetimer[1]=valvedu[1]+1;} else {valvetimer[1]=0;}
- if (progvalve3[runprog-1]==1){valvetimer[2]=valvedu[2]+1;} else {valvetimer[2]=0;}
- if (progvalve4[runprog-1]==1){valvetimer[3]=valvedu[3]+1;} else {valvetimer[3]=0;}
- if (progvalve5[runprog-1]==1){valvetimer[4]=valvedu[4]+1;} else {valvetimer[4]=0;}
- if (progvalve6[runprog-1]==1){valvetimer[5]=valvedu[5]+1;} else {valvetimer[5]=0;}
- if (progvalve7[runprog-1]==1){valvetimer[6]=valvedu[6]+1;} else {valvetimer[6]=0;}
- if (progvalve8[runprog-1]==1){valvetimer[7]=valvedu[7]+1;} else {valvetimer[7]=0;}
- if (progvalve9[runprog-1]==1){valvetimer[8]=valvedu[8]+1;} else {valvetimer[8]=0;}
- if (progvalve10[runprog-1]==1){valvetimer[9]=valvedu[9]+1;} else {valvetimer[9]=0;}
- if (pointer1!=8){stopall();}//check valve
- }
- void runprogfun(){
- // timer
- Time nowTime = pcf.getTime();//get current time
- // min
- RTCmin=nowTime.minute;
- if (!(lastRTCmin==RTCmin)){
- Serial.print(runprog-1);Serial.print(runprog-1);
- int totaltime=0;
- if (valvetimer[0]>0) {valvestatus[0]=1; bitWrite(dataout1,1,!valvestatus[0]);shiftout();valvetimer[0]--;valverun=1;}
- totaltime=totaltime+valvetimer[0];
- if (valvetimer[1]>0 && totaltime==0){valvestatus[1]=1; bitWrite(dataout1,0,!valvestatus[1]);shiftout();valvetimer[1]--;valverun=2;}
- totaltime=totaltime+valvetimer[1];
- if (valvetimer[2]>0 && totaltime==0){valvestatus[2]=1; bitWrite(dataout2,7,!valvestatus[2]);shiftout();valvetimer[2]--;valverun=3;}
- totaltime=totaltime+valvetimer[2];
- if (valvetimer[3]>0 && totaltime==0){valvestatus[3]=1; bitWrite(dataout2,6,!valvestatus[3]);shiftout();valvetimer[3]--;valverun=4;}
- totaltime=totaltime+valvetimer[3];
- if (valvetimer[4]>0 && totaltime==0){valvestatus[4]=1; bitWrite(dataout2,5,!valvestatus[4]);shiftout();valvetimer[4]--;valverun=5;}
- totaltime=totaltime+valvetimer[4];
- if (valvetimer[5]>0 && totaltime==0){valvestatus[5]=1; bitWrite(dataout2,4,!valvestatus[5]);shiftout();valvetimer[5]--;valverun=6;}
- totaltime=totaltime+valvetimer[5];
- if (valvetimer[6]>0 && totaltime==0){valvestatus[6]=1; bitWrite(dataout2,3,!valvestatus[6]);shiftout();valvetimer[6]--;valverun=7;}
- totaltime=totaltime+valvetimer[6];
- if (valvetimer[7]>0 && totaltime==0){valvestatus[7]=1; bitWrite(dataout2,2,!valvestatus[7]);shiftout();valvetimer[7]--;valverun=8;}
- totaltime=totaltime+valvetimer[7];
- if (valvetimer[8]>0 && totaltime==0){valvestatus[8]=1; bitWrite(dataout2,1,!valvestatus[8]);shiftout();valvetimer[8]--;valverun=9;}
- totaltime=totaltime+valvetimer[8];
- if (valvetimer[9]>0 && totaltime==0){valvestatus[9]=1; bitWrite(dataout2,0,!valvestatus[9]);shiftout();valvetimer[9]--;valverun=10;}
- if (valvetimer[0]==0){valvestatus[0]=0; bitWrite(dataout1,1,!valvestatus[0]);shiftout();
- if (valvetimer[1]==0){valvestatus[1]=0; bitWrite(dataout1,0,!valvestatus[1]);shiftout();
- if (valvetimer[2]==0){valvestatus[2]=0; bitWrite(dataout2,7,!valvestatus[2]);shiftout();
- if (valvetimer[3]==0){valvestatus[3]=0; bitWrite(dataout2,6,!valvestatus[3]);shiftout();
- if (valvetimer[4]==0){valvestatus[4]=0; bitWrite(dataout2,5,!valvestatus[4]);shiftout();
- if (valvetimer[5]==0){valvestatus[5]=0; bitWrite(dataout2,4,!valvestatus[5]);shiftout();
- if (valvetimer[6]==0){valvestatus[6]=0; bitWrite(dataout2,3,!valvestatus[6]);shiftout();
- if (valvetimer[7]==0){valvestatus[7]=0; bitWrite(dataout2,2,!valvestatus[7]);shiftout();
- if (valvetimer[8]==0){valvestatus[8]=0; bitWrite(dataout2,1,!valvestatus[8]);shiftout();
- if (valvetimer[9]==0){valvestatus[9]=0; bitWrite(dataout2,0,!valvestatus[9]);shiftout();lastrunprog=runprog;valverun=0;runprog=0;testprog=0;}}}}}}}}}}
- }
- lastRTCmin=RTCmin;
- for (int i=0; i<10 ;i++){
- if (valvestatus[i]==1){
- unsigned long currentmillis=millis();
- if (on_off_timer==0){
- if (fer1per[valverun-1]>on_timer){bitWrite(dataout1,7,0);}
- else {bitWrite(dataout1,7,1);}
- if (fer2per[valverun-1]>on_timer){bitWrite(dataout1,6,0);}
- else {bitWrite(dataout1,6,1);}
- if (fer3per[valverun-1]>on_timer){bitWrite(dataout1,5,0);}
- else {bitWrite(dataout1,5,1);}
- if (fer4per[valverun-1]>on_timer){bitWrite(dataout1,4,0);}
- else {bitWrite(dataout1,4,1);}
- if (fer5per[valverun-1]>on_timer){bitWrite(dataout1,3,0);}
- else {bitWrite(dataout1,3,1);}
- if ((unsigned long)(currentmillis-lastmillis)>=50){
- on_timer++;if (on_timer>100){on_timer=0;on_off_timer=1;}
- lastmillis=currentmillis;}
- shiftout();}
- else if (on_off_timer==1){
- bitWrite(dataout1,7,1);bitWrite(dataout1,5,1);bitWrite(dataout1,4,1);bitWrite(dataout1,6,1);shiftout();
- if ((unsigned long)(currentmillis-lastmillis)>=50){
- off_timer++;if (off_timer>100){off_timer=0;on_off_timer=0;}
- lastmillis=currentmillis;}}i=10;}}
- }
- void shiftout(){
- digitalWrite(latch,0);
- shiftOut(data,clk,MSBFIRST,dataout3);
- shiftOut(data,clk,MSBFIRST,dataout2);
- shiftOut(data,clk,MSBFIRST,dataout1);
- digitalWrite(latch,1);}
- void saverunprogdata(){
- Time nowTime = pcf.getTime();//get current time
- progyear=nowTime.year;
- progmonth=nowTime.month;
- progday=nowTime.day;
- progh=nowTime.hour;
- progm=nowTime.minute;
- for (int i=0;i<10;i++) {EEPROM.write(650+i,valvetimer[i]);EEPROM.commit();}
- EEPROM.write(661,runprog);EEPROM.commit();
- EEPROM.write(662,progyear);EEPROM.commit();
- EEPROM.write(663,progmonth);EEPROM.commit();
- EEPROM.write(664,progday);EEPROM.commit();
- EEPROM.write(665,progh);EEPROM.commit();
- EEPROM.write(666,progm);EEPROM.commit();
- // 667 for day
- }
- void loadrunprogdata(){
- lcd.setCursor(0,0);lcd.print(" loading data ");
- for (int i=0;i<10;i++){valvetimer[i]= EEPROM.read(650+i);}
- runprog=EEPROM.read(661);
- progyear=EEPROM.read(662);
- progmonth=EEPROM.read(663);
- progday=EEPROM.read(664);
- progh=EEPROM.read(665);
- progm=EEPROM.read(666);
- // 667 for day
- Serial.print("runprog:"); Serial.print(runprog);
- Serial.print("date"); Serial.print(progday);Serial.print("/");
- Serial.print(progmonth);Serial.print("/");
- Serial.print(progyear);Serial.print("/");
- Serial.print("hour:"); Serial.print(progh);
- Serial.print("min"); Serial.print(progm);
- Serial.print("valve1du");Serial.println(valvetimer[0]);
- lcd.clear();}
- void check_off_timer(){
- Time nowTime = pcf.getTime();//get current time
- if (progyear==nowTime.year && progmonth==nowTime.month && progday==nowTime.day){
- byte timediff=(nowTime.hour*60+nowTime.minute)-(progh*60+progm);
- if (timediff<180){fastmode=1;}
- else {fastmode=0;}
- Serial.println(timediff);}}
- void fastcheck(){
- valverun=0;runprog=0;
- // check active prog
- for (int i=0;i<25;i++){ // i:prog num
- if (progact[i]==1){
- // check the day
- if (day==0){// sunday
- // ckeck if the day active and check hour and min
- if (progday1[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==1){//monday
- // ckeck if the day active and check hour and min
- if (progday2[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==2){//tuesday
- // ckeck if the day active and check hour and min
- if (progday3[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==3){//wednesday
- // ckeck if the day active and check hour and min
- if (progday4[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==4){//theresday
- // ckeck if the day active and check hour and min
- if (progday5[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==5){//friday
- // ckeck if the day active and check hour and min
- if (progday6[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- else if (day==6){//saturday
- // ckeck if the day active and check hour and min
- if (progday7[i]==1 && proghour[i]==progh && progmin[i]==progm){runprog=i+1;}}
- }
- }
- valverun=0;
- if (runprog==lastrunprog){runprog=0;}
- if (runprog!=0){
- if (progvalve1[runprog-1]==1){valvetimer[0]=valvedu[0]+1;} else {valvetimer[0]=0;}
- if (progvalve2[runprog-1]==1){valvetimer[1]=valvedu[1]+1;} else {valvetimer[1]=0;}
- if (progvalve3[runprog-1]==1){valvetimer[2]=valvedu[2]+1;} else {valvetimer[2]=0;}
- if (progvalve4[runprog-1]==1){valvetimer[3]=valvedu[3]+1;} else {valvetimer[3]=0;}
- if (progvalve5[runprog-1]==1){valvetimer[4]=valvedu[4]+1;} else {valvetimer[4]=0;}
- if (progvalve6[runprog-1]==1){valvetimer[5]=valvedu[5]+1;} else {valvetimer[5]=0;}
- if (progvalve7[runprog-1]==1){valvetimer[6]=valvedu[6]+1;} else {valvetimer[6]=0;}
- if (progvalve8[runprog-1]==1){valvetimer[7]=valvedu[7]+1;} else {valvetimer[7]=0;}
- if (progvalve9[runprog-1]==1){valvetimer[8]=valvedu[8]+1;} else {valvetimer[8]=0;}
- if (progvalve10[runprog-1]==1){valvetimer[9]=valvedu[9]+1;} else {valvetimer[9]=0;} }
- progm++;if (progm>60){progm=0;progh++;}
- check_off_timer(); if (pointer1!=8){stopall();}//check valve
- }
- void stopprog(){
- progsta=1;
- //stop all valve
- valvestatus[0]=0; bitWrite(dataout1,1,!valvestatus[0]);
- valvestatus[1]=0; bitWrite(dataout1,0,!valvestatus[1]);
- valvestatus[2]=0; bitWrite(dataout2,7,!valvestatus[2]);
- valvestatus[3]=0; bitWrite(dataout2,6,!valvestatus[3]);
- valvestatus[4]=0; bitWrite(dataout2,5,!valvestatus[4]);
- valvestatus[5]=0; bitWrite(dataout2,4,!valvestatus[5]);
- valvestatus[6]=0; bitWrite(dataout2,3,!valvestatus[6]);
- valvestatus[7]=0; bitWrite(dataout2,2,!valvestatus[7]);
- valvestatus[8]=0; bitWrite(dataout2,1,!valvestatus[8]);
- valvestatus[9]=0; bitWrite(dataout2,0,!valvestatus[9]);
- //stop all fertilizers
- bitWrite(dataout1,7,1);
- bitWrite(dataout1,6,1);
- bitWrite(dataout1,5,1);
- bitWrite(dataout1,4,1);
- bitWrite(dataout1,3,1);
- shiftout();
- saverunprogdata();
- }
- void continueprog(){
- loadrunprogdata(); check_off_timer(); progsta=0;
- }
- void saveday (){
- EEPROM.write(667,day);EEPROM.commit();
- }
- void loadday (){
- day=EEPROM.read(667);
- }
- void stopall(){
- //stop valve
- valvestatus[0]=0; bitWrite(dataout1,1,!valvestatus[0]);
- valvestatus[1]=0; bitWrite(dataout1,0,!valvestatus[1]);
- valvestatus[2]=0; bitWrite(dataout2,7,!valvestatus[2]);
- valvestatus[3]=0; bitWrite(dataout2,6,!valvestatus[3]);
- valvestatus[4]=0; bitWrite(dataout2,5,!valvestatus[4]);
- valvestatus[5]=0; bitWrite(dataout2,4,!valvestatus[5]);
- valvestatus[6]=0; bitWrite(dataout2,3,!valvestatus[6]);
- valvestatus[7]=0; bitWrite(dataout2,2,!valvestatus[7]);
- valvestatus[8]=0; bitWrite(dataout2,1,!valvestatus[8]);
- valvestatus[9]=0; bitWrite(dataout2,0,!valvestatus[9]);
- //stop all fertilizers
- bitWrite(dataout1,7,1);
- bitWrite(dataout1,6,1);
- bitWrite(dataout1,5,1);
- bitWrite(dataout1,4,1);
- bitWrite(dataout1,3,1);
- shiftout();
- }
- void setvalvetime(){
- if (progvalve1[runprog-1]==1){valvetimer[0]=valvedu[0]+1;} else {valvetimer[0]=0;}
- if (progvalve2[runprog-1]==1){valvetimer[1]=valvedu[1]+1;} else {valvetimer[1]=0;}
- if (progvalve3[runprog-1]==1){valvetimer[2]=valvedu[2]+1;} else {valvetimer[2]=0;}
- if (progvalve4[runprog-1]==1){valvetimer[3]=valvedu[3]+1;} else {valvetimer[3]=0;}
- if (progvalve5[runprog-1]==1){valvetimer[4]=valvedu[4]+1;} else {valvetimer[4]=0;}
- if (progvalve6[runprog-1]==1){valvetimer[5]=valvedu[5]+1;} else {valvetimer[5]=0;}
- if (progvalve7[runprog-1]==1){valvetimer[6]=valvedu[6]+1;} else {valvetimer[6]=0;}
- if (progvalve8[runprog-1]==1){valvetimer[7]=valvedu[7]+1;} else {valvetimer[7]=0;}
- if (progvalve9[runprog-1]==1){valvetimer[8]=valvedu[8]+1;} else {valvetimer[8]=0;}
- if (progvalve10[runprog-1]==1){valvetimer[9]=valvedu[9]+1;} else {valvetimer[9]=0;}
- }
- void readph(){
- bitWrite(dataout3,4,1); shiftout(); // enable ph sensor analog
- phanalog=analogRead(A0); // read analog
- bitWrite(dataout3,4,0); shiftout(); // desable ph sensor analog
- }
Add Comment
Please, Sign In to add comment