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
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
Start_Watchdog(1000); //start the system watch dog as 1 second timeout
}

View File

@@ -5,6 +5,13 @@
* Author: Ralim <ralim@ralimtek.com>
*/
#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;
//This does the required processing and state changes
void ProcessUI() {
@@ -297,7 +304,8 @@ void drawTemp(uint16_t temp, uint8_t x) {
* Performs all the OLED drawing for the current operating mode
*/
void DrawUI() {
static uint32_t lastSolderingDrawTime = 0;
static uint32_t lastOLEDDrawTime = 0;
static uint8_t settingsLongTestScrollPos = 0;
uint16_t temp = readIronTemp(0, 0, 0xFFFF);
switch (operatingMode) {
case STARTUP:
@@ -316,13 +324,13 @@ void DrawUI() {
//The user is soldering
{
if (systemSettings.displayUpdateMode == DISPLAYMODE_SLOW
&& (millis() - lastSolderingDrawTime < 1000))
&& (millis() - lastOLEDDrawTime < 1000))
return;
if (systemSettings.displayUpdateMode == DISPLAYMODE_FAST
|| systemSettings.displayUpdateMode == DISPLAYMODE_SLOW) {
drawTemp(temp, 0);
lastSolderingDrawTime = millis();
lastOLEDDrawTime = millis();
}
if (systemSettings.displayUpdateMode == DISPLAYMODE_ROUND) {
drawTemp((temp / 100) * 100, 0);
@@ -370,7 +378,28 @@ void DrawUI() {
break;
case SETTINGS:
//We are prompting the user the setting name
if (millis() - getLastButtonPress() > 3000) {
//If the user has idled for > 3 seconds, show the long name for the selected setting instead
//draw from settingsLongTestScrollPos through to end of screen
uint8_t lengthLeft = SettingsLongNamesLengths[settingsPage]
- settingsLongTestScrollPos;
if (lengthLeft < 1)
settingsLongTestScrollPos = 0;
//^ Reset once not much left
if (lengthLeft > 8)
lengthLeft = 8;
OLED_DrawString(
SettingsLongNames[(uint8_t) settingsPage]
+ settingsLongTestScrollPos, lengthLeft);
if (lengthLeft < 8)
for (uint8_t i = lengthLeft; i < 8; i++)
OLED_DrawChar(' ', i);
if (millis() - lastOLEDDrawTime > 120) {
settingsLongTestScrollPos++;
lastOLEDDrawTime = millis();
}
} else {
settingsLongTestScrollPos = 0;
switch (settingsPage) {
case UVCO:
OLED_DrawString("UVCO ", 5);
@@ -448,6 +477,7 @@ void DrawUI() {
default:
break;
}
}
break;
case SLEEP:
//The iron is in sleep temp mode
@@ -510,4 +540,5 @@ void DrawUI() {
default:
break;
}
}

View File

@@ -188,7 +188,9 @@ void OLED_DrawChar(char c, uint8_t x) {
x *= FONT_WIDTH; //convert to a x coordinate
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
} else if (c >= '0' && c <= '9')
ptr += (c - '0') * (FONT_WIDTH * 2);