Hook some status colours to the LED

This commit is contained in:
Ben V. Brown
2021-05-03 22:00:24 +10:00
parent 5ea2908fa2
commit c20ed926cd
2 changed files with 19 additions and 7 deletions

View File

@@ -438,7 +438,7 @@ bool isTipDisconnected() {
void setStatusLED(const enum StatusLED state) {
static enum StatusLED lastState = LED_UNKNOWN;
if (lastState != state) {
if (lastState != state || state == LED_HEATING) {
switch (state) {
case LED_UNKNOWN:
case LED_OFF:
@@ -447,8 +447,11 @@ void setStatusLED(const enum StatusLED state) {
case LED_STANDBY:
WS2812::led_set_color(0, 0, 0xFF, 0); //green
break;
case LED_HEATING:
WS2812::led_set_color(0, 0, 0, 0xFF); //Blue
case LED_HEATING: {
WS2812::led_set_color(0, ((HAL_GetTick() / 10) % 192) + 64, 0,
0); //Red fade
}
break;
case LED_HOT:
WS2812::led_set_color(0, 0xFF, 0, 0); //red

View File

@@ -522,7 +522,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
// Unlock buttons
buttonsLocked = false;
warnUser(translatedString(Tr->UnlockingKeysString),
TICKS_SECOND);
TICKS_SECOND);
break;
case BUTTON_F_LONG:
// if boost mode is enabled turn it on
@@ -538,7 +538,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
case BUTTON_B_SHORT:
// Do nothing and display a lock warming
warnUser(translatedString(Tr->WarningKeysLockedString),
TICKS_SECOND / 2);
TICKS_SECOND / 2);
break;
default:
break;
@@ -575,7 +575,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
// Lock buttons
buttonsLocked = true;
warnUser(translatedString(Tr->LockingKeysString),
TICKS_SECOND);
TICKS_SECOND);
}
break;
default:
@@ -679,6 +679,14 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
return; // If the function returns non-0 then exit
}
}
//Update LED status
int error = currentTempTargetDegC - TipThermoModel::getTipInC();
if (error >= -10 && error <= 10) {
//converged
setStatusLED(LED_HOT);
} else {
setStatusLED(LED_HEATING);
}
// slow down ui update rate
GUIDelay();
}
@@ -918,7 +926,7 @@ void startGUITask(void const *argument __unused) {
if (tipTemp > 55) {
setStatusLED(LED_COOLING_STILL_HOT);
} else {
setStatusLED(LED_OFF);
setStatusLED(LED_STANDBY);
}
// Preemptively turn the display on. Turn it off if and only if
// the tip temperature is below 50 degrees C *and* motion sleep
@@ -933,6 +941,7 @@ void startGUITask(void const *argument __unused) {
&& ((xTaskGetTickCount() - lastButtonTime)
> BUTTON_INACTIVITY_TIME))) {
OLED::setDisplayState(OLED::DisplayState::OFF);
setStatusLED(LED_OFF);
}
// Clear the lcd buffer
OLED::clearScreen();