esp32-mppt/ARDUINO_MPPT_FIRMWARE_V2.1/8_LCD_Menu.ino

1019 lines
37 KiB
C++

void lcdBacklight_Wake() {
lcd.setBacklight(HIGH);
prevLCDBackLMillis = millis();
}
void lcdBacklight() {
unsigned long backLightInterval;
if (backlightSleepMode == 0) {
prevLCDBackLMillis = millis(); //Set backlight var to sleep never
}
else if (backlightSleepMode == 1) {
backLightInterval = 10000; //Set backlight var to sleep after 10 seconds without keypress
}
else if (backlightSleepMode == 2) {
backLightInterval = 300000; //Set backlight var to sleep after 5 minutes without keypress
}
else if (backlightSleepMode == 3) {
backLightInterval = 3600000; //Set backlight var to sleep after 1 hour without keypress
}
else if (backlightSleepMode == 4) {
backLightInterval = 21600000; //Set backlight var to sleep after 6 hours without keypress
}
else if (backlightSleepMode == 5) {
backLightInterval = 43200000; //Set backlight var to sleep after 12 hours without keypress
}
else if (backlightSleepMode == 6) {
backLightInterval = 86400000; //Set backlight var to sleep after 1 day without keypress
}
else if (backlightSleepMode == 7) {
backLightInterval = 259200000; //Set backlight var to sleep after 3 days without keypress
}
else if (backlightSleepMode == 8) {
backLightInterval = 604800000; //Set backlight var to sleep after 1 week without keypress
}
else if (backlightSleepMode == 9) {
backLightInterval = 2419200000; //Set backlight var to sleep after 1 month without keypress
}
if (backlightSleepMode > 0 && settingMode == 0) {
currentLCDBackLMillis = millis();
if (currentLCDBackLMillis - prevLCDBackLMillis >= backLightInterval) { //Run routine every millisRoutineInterval (ms)
prevLCDBackLMillis = currentLCDBackLMillis; //Store previous time
lcd.setBacklight(LOW); //Increment time counter
}
}
}
void padding100(int padVar) {
if (padVar < 10) {
lcd.print(" ");
}
else if (padVar < 100) {
lcd.print(" ");
}
}
void padding10(int padVar) {
if (padVar < 10) {
lcd.print(" ");
}
}
void displayConfig1() {
lcd.setCursor(0, 0); lcd.print(powerInput, 2); lcd.print("W"); padding100(powerInput);
lcd.setCursor(7, 0);
if (Wh < 10) {
lcd.print(Wh, 3); //9.999Wh_
lcd.print("Wh ");
}
else if (Wh < 100) {
lcd.print(Wh, 2); //99.99Wh_
lcd.print("Wh ");
}
else if (Wh < 1000) {
lcd.print(Wh, 1); //999.9Wh_
lcd.print("Wh ");
}
else if (Wh < 10000) {
lcd.print(kWh, 2); //9.99kWh_
lcd.print("kWh ");
}
else if (Wh < 100000) {
lcd.print(kWh, 1); //99.9kWh_
lcd.print("kWh ");
}
else if (Wh < 1000000) {
lcd.print(kWh, 0); //999kWh__
lcd.print("kWh ");
}
else if (Wh < 10000000) {
lcd.print(MWh, 2); //9.99MWh_
lcd.print("MWh ");
}
else if (Wh < 100000000) {
lcd.print(MWh, 1); //99.9MWh_
lcd.print("MWh ");
}
else if (Wh < 1000000000) {
lcd.print(MWh, 0); //999MWh__
lcd.print("MWh ");
}
lcd.setCursor(15, 0); lcd.print(daysRunning, 0);
lcd.setCursor(0, 1); lcd.print(batteryPercent); lcd.print("%"); padding100(batteryPercent);
if (BNC == 0) {
lcd.setCursor(5, 1);
lcd.print(voltageOutput, 2);
lcd.print("V");
padding10(voltageOutput);
}
else {
lcd.setCursor(5, 1);
lcd.print("NOBAT ");
}
lcd.setCursor(11, 1); lcd.print(currentOutput, 2); lcd.print("A"); padding10(currentOutput);
}
void displayConfig2() {
lcd.setCursor(0, 0); lcd.print(powerInput, 2); lcd.print("W"); padding100(powerInput);
lcd.setCursor(7, 0); lcd.print(voltageInput, 2); lcd.print("V"); padding10(voltageInput);
lcd.setCursor(14, 0); lcd.print(currentInput, 2); lcd.print("A"); padding10(currentInput);
lcd.setCursor(0, 1); lcd.print(powerOutput, 2); lcd.print("W"); padding100(powerOutput);
if (BNC == 0) {
lcd.setCursor(7, 1);
lcd.print(voltageOutput, 2);
lcd.print("V");
padding10(voltageOutput);
}
else {
lcd.setCursor(7, 1);
lcd.print("NOBAT");
}
lcd.setCursor(14, 1); lcd.print(currentOutput, 2); lcd.print("A"); padding10(currentOutput);
}
void displayConfig3() {
lcd.setCursor(0, 0); lcd.print(powerInput, 2); lcd.print("W"); padding100(powerInput);
lcd.setCursor(7, 0);
if (Wh < 10) {
lcd.print(Wh, 2); //9.99Wh_
lcd.print("Wh ");
}
else if (Wh < 100) {
lcd.print(Wh, 1); //99.9Wh_
lcd.print("Wh ");
}
else if (Wh < 1000) {
lcd.print(Wh, 0); //999Wh__
lcd.print("Wh ");
}
else if (Wh < 10000) {
lcd.print(kWh, 1); //9.9kWh_
lcd.print("kWh ");
}
else if (Wh < 100000) {
lcd.print(kWh, 0); //99kWh__
lcd.print("kWh ");
}
else if (Wh < 1000000) {
lcd.print(kWh, 0); //999kWh_
lcd.print("kWh ");
}
else if (Wh < 10000000) {
lcd.print(MWh, 1); //9.9MWh_
lcd.print("MWh ");
}
else if (Wh < 100000000) {
lcd.print(MWh, 0); //99MWh__
lcd.print("MWh ");
}
else if (Wh < 1000000000) {
lcd.print(MWh, 0); //999Mwh_
lcd.print("MWh ");
}
lcd.setCursor(15, 0); lcd.print(batteryPercent); lcd.print("%"); padding100(batteryPercent);
int batteryPercentBars;
batteryPercentBars = batteryPercent / 6.18; //6.25 proper value
lcd.setCursor(0, 1);
for (int i = 0; i < batteryPercentBars; i++) {
lcd.print((char)255); //Battery Bar Blocks
}
for (int i = 0; i < 16 - batteryPercentBars; i++) {
lcd.print(" "); //Battery Blanks
}
}
void displayConfig4() {
lcd.setCursor(0, 0); lcd.print("TEMPERATURE STAT");
lcd.setCursor(0, 1); lcd.print(temperature); lcd.print((char)223); lcd.print("C"); padding100(temperature);
lcd.setCursor(8, 1); lcd.print("FAN");
lcd.setCursor(12, 1);
if (fanStatus == 1) {
lcd.print("ON ");
}
else {
lcd.print("OFF");
}
}
void displayConfig5() {
lcd.setCursor(0, 0); lcd.print(" SETTINGS MENU ");
lcd.setCursor(0, 1); lcd.print("--PRESS SELECT--");
}
void factoryResetMessageLCD() {
lcd.setCursor(0, 0); lcd.print(" FACTORY RESET ");
lcd.setCursor(0, 1); lcd.print(" SUCCESSFUL ");
delay(1000);
}
void savedMessageLCD() {
// lcd.setCursor(0,0);lcd.print(" SETTINGS SAVED ");
// lcd.setCursor(0,1);lcd.print(" SUCCESSFULLY ");
// delay(500);
// lcd.clear();
}
void cancelledMessageLCD() {
// lcd.setCursor(0,0);lcd.print(" SETTINGS ");
// lcd.setCursor(0,1);lcd.print(" CANCELLED ");
// delay(500);
// lcd.clear();
}
//////////////////////////////////////////// MAIN LCD MENU CODE /////////////////////////////////////////////
void LCD_Menu() {
int
menuPages = 4,
subMenuPages = 12,
longPressTime = 3000,
longPressInterval = 500,
shortPressInterval = 100;
//SETTINGS MENU
if (settingMode == 1) {
chargingPause = 1;
//BUTTON KEYPRESS
if (setMenuPage == 0) {
if (digitalRead(buttonRight) == 1) {
subMenuPage++;
}
if (digitalRead(buttonLeft) == 1) {
subMenuPage--;
}
if (digitalRead(buttonBack) == 1) {
settingMode = 0; //bool engage, main menu int page
subMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
setMenuPage = 1; //enter sub menu settings - bool engage
}
lcdBacklight_Wake();
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1
|| digitalRead(buttonBack) == 1 || digitalRead(buttonSelect) == 1) {}
}
//SUB MENU PAGE CYCLING
if (subMenuPage > subMenuPages) {
subMenuPage = 0;
}
else if (subMenuPage < 0) {
subMenuPage = subMenuPages;
}
//--------------------------- SETTINGS MENU PAGES: ---------------------------//
///// SETTINGS MENU ITEM: SUPPLY ALGORITHM SELECT /////
if (subMenuPage == 0) {
lcd.setCursor(0, 0); lcd.print("SUPPLY ALGORITHM");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
if (MPPT_Mode == 1) {
lcd.print("MPPT + CC-CV ");
}
else {
lcd.print("CC-CV ONLY ");
}
//SET MENU - BOOLTYPE
if (setMenuPage == 0) {
boolTemp = MPPT_Mode;
}
else {
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {}
if (MPPT_Mode == 1) {
MPPT_Mode = 0;
} else {
MPPT_Mode = 1;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} MPPT_Mode = boolTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
}
}
///// SETTINGS MENU ITEM: CHARER/PSU MODE /////
else if (subMenuPage == 1) {
lcd.setCursor(0, 0); lcd.print("CHARGER/PSU MODE");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
if (output_Mode == 1) {
lcd.print("CHARGER MODE ");
}
else {
lcd.print("PSU MODE ");
}
//SET MENU - BOOLTYPE
if (setMenuPage == 0) {
boolTemp = output_Mode;
}
else {
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {}
if (output_Mode == 1) {
output_Mode = 0;
} else {
output_Mode = 1;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} output_Mode = boolTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
}
}
///// SETTINGS MENU ITEM: MAX BATTERY V /////
else if (subMenuPage == 2) {
lcd.setCursor(0, 0); lcd.print("MAX BATTERY V ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1); lcd.print(voltageBatteryMax, 2); lcd.print("V");
lcd.print(" ");
//SET MENU - FLOATTYPE
if (setMenuPage == 0) {
floatTemp = voltageBatteryMax;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} voltageBatteryMax = floatTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
currentMenuSetMillis = millis();
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
while (digitalRead(buttonRight) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
voltageBatteryMax += 1.00; //Increment by 1
voltageBatteryMax = constrain(voltageBatteryMax, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMax, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
voltageBatteryMax += 0.01; //Increment by 0.01
voltageBatteryMax = constrain(voltageBatteryMax, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMax, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("V "); //Display unit
}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
while (digitalRead(buttonLeft) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
voltageBatteryMax -= 1.00; //Increment by 1
voltageBatteryMax = constrain(voltageBatteryMax, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMax, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
voltageBatteryMax -= 0.01; //Increment by 0.01
voltageBatteryMax = constrain(voltageBatteryMax, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMax, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("V "); //Display unit
}
}
}
}
///// SETTINGS MENU ITEM: MIN BATTERY V /////
else if (subMenuPage == 3) {
lcd.setCursor(0, 0); lcd.print("MIN BATTERY V ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1); lcd.print(voltageBatteryMin, 2); lcd.print("V");
lcd.print(" ");
//SET MENU - FLOATTYPE
if (setMenuPage == 0) {
floatTemp = voltageBatteryMin;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} voltageBatteryMin = floatTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
currentMenuSetMillis = millis();
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
while (digitalRead(buttonRight) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
voltageBatteryMin += 1.00; //Increment by 1
voltageBatteryMin = constrain(voltageBatteryMin, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMin, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
voltageBatteryMin += 0.01; //Increment by 0.01
voltageBatteryMin = constrain(voltageBatteryMin, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMin, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("V "); //Display unit
}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
while (digitalRead(buttonLeft) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
voltageBatteryMin -= 1.00; //Increment by 1
voltageBatteryMin = constrain(voltageBatteryMin, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMin, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
voltageBatteryMin -= 0.01; //Increment by 0.01
voltageBatteryMin = constrain(voltageBatteryMin, vOutSystemMin, vOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(voltageBatteryMin, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("V "); //Display unit
}
}
}
}
///// SETTINGS MENU ITEM: CHARGING CURRENT /////
else if (subMenuPage == 4) {
lcd.setCursor(0, 0); lcd.print("CHARGING CURRENT");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1); lcd.print(currentCharging, 2); lcd.print("A");
lcd.print(" ");
//SET MENU - FLOATTYPE
if (setMenuPage == 0) {
floatTemp = currentCharging;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} currentCharging = floatTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
currentMenuSetMillis = millis();
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
while (digitalRead(buttonRight) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
currentCharging += 1.00; //Increment by 1
currentCharging = constrain(currentCharging, 0.0, cOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(currentCharging, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
currentCharging += 0.01; //Increment by 0.01
currentCharging = constrain(currentCharging, 0.0, cOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(currentCharging, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("A "); //Display unit
}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
while (digitalRead(buttonLeft) == 1) {
if (millis() - currentMenuSetMillis > longPressTime) { //Long Press
currentCharging -= 1.00; //Increment by 1
currentCharging = constrain(currentCharging, 0.0, cOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(currentCharging, 2); delay(longPressInterval); //Display settings data
}
else { //Short Press
currentCharging -= 0.01; //Increment by 0.01
currentCharging = constrain(currentCharging, 0.0, cOutSystemMax); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(currentCharging, 2); delay(shortPressInterval); //Display settings data
}
lcd.print("A "); //Display unit
}
}
}
}
///// SETTINGS MENU ITEM: COOLING FAN /////
else if (subMenuPage == 5) {
lcd.setCursor(0, 0); lcd.print("COOLING FAN ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
if (enableFan == 1) {
lcd.print("ENABLED ");
}
else {
lcd.print("DISABLE ");
}
//SET MENU - BOOLTYPE
if (setMenuPage == 0) {
boolTemp = enableFan;
}
else {
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {}
if (enableFan == 1) {
enableFan = 0;
} else {
enableFan = 1;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} enableFan = boolTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
}
}
///// SETTINGS MENU ITEM: FAN TRIG TEMP /////
else if (subMenuPage == 6) {
lcd.setCursor(0, 0); lcd.print("FAN TRIGGER TEMP");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1); lcd.print(temperatureFan);
lcd.print((char)223); lcd.print("C"); lcd.print(" ");
//SET MENU - INTTYPE
if (setMenuPage == 0) {
intTemp = temperatureFan;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} temperatureFan = intTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
while (digitalRead(buttonRight) == 1) {
temperatureFan++; //Increment by 1
temperatureFan = constrain(temperatureFan, 0, 100); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(temperatureFan); delay(shortPressInterval); //Display settings data
lcd.print((char)223); lcd.print("C "); //Display unit
}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
while (digitalRead(buttonLeft) == 1) {
temperatureFan--; //Increment by 1
temperatureFan = constrain(temperatureFan, 0, 100); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(temperatureFan); delay(shortPressInterval); //Display settings data
lcd.print((char)223); lcd.print("C "); //Display unit
}
}
}
}
///// SETTINGS MENU ITEM: SHUTDOWN TEMP /////
else if (subMenuPage == 7) {
lcd.setCursor(0, 0); lcd.print("SHUTDOWN TEMP ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1); lcd.print(temperatureMax);
lcd.print((char)223); lcd.print("C"); lcd.print(" ");
//SET MENU - INTTYPE
if (setMenuPage == 0) {
intTemp = temperatureMax;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} temperatureMax = intTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
while (digitalRead(buttonRight) == 1) {
temperatureMax++; //Increment by 1
temperatureMax = constrain(temperatureMax, 0, 120); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(temperatureMax); delay(shortPressInterval); //Display settings data
lcd.print((char)223); lcd.print("C "); //Display unit
}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
while (digitalRead(buttonLeft) == 1) {
temperatureMax--; //Increment by 1
temperatureMax = constrain(temperatureMax, 0, 120); //Limit settings values to a range
lcd.setCursor(2, 1); lcd.print(temperatureMax); delay(shortPressInterval); //Display settings data
lcd.print((char)223); lcd.print("C "); //Display unit
}
}
}
}
///// SETTINGS MENU ITEM: WIFI FEATURE /////
else if (subMenuPage == 8) {
lcd.setCursor(0, 0); lcd.print("WIFI FEATURE ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
if (enableWiFi == 1) {
lcd.print("ENABLED ");
}
else {
lcd.print("DISABLED ");
}
//SET MENU - BOOLTYPE
if (setMenuPage == 0) {
boolTemp = enableWiFi;
}
else {
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {}
if (enableWiFi == 1) {
enableWiFi = 0;
} else {
enableWiFi = 1;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} enableWiFi = boolTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
}
}
///// SETTINGS MENU ITEM: AUTOLOAD /////
else if (subMenuPage == 9) {
lcd.setCursor(0, 0); lcd.print("AUTOLOAD FEATURE");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
if (flashMemLoad == 1) {
lcd.print("ENABLED ");
}
else {
lcd.print("DISABLED ");
}
//SET MENU - BOOLTYPE
if (setMenuPage == 0) {
boolTemp = flashMemLoad;
}
else {
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {}
if (flashMemLoad == 1) {
flashMemLoad = 0;
} else {
flashMemLoad = 1;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} flashMemLoad = boolTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveAutoloadSettings();
setMenuPage = 0;
savedMessageLCD();
}
}
}
///// SETTINGS MENU ITEM: BACKLIGHT SLEEP /////
else if (subMenuPage == 10) {
lcd.setCursor(0, 0); lcd.print("BACKLIGHT SLEEP ");
if (setMenuPage == 1) {
lcd.setCursor(0, 1);
lcd.print(" >");
}
else {
lcd.setCursor(0, 1);
lcd.print("= ");
}
lcd.setCursor(2, 1);
if (backlightSleepMode == 1) {
lcd.print("10 SECONDS ");
}
else if (backlightSleepMode == 2) {
lcd.print("5 MINUTES ");
}
else if (backlightSleepMode == 3) {
lcd.print("1 HOUR ");
}
else if (backlightSleepMode == 4) {
lcd.print("6 HOURS ");
}
else if (backlightSleepMode == 5) {
lcd.print("12 HOURS ");
}
else if (backlightSleepMode == 6) {
lcd.print("1 DAY ");
}
else if (backlightSleepMode == 7) {
lcd.print("3 DAYS ");
}
else if (backlightSleepMode == 8) {
lcd.print("1 WEEK ");
}
else if (backlightSleepMode == 9) {
lcd.print("1 MONTH ");
}
else {
lcd.print("NEVER ");
}
//SET MENU - INTMODETYPE
if (setMenuPage == 0) {
intTemp = backlightSleepMode;
}
else {
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} backlightSleepMode = intTemp;
cancelledMessageLCD();
setMenuPage = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} saveSettings();
setMenuPage = 0;
savedMessageLCD();
}
if (digitalRead(buttonRight) == 1) { //Right button press (increments setting values)
backlightSleepMode++; //Increment by 1
backlightSleepMode = constrain(backlightSleepMode, 0, 9); //Limit settings values to a range
lcd.setCursor(2, 1);
if (backlightSleepMode == 1) {
lcd.print("10 SECONDS ");
}
else if (backlightSleepMode == 2) {
lcd.print("5 MINUTES ");
}
else if (backlightSleepMode == 3) {
lcd.print("1 HOUR ");
}
else if (backlightSleepMode == 4) {
lcd.print("6 HOURS ");
}
else if (backlightSleepMode == 5) {
lcd.print("12 HOURS ");
}
else if (backlightSleepMode == 6) {
lcd.print("1 DAY ");
}
else if (backlightSleepMode == 7) {
lcd.print("3 DAYS ");
}
else if (backlightSleepMode == 8) {
lcd.print("1 WEEK ");
}
else if (backlightSleepMode == 9) {
lcd.print("1 MONTH ");
}
else {
lcd.print("NEVER ");
}
while (digitalRead(buttonRight) == 1) {}
}
else if (digitalRead(buttonLeft) == 1) { //Left button press (decrements setting values)
backlightSleepMode--; //Increment by 1
backlightSleepMode = constrain(backlightSleepMode, 0, 9); //Limit settings values to a range
lcd.setCursor(2, 1);
if (backlightSleepMode == 1) {
lcd.print("10 SECONDS ");
}
else if (backlightSleepMode == 2) {
lcd.print("5 MINUTES ");
}
else if (backlightSleepMode == 3) {
lcd.print("1 HOUR ");
}
else if (backlightSleepMode == 4) {
lcd.print("6 HOURS ");
}
else if (backlightSleepMode == 5) {
lcd.print("12 HOURS ");
}
else if (backlightSleepMode == 6) {
lcd.print("1 DAY ");
}
else if (backlightSleepMode == 7) {
lcd.print("3 DAYS ");
}
else if (backlightSleepMode == 8) {
lcd.print("1 WEEK ");
}
else if (backlightSleepMode == 9) {
lcd.print("1 MONTH ");
}
else {
lcd.print("NEVER ");
}
while (digitalRead(buttonLeft) == 1) {}
}
}
}
///// SETTINGS MENU ITEM: FACTORY RESET /////
else if (subMenuPage == 11) {
if (setMenuPage == 0) {
lcd.setCursor(0, 0); lcd.print("FACTORY RESET ");
lcd.setCursor(0, 1); lcd.print("> PRESS SELECT ");
}
else {
if (confirmationMenu == 0) {
lcd.setCursor(0, 0); // Display ">No"
lcd.print(" ARE YOU SURE? ");
lcd.setCursor(0, 1);
lcd.print(" >NO YES ");
}
else {
lcd.setCursor(0, 0); // Display ">YES"
lcd.print(" ARE YOU SURE? ");
lcd.setCursor(0, 1);
lcd.print(" NO >YES ");
}
if (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {
while (digitalRead(buttonRight) == 1 || digitalRead(buttonLeft) == 1) {} if (confirmationMenu == 0) {
confirmationMenu = 1; //Cycle Yes NO
} else {
confirmationMenu = 0;
}
}
if (digitalRead(buttonBack) == 1) {
while (digitalRead(buttonBack) == 1) {} cancelledMessageLCD(); //Cancel
setMenuPage = 0;
confirmationMenu = 0;
}
if (digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonSelect) == 1) {} if (confirmationMenu == 1) {
factoryReset();
factoryResetMessageLCD();
} setMenuPage = 0;
confirmationMenu = 0;
subMenuPage = 0;
}
}
}
///// SETTINGS MENU ITEM: FIRMWARE VERSION /////
else if (subMenuPage == 12) {
if (setMenuPage == 0) {
lcd.setCursor(0, 0); lcd.print("FIRMWARE VERSION");
lcd.setCursor(0, 1); lcd.print(firmwareInfo);
lcd.setCursor(8, 1); lcd.print(firmwareDate);
}
else {
lcd.setCursor(0, 0); lcd.print(firmwareContactR1);
lcd.setCursor(0, 1); lcd.print(firmwareContactR2);
if (digitalRead(buttonBack) == 1 || digitalRead(buttonSelect) == 1) {
while (digitalRead(buttonBack) == 1 || digitalRead(buttonSelect) == 1) {} setMenuPage = 0; //Cancel
}
}
}
}
//MAIN MENU
else if (settingMode == 0) {
chargingPause = 0;
//LCD BACKLIGHT SLEEP
lcdBacklight();
//BUTTON KEYPRESS
if (digitalRead(buttonRight) == 1) {
buttonRightCommand = 1;
lcdBacklight_Wake();
}
if (digitalRead(buttonLeft) == 1) {
buttonLeftCommand = 1;
lcdBacklight_Wake();
}
if (digitalRead(buttonBack) == 1) {
buttonBackCommand = 1;
lcdBacklight_Wake();
}
if (digitalRead(buttonSelect) == 1) {
buttonSelectCommand = 1;
lcdBacklight_Wake();
}
currentLCDMillis = millis();
if (currentLCDMillis - prevLCDMillis >= millisLCDInterval && enableLCD == 1) { //Run routine every millisLCDInterval (ms)
prevLCDMillis = currentLCDMillis;
//MENU PAGE BUTTON ACTION
if (buttonRightCommand == 1) {
buttonRightCommand = 0;
menuPage++;
lcd.clear();
}
else if (buttonLeftCommand == 1) {
buttonLeftCommand = 0;
menuPage--;
lcd.clear();
}
else if (buttonBackCommand == 1) {
buttonBackCommand = 0;
menuPage = 0;
lcd.clear();
}
else if (buttonSelectCommand == 1 && menuPage == 4) {
buttonSelectCommand = 0;
settingMode = 1;
lcd.clear();
}
if (menuPage > menuPages) {
menuPage = 0;
}
else if (menuPage < 0) {
menuPage = menuPages;
}
if (menuPage == 0) {
displayConfig1();
}
else if (menuPage == 1) {
displayConfig2();
}
else if (menuPage == 2) {
displayConfig3();
}
else if (menuPage == 3) {
displayConfig4();
}
else if (menuPage == 4) {
displayConfig5();
}
}
}
}