From f14ea321a774ba5418626078e9376ac5cdc92a21 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 3 Mar 2018 16:20:01 +1100 Subject: [PATCH] Add detailed soldering screen This adds a detailed soldering screen to take a step towards #181 --- workspace/TS100/inc/Translation.h | 1 + workspace/TS100/src/Translation.c | 15 ++++ workspace/TS100/src/main.cpp | 122 ++++++++++++++++++------------ 3 files changed, 91 insertions(+), 47 deletions(-) diff --git a/workspace/TS100/inc/Translation.h b/workspace/TS100/inc/Translation.h index bea1e703..a93d7717 100644 --- a/workspace/TS100/inc/Translation.h +++ b/workspace/TS100/inc/Translation.h @@ -35,6 +35,7 @@ extern const char* SleepingTipAdvancedString; extern const char* IdleTipString; extern const char* IdleSetString; extern const char* TipDisconnectedString; +extern const char* SolderingAdvancedPowerPrompt; extern const char SettingTrueChar; extern const char SettingFalseChar; diff --git a/workspace/TS100/src/Translation.c b/workspace/TS100/src/Translation.c index 9eba8093..d8663777 100644 --- a/workspace/TS100/src/Translation.c +++ b/workspace/TS100/src/Translation.c @@ -86,6 +86,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -149,6 +150,7 @@ cconst char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; /* * #TODO change support for multibyte constants here @@ -218,6 +220,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -281,6 +284,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -344,6 +348,7 @@ const char* SleepingTipAdvancedString = "Punta:"; // <=6 chars const char* IdleTipString = "Pun:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Prev:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "PUNTA ASSENTE"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'D'; const char SettingLeftChar = 'S'; @@ -407,6 +412,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'D'; const char SettingLeftChar = 'G'; @@ -470,6 +476,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -533,6 +540,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -596,6 +604,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -659,6 +668,7 @@ const char* SleepingTipAdvancedString = "Vrh: "; // <=6 chars const char* IdleTipString = "Vrh: "; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " / "; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "VRH NIJE SPOJEN!"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'D'; const char SettingLeftChar = 'L'; @@ -722,6 +732,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'P'; const char SettingLeftChar = 'L'; @@ -785,6 +796,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'R'; const char SettingLeftChar = 'L'; @@ -848,6 +860,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'H'; const char SettingLeftChar = 'V'; @@ -911,6 +924,7 @@ const char* SleepingTipAdvancedString = "Tip:"; // <=6 chars const char* IdleTipString = "Tip:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Set:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "TIP DISCONNECTED"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'P'; const char SettingLeftChar = 'L'; @@ -975,6 +989,7 @@ const char* SleepingTipAdvancedString = "Ponta:"; // <=6 chars const char* IdleTipString = "Ponta:"; // IdleTipString+IdleSetString <= 10 const char* IdleSetString = " Aj:"; // preferably start with a space; IdleTipString+IdleSetString <= 10 const char* TipDisconnectedString = "SEM PONTA"; // <=16 chars +const char* SolderingAdvancedPowerPrompt = "Power: "; const char SettingRightChar = 'D'; const char SettingLeftChar = 'C'; diff --git a/workspace/TS100/src/main.cpp b/workspace/TS100/src/main.cpp index 5ef21e3c..351bb4a3 100644 --- a/workspace/TS100/src/main.cpp +++ b/workspace/TS100/src/main.cpp @@ -312,7 +312,7 @@ static void gui_solderingTempAdjust() { if (xTaskGetTickCount() - lastChange > 200) return; // exit if user just doesn't press anything for a bit - lcd.drawChar('<'); + lcd.drawChar('-'); lcd.drawChar(' '); lcd.printNumber(systemSettings.SolderingTemp, 3); if (systemSettings.temperatureInF) @@ -320,7 +320,7 @@ static void gui_solderingTempAdjust() { else lcd.drawSymbol(1); lcd.drawChar(' '); - lcd.drawChar('>'); + lcd.drawChar('+'); lcd.refresh(); GUIDelay(); } @@ -592,59 +592,87 @@ static void gui_solderingMode() { waitForButtonPress(); return; } else { - // We switch the layout direction depending on the orientation of the lcd. - if (lcd.getRotation()) { - // battery - gui_drawBatteryIcon(); + if (systemSettings.detailedSoldering) { + lcd.setFont(1); + lcd.print(SolderingAdvancedPowerPrompt); //Power: + lcd.printNumber(getTipPWM(), 3); + lcd.print("%"); - lcd.drawChar(' '); // Space out gap between battery <-> temp - if (systemSettings.temperatureInF) { - gui_drawTipTemp(); // Draw current tip temp - lcd.drawSymbol(0); // deg F - } else { - gui_drawTipTemp(); // Draw current tip temp - lcd.drawSymbol(1); // deg C - } + lcd.setCursor(0, 8); + lcd.print(SleepingTipAdvancedString); + uint16_t Temp = getTipRawTemp(0); - // We draw boost arrow if boosting, or else gap temp <-> heat indicator - if (boostModeOn) - lcd.drawSymbol(2); + if (systemSettings.temperatureInF) + Temp = tipMeasurementToF(Temp); else - lcd.drawChar(' '); - - // Draw heating/cooling symbols - // If tip PWM > 10% then we are 'heating' - if (getTipPWM() > 10) - lcd.drawSymbol(14); + Temp = tipMeasurementToC(Temp); + lcd.printNumber(Temp, 3); + if (systemSettings.temperatureInF) + lcd.print("F"); else - lcd.drawSymbol(15); + lcd.print("C"); + + lcd.print(" "); + lcd.printNumber( + getInputVoltageX10(systemSettings.voltageDiv) / 10, 2); + lcd.drawChar('.'); + lcd.printNumber( + getInputVoltageX10(systemSettings.voltageDiv) % 10, 1); + lcd.drawChar('V'); } else { - // Draw heating/cooling symbols - // If tip PWM > 10% then we are 'heating' - if (getTipPWM() > 10) - lcd.drawSymbol(14); - else - lcd.drawSymbol(15); - // We draw boost arrow if boosting, or else gap temp <-> heat indicator - if (boostModeOn) - lcd.drawSymbol(2); - else - lcd.drawChar(' '); + // We switch the layout direction depending on the orientation of the lcd. + if (lcd.getRotation()) { + // battery + gui_drawBatteryIcon(); - if (systemSettings.temperatureInF) { - gui_drawTipTemp(); // Draw current tip temp - lcd.drawSymbol(0); // deg F + lcd.drawChar(' '); // Space out gap between battery <-> temp + if (systemSettings.temperatureInF) { + gui_drawTipTemp(); // Draw current tip temp + lcd.drawSymbol(0); // deg F + } else { + gui_drawTipTemp(); // Draw current tip temp + lcd.drawSymbol(1); // deg C + } + + // We draw boost arrow if boosting, or else gap temp <-> heat indicator + if (boostModeOn) + lcd.drawSymbol(2); + else + lcd.drawChar(' '); + + // Draw heating/cooling symbols + // If tip PWM > 10% then we are 'heating' + if (getTipPWM() > 10) + lcd.drawSymbol(14); + else + lcd.drawSymbol(15); } else { - gui_drawTipTemp(); // Draw current tip temp - lcd.drawSymbol(1); // deg C + // Draw heating/cooling symbols + // If tip PWM > 10% then we are 'heating' + if (getTipPWM() > 10) + lcd.drawSymbol(14); + else + lcd.drawSymbol(15); + // We draw boost arrow if boosting, or else gap temp <-> heat indicator + if (boostModeOn) + lcd.drawSymbol(2); + else + lcd.drawChar(' '); + + if (systemSettings.temperatureInF) { + gui_drawTipTemp(); // Draw current tip temp + lcd.drawSymbol(0); // deg F + } else { + gui_drawTipTemp(); // Draw current tip temp + lcd.drawSymbol(1); // deg C + } + + lcd.drawChar(' '); // Space out gap between battery <-> temp + + gui_drawBatteryIcon(); } - - lcd.drawChar(' '); // Space out gap between battery <-> temp - - gui_drawBatteryIcon(); } } - // Update the setpoints for the temperature if (boostModeOn) { if (systemSettings.temperatureInF) @@ -990,7 +1018,7 @@ void startMOVTask(void const *argument) { lcd.print(" "); lcd.printNumber(abs(avgy - (int32_t) ty), 5); if ((abs(avgx - tx) + abs(avgy - ty) + abs(avgz - tz)) > max) - max = (abs(avgx - tx) + abs(avgy - ty) + abs(avgz - tz)); + max = (abs(avgx - tx) + abs(avgy - ty) + abs(avgz - tz)); lcd.setCursor(0, 8); lcd.printNumber(max, 5); lcd.print(" "); @@ -998,7 +1026,7 @@ void startMOVTask(void const *argument) { lcd.printNumber((abs(avgx - tx) + abs(avgy - ty) + abs(avgz - tz)), 5); lcd.refresh(); if (HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET) - max = 0; + max = 0; #endif // Only run the actual processing if the sensitivity is set (aka we are // enabled)