Add short summary messages for settings

This commit is contained in:
Ben V. Brown
2017-07-07 20:47:55 +10:00
parent a9e9fb63bf
commit 03f063cbf2
3 changed files with 109 additions and 76 deletions

View File

@@ -37,7 +37,7 @@ void setup() {
readIronTemp(systemSettings.tempCalibration, 0,0); //load the default calibration value readIronTemp(systemSettings.tempCalibration, 0,0); //load the default calibration value
Init_Oled(systemSettings.flipDisplay); //Init the OLED display Init_Oled(systemSettings.flipDisplay); //Init the OLED display
OLED_DrawString("VER 1.09", 8); // OLED_DrawString("VER 1.10", 8); //Version Number
delayMs(800); //Pause to show version number delayMs(800); //Pause to show version number
Start_Watchdog(1000); //start the system watch dog as 1 second timeout Start_Watchdog(1000); //start the system watch dog as 1 second timeout
} }

View File

@@ -5,6 +5,13 @@
* Author: Ralim <ralim@ralimtek.com> * Author: Ralim <ralim@ralimtek.com>
*/ */
#include "Modes.h" #include "Modes.h"
const char *SettingsLongNames[] = { " Undervoltage Cutout",
" Sleep Temperature", " Sleep Timeout", " Shutdown Timeout",
" Motion Detection", " Motion Sensitivity",
" Temperature Unit", " Display Update Rate",
" Left Handed Display" };
const uint8_t SettingsLongNamesLengths[] =
{ 25, 23, 19, 22, 22, 24, 22, 25, 25 };
uint8_t CalStatus = 0; uint8_t CalStatus = 0;
//This does the required processing and state changes //This does the required processing and state changes
void ProcessUI() { void ProcessUI() {
@@ -297,7 +304,8 @@ void drawTemp(uint16_t temp, uint8_t x) {
* Performs all the OLED drawing for the current operating mode * Performs all the OLED drawing for the current operating mode
*/ */
void DrawUI() { void DrawUI() {
static uint32_t lastSolderingDrawTime = 0; static uint32_t lastOLEDDrawTime = 0;
static uint8_t settingsLongTestScrollPos = 0;
uint16_t temp = readIronTemp(0, 0, 0xFFFF); uint16_t temp = readIronTemp(0, 0, 0xFFFF);
switch (operatingMode) { switch (operatingMode) {
case STARTUP: case STARTUP:
@@ -316,13 +324,13 @@ void DrawUI() {
//The user is soldering //The user is soldering
{ {
if (systemSettings.displayUpdateMode == DISPLAYMODE_SLOW if (systemSettings.displayUpdateMode == DISPLAYMODE_SLOW
&& (millis() - lastSolderingDrawTime < 1000)) && (millis() - lastOLEDDrawTime < 1000))
return; return;
if (systemSettings.displayUpdateMode == DISPLAYMODE_FAST if (systemSettings.displayUpdateMode == DISPLAYMODE_FAST
|| systemSettings.displayUpdateMode == DISPLAYMODE_SLOW) { || systemSettings.displayUpdateMode == DISPLAYMODE_SLOW) {
drawTemp(temp, 0); drawTemp(temp, 0);
lastSolderingDrawTime = millis(); lastOLEDDrawTime = millis();
} }
if (systemSettings.displayUpdateMode == DISPLAYMODE_ROUND) { if (systemSettings.displayUpdateMode == DISPLAYMODE_ROUND) {
drawTemp((temp / 100) * 100, 0); drawTemp((temp / 100) * 100, 0);
@@ -370,83 +378,105 @@ void DrawUI() {
break; break;
case SETTINGS: case SETTINGS:
//We are prompting the user the setting name //We are prompting the user the setting name
if (millis() - getLastButtonPress() > 3000) {
switch (settingsPage) { //If the user has idled for > 3 seconds, show the long name for the selected setting instead
case UVCO: //draw from settingsLongTestScrollPos through to end of screen
OLED_DrawString("UVCO ", 5); uint8_t lengthLeft = SettingsLongNamesLengths[settingsPage]
OLED_DrawTwoNumber(systemSettings.cutoutVoltage, 5); - settingsLongTestScrollPos;
OLED_DrawChar('V', 7); if (lengthLeft < 1)
break; settingsLongTestScrollPos = 0;
case SLEEP_TEMP: //^ Reset once not much left
OLED_DrawString("STMP ", 5); if (lengthLeft > 8)
OLED_DrawThreeNumber(systemSettings.SleepTemp / 10, 5); lengthLeft = 8;
break; OLED_DrawString(
case SLEEP_TIME: SettingsLongNames[(uint8_t) settingsPage]
OLED_DrawString("SLTME ", 6); + settingsLongTestScrollPos, lengthLeft);
OLED_DrawTwoNumber(systemSettings.SleepTime, 6); if (lengthLeft < 8)
break; for (uint8_t i = lengthLeft; i < 8; i++)
case SHUTDOWN_TIME: OLED_DrawChar(' ', i);
OLED_DrawString("SHTME ", 6); if (millis() - lastOLEDDrawTime > 120) {
OLED_DrawTwoNumber(systemSettings.ShutdownTime, 6); settingsLongTestScrollPos++;
break; lastOLEDDrawTime = millis();
case MOTIONDETECT:/*Toggle the mode*/ }
if (systemSettings.movementEnabled) } else {
OLED_DrawString("MOTION T", 8); settingsLongTestScrollPos = 0;
else switch (settingsPage) {
OLED_DrawString("MOTION F", 8); case UVCO:
break; OLED_DrawString("UVCO ", 5);
case TEMPDISPLAY:/*Are we showing in C or F ?*/ OLED_DrawTwoNumber(systemSettings.cutoutVoltage, 5);
if (systemSettings.displayTempInF) OLED_DrawChar('V', 7);
OLED_DrawString("TMPUNT F", 8);
else
OLED_DrawString("TMPUNT C", 8);
break;
case LEFTY:
if (systemSettings.flipDisplay)
OLED_DrawString("FLPDSP T", 8);
else
OLED_DrawString("FLPDSP F", 8);
break;
case MOTIONSENSITIVITY:
switch (systemSettings.sensitivity) {
case MOTION_HIGH:
OLED_DrawString("SENSE H ", 8);
break; break;
case MOTION_MED: case SLEEP_TEMP:
OLED_DrawString("SENSE M ", 8); OLED_DrawString("STMP ", 5);
OLED_DrawThreeNumber(systemSettings.SleepTemp / 10, 5);
break; break;
case MOTION_LOW: case SLEEP_TIME:
OLED_DrawString("SENSE L ", 8); OLED_DrawString("SLTME ", 6);
OLED_DrawTwoNumber(systemSettings.SleepTime, 6);
break;
case SHUTDOWN_TIME:
OLED_DrawString("SHTME ", 6);
OLED_DrawTwoNumber(systemSettings.ShutdownTime, 6);
break;
case MOTIONDETECT:/*Toggle the mode*/
if (systemSettings.movementEnabled)
OLED_DrawString("MOTION T", 8);
else
OLED_DrawString("MOTION F", 8);
break;
case TEMPDISPLAY:/*Are we showing in C or F ?*/
if (systemSettings.displayTempInF)
OLED_DrawString("TMPUNT F", 8);
else
OLED_DrawString("TMPUNT C", 8);
break;
case LEFTY:
if (systemSettings.flipDisplay)
OLED_DrawString("FLPDSP T", 8);
else
OLED_DrawString("FLPDSP F", 8);
break;
case MOTIONSENSITIVITY:
switch (systemSettings.sensitivity) {
case MOTION_HIGH:
OLED_DrawString("SENSE H ", 8);
break;
case MOTION_MED:
OLED_DrawString("SENSE M ", 8);
break;
case MOTION_LOW:
OLED_DrawString("SENSE L ", 8);
break;
default:
OLED_DrawString("SENSE ", 8);
break;
}
break;
case DISPLAYMODE:
//We are prompting the user about their display mode preferences
{
switch (systemSettings.displayUpdateMode) {
case DISPLAYMODE_FAST:
OLED_DrawString("DISPMD F", 8);
break;
case DISPLAYMODE_SLOW:
OLED_DrawString("DISPMD S", 8);
break;
case DISPLAYMODE_ROUND:
OLED_DrawString("DISPMD R", 8);
break;
case DISPLAYMODE_NONE:
OLED_DrawString("DISPMD N", 8);
break;
}
}
break; break;
default: default:
OLED_DrawString("SENSE ", 8);
break; break;
} }
break;
case DISPLAYMODE:
//We are prompting the user about their display mode preferences
{
switch (systemSettings.displayUpdateMode) {
case DISPLAYMODE_FAST:
OLED_DrawString("DISPMD F", 8);
break;
case DISPLAYMODE_SLOW:
OLED_DrawString("DISPMD S", 8);
break;
case DISPLAYMODE_ROUND:
OLED_DrawString("DISPMD R", 8);
break;
case DISPLAYMODE_NONE:
OLED_DrawString("DISPMD N", 8);
break;
}
}
break;
default:
break;
} }
break; break;
case SLEEP: case SLEEP:
@@ -510,4 +540,5 @@ void DrawUI() {
default: default:
break; break;
} }
} }

View File

@@ -188,7 +188,9 @@ void OLED_DrawChar(char c, uint8_t x) {
x *= FONT_WIDTH; //convert to a x coordinate x *= FONT_WIDTH; //convert to a x coordinate
u8* ptr = (u8*) FONT; u8* ptr = (u8*) FONT;
if (c >= 'A' && c <= 'Z') { if (c >= 'a' && c <= 'z') {
ptr += (c - 'a' + 10) * (FONT_WIDTH * 2); //alpha is ofset 10 chars into the array
} else if (c >= 'A' && c <= 'Z') {
ptr += (c - 'A' + 10) * (FONT_WIDTH * 2); //alpha is ofset 10 chars into the array ptr += (c - 'A' + 10) * (FONT_WIDTH * 2); //alpha is ofset 10 chars into the array
} else if (c >= '0' && c <= '9') } else if (c >= '0' && c <= '9')
ptr += (c - '0') * (FONT_WIDTH * 2); ptr += (c - '0') * (FONT_WIDTH * 2);