1019 lines
37 KiB
C++
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();
|
|
}
|
|
}
|
|
}
|
|
}
|