/**
Arduino Electronic Safe
Copyright (C) 2020, Uri Shaked.
Released under the MIT License.
*/
#include <LiquidCrystal.h>
/* Locking mechanism definitions */
#define BUTTONS A7
#define FlowSensor_PIN 3
#define A5_Val A5
#define A4_Val A4
#define A3_Val A3
#define PumpA 10
#define PumpB 6
#define WaterPump 11
#define WaterLevelPin A2
#define NutrientStir A0
#define OzonePump A1
#define LCD_Light 13
int iVoltageA5 = 0;
int iVoltageA4 = 0;
int iVoltageA3 = 0;
//////////////////////
/// BUTTONS & MENU ///
//////////////////////
// B1, B2, B3, B4//
// byte bSet = 0;
// byte bUp = 511;
// byte bDown = 683;
// byte bEnter = 773;
const byte bMainMenu = 7;
const byte bSetMenu = 11;
byte bSec = 1; //set the timer to count in seconds rather than 0.5 sec
byte bWait = 0;
byte bPauseMenu = 0;
byte bPauseEnter = 0;
int A7_VAL = 0; // BUTTON INPUT
int bMenuTimerMax = 30; //300ms
int bMenuTimer = bMenuTimerMax;
int iMenuSelectMin = 1000;
int iMenuSelectMax = 6000;
int iMenuSelect = iMenuSelectMin;
int iMenuSelectStep = iMenuSelectMin;
int iDebounce = 0;
int iDebounceCnt = iDebounce;
byte bOff = 0;
byte bOn = 1;
////////////////////
// LCD Back Light //
////////////////////
byte bLCD_Backlight_State = bOn;
byte bLCD_Light_Timer_Max = 12;
byte bLCD_Light_Timer = bLCD_Light_Timer_Max;
///////////////
// pH Sensor //
///////////////
byte bpHDisplayUpdate = 1;
int iPrevMenuSelect = 0;
int iBasePumpTimerCnt = 0;
int iBasePumpTimer = 3;
int iAcidPumpTimerCnt = 0;
int iAcidPumpTimer = 3;
byte bBasePumpPower = 200;
byte bAcidPumpPower = 200;
byte bBasePumpAState = 3;
byte bAcidPumpAState = 3;
int iPumpWaitTimerMax = 60; //Wait 60 minutes before enabling the base pump
int iBasePumpWaitTimer = iPumpWaitTimerMax * 60;
int iAcidPumpWaitTimer = iPumpWaitTimerMax * 60;
int iPrevMenu = 0;
byte bPumpMenuCnt = 200;
/* Display */
const int rs = 12, en = 8, d4 = 7, d5 = 4, d6 = 9, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//////////////////
// Timer millis //
//////////////////
long lStartTimer = 0;
long lEndTimer = 1;
long lTimer = 1;
byte bStartTimer = 0;
long lTimerMax = 4294967295; //4,294,967,295
byte bSecondCnt = 0;
byte bSeconds = 0;
//////////////
// Humidity //
//////////////
char charDeg = 223;
String sDeg(charDeg);
String sTemperature = "0";
String sHumidity = "0";
int iTempLimit = 25;
int iHumidityLimit = 40;
float Temp = 25.3;
float Humidity = 38.9;
byte bStandby = 3;
byte bPumpRunning = 4;
byte bPumpSleep = 5;
byte bWaterPump = 0;
byte bPumpA = bStandby;
byte bPumpB = bStandby;
byte bDisabled = 0;
byte bEnabled = 1;
byte bPumpAState = bEnabled;
byte bPumpBState = bEnabled;
byte bPumpOnTimeMin = 3;
byte bPumpOffTimeMin = 10;
int iPumpOnTimeSec = bPumpOnTimeMin * 1;
int iPumpOffTimeSec = bPumpOffTimeMin * 1;
int iPumpOnTimeSecCnt = iPumpOnTimeSec;
int iPumpOffTimeSecCnt = 0;
int iWaitTime = 2; //Seconds
int iWaitTimeCnt = 0;
byte bReadSensor = 2; // read senosr ever 2 seconds
byte bReadSensorCnt = bReadSensor;
void setup() {
sDeg = sDeg +"C";
//LCD
lcd.begin(16, 2);
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("* Humidity *");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("* Menu System *");
pinMode(PumpA, OUTPUT);
pinMode(PumpB, OUTPUT);
pinMode(NutrientStir, OUTPUT);
pinMode(OzonePump, OUTPUT);
pinMode(LCD_Light, OUTPUT);
delay(2000);
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(" ");
lStartTimer = millis();
}
void loop() {
pRunTimer();
if (bMenuTimer==0) {
pMenu();
}
if ((bLCD_Backlight_State == bOn) && (bLCD_Light_Timer > 0)) {
bLCD_Backlight_State = bStandby;
digitalWrite(LCD_Light, HIGH);
}
if ((bLCD_Backlight_State == bStandby) && (bLCD_Light_Timer == 0)) {
bLCD_Backlight_State = bOff;
digitalWrite(LCD_Light, LOW);
}
if (bReadSensorCnt == 0) {
bReadSensorCnt = bReadSensor;
//Read Sensor
}
if ((Temp > iTempLimit) && (Humidity < iHumidityLimit) && (iPumpOffTimeSecCnt == 0)) {
if ((bPumpAState == bEnabled) && (iWaitTimeCnt == 0) && (bPumpA == bStandby) && ((bPumpB == bStandby) || (bPumpB == bPumpSleep))) {
bPumpA=bOn;
iPumpOnTimeSecCnt = iPumpOnTimeSec;
}
if ((bPumpBState == bEnabled) && (iWaitTimeCnt == 0) && (bPumpB == bStandby) && ((bPumpA == bStandby) || (bPumpA == bPumpSleep))) {
bPumpB=bOn;
iPumpOnTimeSecCnt = iPumpOnTimeSec;
}
}
lcd.setCursor ( 0, 1 );
lcd.print("bPumpA: ");
lcd.setCursor ( 7, 1 );
lcd.print(bPumpA);
lcd.setCursor ( 10, 1 );
lcd.print("POn");
lcd.setCursor ( 15, 1 );
lcd.print(iPumpOffTimeSecCnt);
if ((bPumpA == bPumpRunning) && (iPumpOnTimeSecCnt == 0)) {
bPumpA=bOff;
iPumpOffTimeSecCnt = iPumpOffTimeSec;
iWaitTimeCnt = iWaitTime;
}
if ((bPumpA == bPumpSleep) && (iPumpOffTimeSecCnt == 0)) {
bPumpA = bStandby;
}
if ((bPumpB == bPumpRunning) && (iPumpOnTimeSecCnt == 0)) {
bPumpB=bOff;
iPumpOffTimeSecCnt = iPumpOffTimeSec;
iWaitTimeCnt = iWaitTime;
}
if ((bPumpB == bPumpSleep) && (iPumpOffTimeSecCnt == 0)) {
// digitalWrite(OzonePump, HIGH);
bPumpB = bStandby;
}
if (bPumpA==bOn) {
digitalWrite(PumpA, HIGH); //ON
bPumpA = bPumpRunning;
}
if (bPumpA==bOff) {
digitalWrite(PumpA, LOW); //OFF
bPumpA = bPumpSleep;
}
if (bPumpB==bOn) {
digitalWrite(PumpB, HIGH); //ON
bPumpB = bPumpRunning;
}
if (bPumpB==bOff) {
digitalWrite(PumpB, LOW); //OFF
bPumpB = bPumpSleep;
}
}
void pMenu(){
bMenuTimer = bMenuTimerMax;
//A7_VAL = analogRead(BUTTONS);
iVoltageA5 = analogRead(A5_Val);
iVoltageA4 = analogRead(A4_Val);
iVoltageA3 = analogRead(A3_Val);
A7_VAL = 1024;
if (iVoltageA5 == 0) {
A7_VAL = 683;
}
if (iVoltageA4 == 0) {
A7_VAL = 511;
}
if (iVoltageA3 == 0) {
A7_VAL = 10;
}
// lcd.setCursor ( 0, 1);
// lcd.print(iDebounceCnt);
//Serial.println(A7_VAL);
// byte bUp = 511;
// byte bDown = 683;
// byte bEnter = 773;
if (A7_VAL < 1000) {
bLCD_Backlight_State = bOn;
bLCD_Light_Timer = bLCD_Light_Timer_Max;
}
//MENU NAVIGATION
if ((A7_VAL > 500) && (A7_VAL < 550) && (iMenuSelect < iMenuSelectMax) && (bPauseMenu == 0 && iDebounceCnt == 0)) { //DOWN
iMenuSelect = iMenuSelect + iMenuSelectStep;
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep) );
iDebounceCnt = iDebounce;
}
else if ((A7_VAL > 630) && (A7_VAL < 730) && (iMenuSelect > iMenuSelectMin) && bPauseMenu == 0 && iDebounceCnt == 0) { //UP
iMenuSelect = iMenuSelect - iMenuSelectStep;
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep) );
iDebounceCnt = iDebounce;
}
else if ((A7_VAL >= 0) && (A7_VAL < 50) && (bPauseEnter == 0) && bPauseMenu == 0 && iDebounceCnt == 0) { //ENTER
iMenuSelectStep = iMenuSelectStep / 10;
iMenuSelect = iMenuSelect + iMenuSelectStep;
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep) );
iDebounceCnt = iDebounce;
}
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep)+", PauseMenu:"+String(bPauseMenu) );
if (iMenuSelect == 1000) {
pMainMenu1000();
}
if ((iMenuSelect == 2000) && (bpHDisplayUpdate==0)) { //Display Current pH
pMainMenu2000();
}
if (iMenuSelect == 2100) {
pMainMenu2100();
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep) );
}
if (iMenuSelect == 2110) {
//pMainMenu2110();
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep) );
}
if (iMenuSelect == 3000) {
pMainMenu3000();
}
if (iMenuSelect == 3100) {
pMainMenu3100();
}
if (iMenuSelect == 4000) { // Base Pump
pMainMenu4000();
}
if (iMenuSelect == 4100) { // Base Pump
pMainMenu4100();
}
if (iMenuSelect == 5000) { //Acid Pump
pMainMenu5000();
}
if (iMenuSelect == 5100) { //Acid Pump
pMainMenu5100();
}
if (iMenuSelect == 6000) { //Prime Base Line
pMainMenu6000();
}
if (iMenuSelect == 6100) { //Prime Base Line
pMainMenu6100();
}
if (iMenuSelect == 6110) { //Prime Base Line
pMainMenu6110();
}
if (iMenuSelect == 6111) { //Prime Base Line
pMainMenu6111();
}
if (iMenuSelect == 6200) { //Prime Base Line
pMainMenu6200();
}
if (iMenuSelect == 6210) { //Prime Base Line
pMainMenu6210();
}
if (iMenuSelect == 6211) { //Prime Base Line
pMainMenu6211();
}
if (iMenuSelect == 6300) { //Prime Base Line
pMainMenu6300();
}
if (iMenuSelect == 6310) { //Prime Base Line
pMainMenu6310();
}
iPrevMenuSelect = iMenuSelect;
}
void pMainMenu1000() {
sTemperature = String(Temp,2);
sHumidity = String(Humidity,2);
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Temp: "+ sTemperature +" ");
lcd.setCursor ( 14, 0 ); // go to the next line
lcd.print(sDeg);
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("Humd: "+sHumidity +" ");
lcd.setCursor ( 15, 1 ); // go to the next line
lcd.print("%");
bpHDisplayUpdate = 1;
iMenuSelectStep = 1000;
}
void pMainMenu1100() {
iMenuSelect = 1000;
iMenuSelectStep = 1000;
}
void pMainMenu2000() { // Set pH Limits
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Temp Limit ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("Temp:"+String(iTempLimit)+" ");
lcd.setCursor ( 14, 1 ); // go to the next line
lcd.print(sDeg);
}
void pMainMenu2100() { // Set pH Limits
if (bPauseMenu == 0) {
bPauseMenu = 1;
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set Temperature");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iTempLimit)+" ");
lcd.setCursor ( 14, 1 ); // go to the next line
lcd.print(sDeg);
}
else {
if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (iTempLimit > 0) {
iTempLimit--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iTempLimit)+" ");
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (iTempLimit < 50) {
iTempLimit++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iTempLimit)+" ");
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelectStep = 1000;
iMenuSelect = 2000;
iMenuSelectMin = 1000;
iMenuSelectMax = 6000;
bPauseMenu = 0;
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep)+", PauseMenu:"+String(bPauseMenu) );
}
}
}
void pMainMenu3000() { // Set pH Limits
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Humidity Limit ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iHumidityLimit)+" ");
lcd.setCursor (15, 1 ); // go to the next line
lcd.print("%");
}
void pMainMenu3100() { // Set pH Limits
if (bPauseMenu == 0) {
bPauseMenu = 1;
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set Humidity ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iHumidityLimit)+" ");
lcd.setCursor (15, 1 ); // go to the next line
lcd.print("%");
}
else {
if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (iHumidityLimit>0){
iHumidityLimit--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iHumidityLimit)+" ");
lcd.setCursor ( 15, 1 ); // go to the next line
lcd.print("%");
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (iHumidityLimit<100){
iHumidityLimit++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(iHumidityLimit)+" ");
lcd.setCursor ( 15, 1 ); // go to the next line
lcd.print("%");
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelectStep = 1000;
iMenuSelect = 3000;
iMenuSelectMin = 1000;
iMenuSelectMax = 6000;
bPauseMenu = 0;
//Serial.println("Menu Select:"+String(iMenuSelect)+", MenuStep:"+String(iMenuSelectStep)+", PauseMenu:"+String(bPauseMenu) );
}
}
}
void pMainMenu4000() {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Pump A State ");
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpAState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
}
void pMainMenu4100() { //
if (bPauseMenu == 0) {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set PumpA State ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(" ");
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpAState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
bPauseMenu = 1;
}
else if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (bPumpAState > 0) {
bPumpAState--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpAState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
bPauseMenu = 1;
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (bPumpAState < 1) {
bPumpAState++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpAState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelectStep = 1000;
iMenuSelect = 4000;
iMenuSelectMin = 1000;
iMenuSelectMax = 6000;
bPauseMenu = 0;
}
}
void pMainMenu5000() {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Pump B State ");
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpBState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
}
void pMainMenu5100() { //
if (bPauseMenu == 0) {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set PumpB State ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(" ");
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpBState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
bPauseMenu = 1;
}
else if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (bPumpBState > 0) {
bPumpBState--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpBState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
bPauseMenu = 1;
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (bPumpBState < 1) {
bPumpBState++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
if (bPumpBState == 1) {
lcd.print("Enabled ");
}
else {
lcd.print("Disabled ");
}
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelectStep = 1000;
iMenuSelect = 5000;
iMenuSelectMin = 1000;
iMenuSelectMax = 6000;
bPauseMenu = 0;
}
}
void pMainMenu6000() {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Pump Timer ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("On, Off Time ");
}
void pMainMenu6100() { //
iMenuSelectMin = 6100;
iMenuSelectMax = 6700;
lcd.setCursor ( 0, 0 );
lcd.print("Pump On Time ");
lcd.setCursor ( 0, 1 );
lcd.print(String(bPumpOnTimeMin) + " ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
}
void pMainMenu6110() { //
iMenuSelectMin = 6110;
iMenuSelectMax = 6110;
if (bPauseMenu == 0) {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set Pump On Time ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOnTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (bPumpOnTimeMin > 0) {
bPumpOnTimeMin--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOnTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (bPumpOnTimeMin < 20) {
bPumpOnTimeMin++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOnTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelect = 6100;
iMenuSelectStep = 100;
bPauseMenu = 0;
}
}
void pMainMenu6111() { //
iMenuSelectMin = 6111;
iMenuSelectMax = 6111;
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Pump On Time Set ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("Done ");
iPumpOnTimeSec = bPumpOnTimeMin * 60;
iMenuSelect = 6100;
iMenuSelectStep = 100;
}
void pMainMenu6200() { //
iMenuSelectMin = 6100;
iMenuSelectMax = 6700;
lcd.setCursor ( 0, 0 );
lcd.print("Pump Off Time ");
lcd.setCursor ( 0, 1 );
lcd.print(String(bPumpOffTimeMin) + " ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
}
void pMainMenu6210() { //
iMenuSelectMin = 6210;
iMenuSelectMax = 6210;
if (bPauseMenu == 0) {
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Set Pump Off Time");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOffTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL > 500) && (A7_VAL < 550)) { //UP
if (bPumpOffTimeMin > 0) {
bPumpOffTimeMin--;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOffTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL > 630) && (A7_VAL < 730)) { //DOWN
if (bPumpOffTimeMin < 120) {
bPumpOffTimeMin++;
}
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(String(bPumpOffTimeMin)+" ");
lcd.setCursor ( 13, 1 );
lcd.print("min");
bPauseMenu = 1;
}
else if ((A7_VAL >= 0) && (A7_VAL < 50)) { //ENTER
iMenuSelect = 6200;
iMenuSelectStep = 100;
bPauseMenu = 0;
}
}
void pMainMenu6211() { //
iMenuSelectMin = 6211;
iMenuSelectMax = 6211;
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Pump On Time Set ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("Done ");
iPumpOffTimeSec = bPumpOffTimeMin * 60;
iMenuSelect = 6200;
iMenuSelectStep = 100;
}
void pMainMenu6300() { //
iMenuSelectMin = 6100;
iMenuSelectMax = 6300;
lcd.setCursor ( 0, 0 ); // go to the next line
lcd.print("Return To Main ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print("Enter to Exit ");
}
void pMainMenu6310() {
iMenuSelect = 6000;
iMenuSelectStep = 1000;
iMenuSelectMin = 1000;
iMenuSelectMax = 6000;
}
void pTenMilliSeconds() {
bMenuTimer--;
if (iDebounceCnt > 0) {
iDebounceCnt--;
}
}
void pOneSecond() {
if (bLCD_Light_Timer > 0) {
bLCD_Light_Timer--;
}
if (bWait > 0) {
bWait--;
}
if (bpHDisplayUpdate > 0){
bpHDisplayUpdate--;
}
if (bReadSensorCnt > 0){
bReadSensorCnt--;
}
if (iPumpOnTimeSecCnt > 0) {
iPumpOnTimeSecCnt--;
}
if (iPumpOffTimeSecCnt > 0) {
iPumpOffTimeSecCnt--;
}
if (iWaitTimeCnt > 0) {
iWaitTimeCnt--;
}
}
void pRunTimer() {
lEndTimer = millis();
if (lEndTimer < lStartTimer) {
lTimer = lTimerMax - lStartTimer + lEndTimer;
}
else {
lTimer = lEndTimer - lStartTimer;
}
if (lTimer >= 10) {
pTenMilliSeconds();
bSecondCnt++;
lStartTimer = millis();
}
if (bSecondCnt >= 100) {
pOneSecond();
bSecondCnt = 0;
}
}