Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d536fb33de | ||
|
|
fa717b2741 | ||
|
|
0a7b6145af |
@@ -11,7 +11,9 @@ void delayMs(uint32_t ticks);
|
|||||||
volatile extern uint32_t lastKeyPress;
|
volatile extern uint32_t lastKeyPress;
|
||||||
volatile extern uint32_t lastMovement;
|
volatile extern uint32_t lastMovement;
|
||||||
|
|
||||||
volatile extern uint16_t keyState;
|
volatile extern uint8_t keyState;
|
||||||
|
volatile extern uint8_t rawKeys;
|
||||||
|
|
||||||
inline uint32_t millis() {
|
inline uint32_t millis() {
|
||||||
return system_Ticks;
|
return system_Ticks;
|
||||||
}
|
}
|
||||||
@@ -34,6 +36,10 @@ inline uint32_t getLastMovement() {
|
|||||||
inline uint16_t getButtons() {
|
inline uint16_t getButtons() {
|
||||||
return keyState;
|
return keyState;
|
||||||
}
|
}
|
||||||
|
inline uint16_t getRawButtons() {
|
||||||
|
return rawKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*IRQ prototypes*/
|
/*IRQ prototypes*/
|
||||||
void NMI_Handler(void);
|
void NMI_Handler(void);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ enum {
|
|||||||
TEMPCAL, //Cal tip temp offset
|
TEMPCAL, //Cal tip temp offset
|
||||||
|
|
||||||
} operatingMode;
|
} operatingMode;
|
||||||
#define SETTINGSOPTIONSCOUNT 9 /*Number of settings in the settings menu*/
|
#define SETTINGSOPTIONSCOUNT 11 /*Number of settings in the settings menu*/
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
UVCO = 0,
|
UVCO = 0,
|
||||||
@@ -42,6 +42,8 @@ enum {
|
|||||||
TEMPROUNDING,
|
TEMPROUNDING,
|
||||||
DISPUPDATERATE,
|
DISPUPDATERATE,
|
||||||
LEFTY,
|
LEFTY,
|
||||||
|
BOOSTMODE,
|
||||||
|
BOOSTTEMP,
|
||||||
} settingsPage;
|
} settingsPage;
|
||||||
|
|
||||||
void ProcessUI();
|
void ProcessUI();
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#define SETTINGS_H_
|
#define SETTINGS_H_
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "stm32f10x_flash.h"
|
#include "stm32f10x_flash.h"
|
||||||
#define SETTINGSVERSION 0x08 /*Change this if you change the struct below to prevent people getting out of sync*/
|
#define SETTINGSVERSION 10 /*Change this if you change the struct below to prevent people getting out of sync*/
|
||||||
//Motion Sensitivity
|
//Motion Sensitivity
|
||||||
#define MOTION_HIGH (0x00)
|
#define MOTION_HIGH (0x00)
|
||||||
#define MOTION_MED (0x01)
|
#define MOTION_MED (0x01)
|
||||||
@@ -25,12 +25,11 @@
|
|||||||
#define ROUNDING_FIVE (0x01)
|
#define ROUNDING_FIVE (0x01)
|
||||||
#define ROUNDING_TEN (0x02)
|
#define ROUNDING_TEN (0x02)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This struct must be a multiple of 2 bytes as it is saved / restored from flash in uint16_t chunks
|
* This struct must be a multiple of 2 bytes as it is saved / restored from flash in uint16_t chunks
|
||||||
*/
|
*/
|
||||||
struct {
|
struct {
|
||||||
uint32_t SolderingTemp; //current set point for the iron
|
uint16_t SolderingTemp; //current set point for the iron
|
||||||
uint32_t SleepTemp; //temp to drop to in sleep
|
uint32_t SleepTemp; //temp to drop to in sleep
|
||||||
uint8_t version; //Used to track if a reset is needed on firmware upgrade
|
uint8_t version; //Used to track if a reset is needed on firmware upgrade
|
||||||
uint8_t SleepTime; //minutes timeout to sleep
|
uint8_t SleepTime; //minutes timeout to sleep
|
||||||
@@ -38,12 +37,14 @@ struct {
|
|||||||
uint8_t movementEnabled:1; //If movement is enabled
|
uint8_t movementEnabled:1; //If movement is enabled
|
||||||
uint8_t displayTempInF:1; //If we need to convert the C reading to F
|
uint8_t displayTempInF:1; //If we need to convert the C reading to F
|
||||||
uint8_t flipDisplay:1; //If true we want to invert the display for lefties
|
uint8_t flipDisplay:1; //If true we want to invert the display for lefties
|
||||||
uint8_t sensitivity:6; //Sensitivity of accelerometer
|
uint8_t sensitivity:5; //Sensitivity of accelerometer
|
||||||
uint8_t ShutdownTime:6; //Time until unit shuts down if left alone
|
uint8_t ShutdownTime:6; //Time until unit shuts down if left alone
|
||||||
uint8_t displayUpdateSpeed:2; //How fast the display updates / temp showing mode
|
uint8_t displayUpdateSpeed:2; //How fast the display updates / temp showing mode
|
||||||
uint8_t temperatureRounding:2; //Rounding mode for the temperature
|
uint8_t temperatureRounding:2; //Rounding mode for the temperature
|
||||||
|
uint8_t boostModeEnabled:1; //Boost mode swaps BUT_A in soldering mode to temporary soldering temp over-ride
|
||||||
uint16_t tempCalibration; //Temperature calibration value
|
uint16_t tempCalibration; //Temperature calibration value
|
||||||
uint16_t voltageDiv; //Voltage divisor factor
|
uint16_t voltageDiv; //Voltage divisor factor
|
||||||
|
uint16_t BoostTemp; //Boost mode set point for the iron
|
||||||
} systemSettings;
|
} systemSettings;
|
||||||
|
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
volatile uint32_t system_Ticks;
|
volatile uint32_t system_Ticks;
|
||||||
volatile uint32_t lastKeyPress; //millis() at the last button event
|
volatile uint32_t lastKeyPress; //millis() at the last button event
|
||||||
volatile uint16_t keyState; //tracks the button status
|
volatile uint8_t keyState; //tracks the button status
|
||||||
|
volatile uint8_t rawKeys;
|
||||||
volatile uint32_t lastMovement; //millis() at last movement event
|
volatile uint32_t lastMovement; //millis() at last movement event
|
||||||
|
|
||||||
//Delay in milliseconds using systemTick
|
//Delay in milliseconds using systemTick
|
||||||
@@ -55,18 +56,24 @@ void EXTI9_5_IRQHandler(void) {
|
|||||||
//we are interested in line 9 and line 6 for buttons
|
//we are interested in line 9 and line 6 for buttons
|
||||||
//Line 5 == movement
|
//Line 5 == movement
|
||||||
if (EXTI_GetITStatus(EXTI_Line9) != RESET) {
|
if (EXTI_GetITStatus(EXTI_Line9) != RESET) {
|
||||||
if (GPIO_ReadInputDataBit(GPIOA, KEY_A) == SET)
|
if (GPIO_ReadInputDataBit(GPIOA, KEY_A) == SET) {
|
||||||
keyState &= ~(BUT_A);
|
keyState &= ~(BUT_A);
|
||||||
else
|
rawKeys &= ~BUT_A;
|
||||||
|
} else {
|
||||||
keyState |= BUT_A;
|
keyState |= BUT_A;
|
||||||
lastKeyPress = millis();
|
rawKeys |= BUT_A;
|
||||||
|
lastKeyPress = millis();
|
||||||
|
}
|
||||||
EXTI_ClearITPendingBit(EXTI_Line9);
|
EXTI_ClearITPendingBit(EXTI_Line9);
|
||||||
} else if (EXTI_GetITStatus(EXTI_Line6) != RESET) {
|
} else if (EXTI_GetITStatus(EXTI_Line6) != RESET) {
|
||||||
if (GPIO_ReadInputDataBit(GPIOA, KEY_B) == SET)
|
if (GPIO_ReadInputDataBit(GPIOA, KEY_B) == SET) {
|
||||||
keyState &= ~(BUT_B);
|
keyState &= ~(BUT_B);
|
||||||
else
|
rawKeys &= ~BUT_B;
|
||||||
|
} else {
|
||||||
keyState |= BUT_B;
|
keyState |= BUT_B;
|
||||||
lastKeyPress = millis();
|
rawKeys |= BUT_B;
|
||||||
|
lastKeyPress = millis();
|
||||||
|
}
|
||||||
EXTI_ClearITPendingBit(EXTI_Line6);
|
EXTI_ClearITPendingBit(EXTI_Line6);
|
||||||
} else if (EXTI_GetITStatus(EXTI_Line5) != RESET) { //Movement Event
|
} else if (EXTI_GetITStatus(EXTI_Line5) != RESET) { //Movement Event
|
||||||
lastMovement = millis();
|
lastMovement = millis();
|
||||||
@@ -205,4 +212,3 @@ void USB_LP_CAN1_RX0_IRQHandler(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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.10", 8); //Version Number
|
OLED_DrawString("VER 1.11", 8); //Version Number
|
||||||
delayMs(500); //Pause to show version number
|
delayMs(500); //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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,16 +5,19 @@
|
|||||||
* Author: Ralim <ralim@ralimtek.com>
|
* Author: Ralim <ralim@ralimtek.com>
|
||||||
*/
|
*/
|
||||||
#include "Modes.h"
|
#include "Modes.h"
|
||||||
const char *SettingsLongNames[] = { " Undervoltage Cutout (V)",
|
const char *SettingsLongNames[] = { " Undervoltage Cutout <V>",
|
||||||
" Sleep Temperature (C)", " Sleep Timeout (Minutes)",
|
" Sleep Temperature <C>", " Sleep Timeout <Minutes>",
|
||||||
" Shutdown Timeout (Minutes)", " Motion Detection",
|
" Shutdown Timeout <Minutes>", " Motion Detection",
|
||||||
" Motion Sensitivity", " Temperature Unit",
|
" Motion Sensitivity", " Temperature Unit",
|
||||||
" Temperature Rounding Amount",
|
" Temperature Rounding Amount",
|
||||||
" Temperature Display Update Rate",
|
" Temperature Display Update Rate",
|
||||||
" Flip Display for Left Hand" };
|
" Flip Display for Left Hand",
|
||||||
|
" Enable front key boost 450C mode when soldering",
|
||||||
|
" Temperature when in boost mode" };
|
||||||
const uint8_t SettingsLongNamesLengths[] = { 29, 27, 29, 32, 22, 24, 22, 33, 37,
|
const uint8_t SettingsLongNamesLengths[] = { 29, 27, 29, 32, 22, 24, 22, 33, 37,
|
||||||
25 };
|
32, 53, 36 };
|
||||||
uint8_t CalStatus = 0;
|
uint8_t StatusFlags = 0;
|
||||||
|
uint32_t temporaryTempStorage = 0;
|
||||||
//This does the required processing and state changes
|
//This does the required processing and state changes
|
||||||
void ProcessUI() {
|
void ProcessUI() {
|
||||||
uint8_t Buttons = getButtons(); //read the buttons status
|
uint8_t Buttons = getButtons(); //read the buttons status
|
||||||
@@ -41,15 +44,43 @@ void ProcessUI() {
|
|||||||
break;
|
break;
|
||||||
case SOLDERING:
|
case SOLDERING:
|
||||||
//We need to check the buttons if we need to jump out
|
//We need to check the buttons if we need to jump out
|
||||||
if (Buttons == BUT_A || Buttons == BUT_B) {
|
if ((Buttons == BUT_A && !systemSettings.boostModeEnabled)
|
||||||
|
|| Buttons == BUT_B) {
|
||||||
//A or B key pressed so we are moving to temp set
|
//A or B key pressed so we are moving to temp set
|
||||||
operatingMode = TEMP_ADJ;
|
operatingMode = TEMP_ADJ;
|
||||||
|
if (StatusFlags == 8) {
|
||||||
|
//Boost mode was enabled before
|
||||||
|
//We need to cancel the temp
|
||||||
|
systemSettings.SolderingTemp = temporaryTempStorage;
|
||||||
|
StatusFlags = 0;
|
||||||
|
}
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
|
|
||||||
//Both buttons were pressed, exit back to the cooling screen
|
//Both buttons were pressed, exit back to the cooling screen
|
||||||
operatingMode = COOLING;
|
operatingMode = COOLING;
|
||||||
|
if (StatusFlags == 8) {
|
||||||
|
//Boost mode was enabled before
|
||||||
|
//We need to cancel the temp
|
||||||
|
systemSettings.SolderingTemp = temporaryTempStorage;
|
||||||
|
StatusFlags = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ((getRawButtons() == BUT_A && systemSettings.boostModeEnabled)) {
|
||||||
|
if (StatusFlags != 8) {
|
||||||
|
StatusFlags = 8;
|
||||||
|
temporaryTempStorage = systemSettings.SolderingTemp;
|
||||||
|
systemSettings.SolderingTemp = systemSettings.BoostTemp;
|
||||||
|
}
|
||||||
|
//Update the PID Loop
|
||||||
|
int32_t newOutput = computePID(systemSettings.SolderingTemp);
|
||||||
|
setIronTimer(newOutput);
|
||||||
} else {
|
} else {
|
||||||
|
if (StatusFlags == 8) {
|
||||||
|
//Boost mode was enabled before
|
||||||
|
//We need to cancel the temp
|
||||||
|
systemSettings.SolderingTemp = temporaryTempStorage;
|
||||||
|
StatusFlags = 0;
|
||||||
|
}
|
||||||
//We need to check the timer for movement in case we need to goto idle
|
//We need to check the timer for movement in case we need to goto idle
|
||||||
if (systemSettings.movementEnabled)
|
if (systemSettings.movementEnabled)
|
||||||
if (millis() - getLastMovement()
|
if (millis() - getLastMovement()
|
||||||
@@ -94,70 +125,83 @@ void ProcessUI() {
|
|||||||
case SETTINGS:
|
case SETTINGS:
|
||||||
//Settings is the mode with the most logic
|
//Settings is the mode with the most logic
|
||||||
//Here we are in the menu so we need to increment through the sub menus / increase the value
|
//Here we are in the menu so we need to increment through the sub menus / increase the value
|
||||||
|
if (StatusFlags == 4 && Buttons != 0) {
|
||||||
|
//The user pressed the button to breakout of the settings help prompt
|
||||||
|
StatusFlags = 0;
|
||||||
|
} else {
|
||||||
|
if (Buttons & BUT_A) {
|
||||||
|
//A key iterates through the menu
|
||||||
|
if (settingsPage == SETTINGSOPTIONSCOUNT) {
|
||||||
|
//Roll off the end
|
||||||
|
settingsPage = 0; //reset
|
||||||
|
operatingMode = STARTUP; //reset back to the startup
|
||||||
|
saveSettings(); //Save the settings
|
||||||
|
} else {
|
||||||
|
++settingsPage; //move to the next option
|
||||||
|
}
|
||||||
|
} else if (Buttons & BUT_B) {
|
||||||
|
//B changes the value selected
|
||||||
|
switch (settingsPage) {
|
||||||
|
case UVCO:
|
||||||
|
//we are incrementing the cutout voltage
|
||||||
|
systemSettings.cutoutVoltage += 1; //Go up 1V at a jump
|
||||||
|
if (systemSettings.cutoutVoltage > 24)
|
||||||
|
systemSettings.cutoutVoltage = 10;
|
||||||
|
break;
|
||||||
|
case SLEEP_TEMP:
|
||||||
|
systemSettings.SleepTemp += 100; //Go up 10C at a time
|
||||||
|
if (systemSettings.SleepTemp > 3000)
|
||||||
|
systemSettings.SleepTemp = 1000;//cant sleep higher than 300
|
||||||
|
break;
|
||||||
|
case SLEEP_TIME:
|
||||||
|
++systemSettings.SleepTime; //Go up 1 minute at a time
|
||||||
|
if (systemSettings.SleepTime > 30)
|
||||||
|
systemSettings.SleepTime = 1;//cant set time over 30 mins
|
||||||
|
//Remember that ^ is the time of no movement
|
||||||
|
break;
|
||||||
|
case SHUTDOWN_TIME:
|
||||||
|
++systemSettings.ShutdownTime;
|
||||||
|
if (systemSettings.ShutdownTime > 60)
|
||||||
|
systemSettings.ShutdownTime = 0; //wrap to off
|
||||||
|
break;
|
||||||
|
case MOTIONDETECT:
|
||||||
|
systemSettings.movementEnabled =
|
||||||
|
!systemSettings.movementEnabled;
|
||||||
|
break;
|
||||||
|
case TEMPDISPLAY:
|
||||||
|
systemSettings.displayTempInF =
|
||||||
|
!systemSettings.displayTempInF;
|
||||||
|
break;
|
||||||
|
case LEFTY:
|
||||||
|
systemSettings.flipDisplay = !systemSettings.flipDisplay;
|
||||||
|
break;
|
||||||
|
case MOTIONSENSITIVITY:
|
||||||
|
systemSettings.sensitivity++;
|
||||||
|
systemSettings.sensitivity = systemSettings.sensitivity % 3;
|
||||||
|
|
||||||
if (Buttons & BUT_A) {
|
break;
|
||||||
//A key iterates through the menu
|
case TEMPROUNDING:
|
||||||
if (settingsPage == SETTINGSOPTIONSCOUNT) {
|
systemSettings.temperatureRounding++;
|
||||||
//Roll off the end
|
systemSettings.temperatureRounding =
|
||||||
settingsPage = 0; //reset
|
systemSettings.temperatureRounding % 3;
|
||||||
operatingMode = STARTUP; //reset back to the startup
|
break;
|
||||||
saveSettings(); //Save the settings
|
case DISPUPDATERATE:
|
||||||
} else {
|
systemSettings.displayUpdateSpeed++;
|
||||||
++settingsPage; //move to the next option
|
systemSettings.displayUpdateSpeed =
|
||||||
}
|
systemSettings.displayUpdateSpeed % 3;
|
||||||
} else if (Buttons & BUT_B) {
|
break;
|
||||||
//B changes the value selected
|
case BOOSTMODE:
|
||||||
switch (settingsPage) {
|
systemSettings.boostModeEnabled =
|
||||||
case UVCO:
|
!systemSettings.boostModeEnabled;
|
||||||
//we are incrementing the cutout voltage
|
break;
|
||||||
systemSettings.cutoutVoltage += 1; //Go up 1V at a jump
|
case BOOSTTEMP:
|
||||||
if (systemSettings.cutoutVoltage > 24)
|
systemSettings.BoostTemp += 100; //Go up 10C at a time
|
||||||
systemSettings.cutoutVoltage = 10;
|
if (systemSettings.BoostTemp > 4500)
|
||||||
break;
|
systemSettings.BoostTemp = 2500; //loop back at 250
|
||||||
case SLEEP_TEMP:
|
break;
|
||||||
systemSettings.SleepTemp += 100; //Go up 10C at a time
|
default:
|
||||||
if (systemSettings.SleepTemp > 3000)
|
break;
|
||||||
systemSettings.SleepTemp = 1000;//cant sleep higher than 300
|
}
|
||||||
break;
|
|
||||||
case SLEEP_TIME:
|
|
||||||
++systemSettings.SleepTime; //Go up 1 minute at a time
|
|
||||||
if (systemSettings.SleepTime > 30)
|
|
||||||
systemSettings.SleepTime = 1; //cant set time over 30 mins
|
|
||||||
//Remember that ^ is the time of no movement
|
|
||||||
break;
|
|
||||||
case SHUTDOWN_TIME:
|
|
||||||
++systemSettings.ShutdownTime;
|
|
||||||
if (systemSettings.ShutdownTime > 60)
|
|
||||||
systemSettings.ShutdownTime = 0; //wrap to off
|
|
||||||
break;
|
|
||||||
case MOTIONDETECT:
|
|
||||||
systemSettings.movementEnabled =
|
|
||||||
!systemSettings.movementEnabled;
|
|
||||||
break;
|
|
||||||
case TEMPDISPLAY:
|
|
||||||
systemSettings.displayTempInF = !systemSettings.displayTempInF;
|
|
||||||
break;
|
|
||||||
case LEFTY:
|
|
||||||
systemSettings.flipDisplay = !systemSettings.flipDisplay;
|
|
||||||
break;
|
|
||||||
case MOTIONSENSITIVITY:
|
|
||||||
systemSettings.sensitivity++;
|
|
||||||
systemSettings.sensitivity = systemSettings.sensitivity % 3;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case TEMPROUNDING:
|
|
||||||
systemSettings.temperatureRounding++;
|
|
||||||
systemSettings.temperatureRounding =
|
|
||||||
systemSettings.temperatureRounding % 3;
|
|
||||||
break;
|
|
||||||
case DISPUPDATERATE:
|
|
||||||
systemSettings.displayUpdateSpeed++;
|
|
||||||
systemSettings.displayUpdateSpeed =
|
|
||||||
systemSettings.displayUpdateSpeed % 3;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -217,10 +261,10 @@ void ProcessUI() {
|
|||||||
|
|
||||||
if (Buttons == BUT_A) {
|
if (Buttons == BUT_A) {
|
||||||
//Single button press, cycle over to the DC display
|
//Single button press, cycle over to the DC display
|
||||||
CalStatus = 0;
|
StatusFlags = 0;
|
||||||
operatingMode = DCINDISP;
|
operatingMode = DCINDISP;
|
||||||
} else if (Buttons == BUT_B) {
|
} else if (Buttons == BUT_B) {
|
||||||
CalStatus = 0;
|
StatusFlags = 0;
|
||||||
operatingMode = TEMPCAL;
|
operatingMode = TEMPCAL;
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
//If the user is holding both button, exit the screen
|
//If the user is holding both button, exit the screen
|
||||||
@@ -231,13 +275,13 @@ void ProcessUI() {
|
|||||||
break;
|
break;
|
||||||
case DCINDISP: {
|
case DCINDISP: {
|
||||||
//This lets the user check the input voltage
|
//This lets the user check the input voltage
|
||||||
if (CalStatus == 0) {
|
if (StatusFlags == 0) {
|
||||||
if (Buttons == BUT_A) {
|
if (Buttons == BUT_A) {
|
||||||
//Single button press, cycle over to the temp display
|
//Single button press, cycle over to the temp display
|
||||||
operatingMode = THERMOMETER;
|
operatingMode = THERMOMETER;
|
||||||
} else if (Buttons == BUT_B) {
|
} else if (Buttons == BUT_B) {
|
||||||
//dc cal mode
|
//dc cal mode
|
||||||
CalStatus = 1;
|
StatusFlags = 1;
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
//If the user is holding both button, exit the screen
|
//If the user is holding both button, exit the screen
|
||||||
operatingMode = STARTUP;
|
operatingMode = STARTUP;
|
||||||
@@ -255,7 +299,7 @@ void ProcessUI() {
|
|||||||
else
|
else
|
||||||
systemSettings.voltageDiv++;
|
systemSettings.voltageDiv++;
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
CalStatus = 0;
|
StatusFlags = 0;
|
||||||
saveSettings();
|
saveSettings();
|
||||||
}
|
}
|
||||||
if (systemSettings.voltageDiv < 120)
|
if (systemSettings.voltageDiv < 120)
|
||||||
@@ -272,13 +316,13 @@ void ProcessUI() {
|
|||||||
operatingMode = THERMOMETER;
|
operatingMode = THERMOMETER;
|
||||||
} else if (Buttons == BUT_A) {
|
} else if (Buttons == BUT_A) {
|
||||||
//Try and calibrate
|
//Try and calibrate
|
||||||
if (CalStatus == 0) {
|
if (StatusFlags == 0) {
|
||||||
if ((readTipTemp() < 300) && (readSensorTemp() < 300)) {
|
if ((readTipTemp() < 300) && (readSensorTemp() < 300)) {
|
||||||
CalStatus = 1;
|
StatusFlags = 1;
|
||||||
systemSettings.tempCalibration = readTipTemp();
|
systemSettings.tempCalibration = readTipTemp();
|
||||||
saveSettings();
|
saveSettings();
|
||||||
} else {
|
} else {
|
||||||
CalStatus = 2;
|
StatusFlags = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
@@ -358,7 +402,11 @@ void DrawUI() {
|
|||||||
lastSolderingDrawnTemp2 = lastSolderingDrawnTemp1;
|
lastSolderingDrawnTemp2 = lastSolderingDrawnTemp1;
|
||||||
lastOLEDDrawTime = millis();
|
lastOLEDDrawTime = millis();
|
||||||
//Now draw symbols
|
//Now draw symbols
|
||||||
OLED_DrawChar(' ', 3);
|
if (StatusFlags == 8)
|
||||||
|
OLED_DrawChar('B', 3);
|
||||||
|
else
|
||||||
|
OLED_DrawChar(' ', 3);
|
||||||
|
|
||||||
OLED_BlankSlot(6 * 12 + 16, 24 - 16);//blank out the tail after the arrows
|
OLED_BlankSlot(6 * 12 + 16, 24 - 16);//blank out the tail after the arrows
|
||||||
OLED_BlankSlot(4 * 12 + 16, 24 - 16);//blank out the tail after the temp
|
OLED_BlankSlot(4 * 12 + 16, 24 - 16);//blank out the tail after the temp
|
||||||
if (getIronTimer() == 0
|
if (getIronTimer() == 0
|
||||||
@@ -394,6 +442,7 @@ void DrawUI() {
|
|||||||
case SETTINGS:
|
case SETTINGS:
|
||||||
//We are prompting the user the setting name
|
//We are prompting the user the setting name
|
||||||
if (millis() - getLastButtonPress() > 3000) {
|
if (millis() - getLastButtonPress() > 3000) {
|
||||||
|
StatusFlags = 4;
|
||||||
//If the user has idled for > 3 seconds, show the long name for the selected setting instead
|
//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
|
//draw from settingsLongTestScrollPos through to end of screen
|
||||||
uint8_t lengthLeft = SettingsLongNamesLengths[settingsPage]
|
uint8_t lengthLeft = SettingsLongNamesLengths[settingsPage]
|
||||||
@@ -506,6 +555,20 @@ void DrawUI() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BOOSTMODE:
|
||||||
|
switch (systemSettings.boostModeEnabled) {
|
||||||
|
case 1:
|
||||||
|
OLED_DrawString("BOOST T", 8);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
OLED_DrawString("BOOST F", 8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BOOSTTEMP:
|
||||||
|
OLED_DrawString("BTMP ", 5);
|
||||||
|
OLED_DrawThreeNumber(systemSettings.BoostTemp / 10, 5);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -543,7 +606,7 @@ void DrawUI() {
|
|||||||
case DCINDISP: {
|
case DCINDISP: {
|
||||||
uint16_t voltage = readDCVoltage(systemSettings.voltageDiv); //get X10 voltage
|
uint16_t voltage = readDCVoltage(systemSettings.voltageDiv); //get X10 voltage
|
||||||
|
|
||||||
if (CalStatus == 0 || ((millis() % 1000) > 500)) {
|
if (StatusFlags == 0 || ((millis() % 1000) > 500)) {
|
||||||
OLED_DrawString("IN", 2);
|
OLED_DrawString("IN", 2);
|
||||||
OLED_DrawChar((voltage / 100) % 10, 2);
|
OLED_DrawChar((voltage / 100) % 10, 2);
|
||||||
voltage -= (voltage / 100) * 100;
|
voltage -= (voltage / 100) * 100;
|
||||||
@@ -560,11 +623,11 @@ void DrawUI() {
|
|||||||
break;
|
break;
|
||||||
case TEMPCAL: {
|
case TEMPCAL: {
|
||||||
|
|
||||||
if (CalStatus == 0) {
|
if (StatusFlags == 0) {
|
||||||
OLED_DrawString("CAL TEMP", 8);
|
OLED_DrawString("CAL TEMP", 8);
|
||||||
} else if (CalStatus == 1) {
|
} else if (StatusFlags == 1) {
|
||||||
OLED_DrawString("CAL OK ", 8);
|
OLED_DrawString("CAL OK ", 8);
|
||||||
} else if (CalStatus == 2) {
|
} else if (StatusFlags == 2) {
|
||||||
OLED_DrawString("CAL FAIL", 8);
|
OLED_DrawString("CAL FAIL", 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,8 +53,9 @@ void resetSettings() {
|
|||||||
systemSettings.tempCalibration=239; //Default to their calibration value
|
systemSettings.tempCalibration=239; //Default to their calibration value
|
||||||
systemSettings.voltageDiv=144; //Default divider from schematic
|
systemSettings.voltageDiv=144; //Default divider from schematic
|
||||||
systemSettings.ShutdownTime=30; //How many minutes until the unit turns itself off
|
systemSettings.ShutdownTime=30; //How many minutes until the unit turns itself off
|
||||||
systemSettings.displayUpdateSpeed=0; //How fast the LCD updates
|
systemSettings.displayUpdateSpeed=1; //How fast the LCD updates
|
||||||
systemSettings.temperatureRounding=0; //How the temperature is rounded off
|
systemSettings.temperatureRounding=0; //How the temperature is rounded off
|
||||||
|
systemSettings.boostModeEnabled=0; //Default to safe, with no boost mode
|
||||||
|
systemSettings.BoostTemp=4000; //default to 400C
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<targetDefinitions xmlns="http://openstm32.org/stm32TargetDefinitions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openstm32.org/stm32TargetDefinitions stm32TargetDefinitions.xsd">
|
<!DOCTYPE targetDefinitions [
|
||||||
|
<!ELEMENT targetDefinitions (board)>
|
||||||
|
<!ELEMENT board (name, dbgIF+, dbgDEV, mcuId)>
|
||||||
|
<!ELEMENT name (#PCDATA)>
|
||||||
|
<!ELEMENT dbgIF (#PCDATA)>
|
||||||
|
<!ELEMENT dbgDEV (#PCDATA)>
|
||||||
|
<!ELEMENT mcuId (#PCDATA)>
|
||||||
|
<!ATTLIST board id CDATA #REQUIRED>
|
||||||
|
]>
|
||||||
|
|
||||||
|
<targetDefinitions>
|
||||||
<board id="ts100">
|
<board id="ts100">
|
||||||
<name>ts100</name>
|
<name>ts100</name>
|
||||||
<mcuId>stm32f103t8ux</mcuId>
|
|
||||||
<dbgIF>SWD</dbgIF>
|
<dbgIF>SWD</dbgIF>
|
||||||
<dbgDEV>ST-Link</dbgDEV>
|
<dbgDEV>ST-Link</dbgDEV>
|
||||||
|
<mcuId>stm32f103t8ux</mcuId>
|
||||||
</board>
|
</board>
|
||||||
</targetDefinitions>
|
</targetDefinitions>
|
||||||
|
|||||||
Reference in New Issue
Block a user