diff --git a/usermods/Temperature/usermod_temperature.h b/usermods/Temperature/usermod_temperature.h index 4762cb25..413448d0 100644 --- a/usermods/Temperature/usermod_temperature.h +++ b/usermods/Temperature/usermod_temperature.h @@ -37,7 +37,7 @@ class UsermodTemperature : public Usermod { // used to determine when we can read the sensors temperature // we have to wait at least 93.75 ms after requestTemperatures() is called unsigned long lastTemperaturesRequest; - float temperature = -100.0f; // default to -100, DS18B20 only goes down to -50C + float temperature = -127.0f; // default to -127, DS18B20 only goes down to -50C // indicates requestTemperatures has been called but the sensor measurement is not complete bool waitingForConversion = false; // flag set at startup if DS18B20 sensor not found, avoids trying to keep getting @@ -60,7 +60,6 @@ class UsermodTemperature : public Usermod { if (oneWire->reset()) { // if reset() fails there are no OneWire devices oneWire->skip(); // skip ROM oneWire->write(0xBE); // read (temperature) from EEPROM - delayMicroseconds(250); oneWire->read_bytes(data, 9); // first 2 bytes contain temperature #ifdef WLED_DEBUG if (OneWire::crc8(data,8) != data[8]) { @@ -85,7 +84,8 @@ class UsermodTemperature : public Usermod { break; } } - return retVal; + for (byte i=1; i<9; i++) data[0] &= data[i]; + return data[0]==0xFF ? -127.0f : retVal; } void requestTemperatures() { @@ -176,7 +176,7 @@ class UsermodTemperature : public Usermod { } // we were waiting for a conversion to complete, have we waited log enough? - if (now - lastTemperaturesRequest >= 100 /* 93.75ms per the datasheet but can be up to 750ms */) { + if (now - lastTemperaturesRequest >= 750 /* 93.75ms per the datasheet but can be up to 750ms */) { readTemperature(); if (WLED_MQTT_CONNECTED) { diff --git a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h index 1d78a72f..14045a49 100644 --- a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h +++ b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h @@ -386,7 +386,8 @@ class FourLineDisplayUsermod : public Usermod { setFlipMode(flip); setContrast(contrast); //Contrast setup will help to preserve OLED lifetime. In case OLED need to be brighter increase number up to 255 setPowerSave(0); - drawString(0, 0, "Loading..."); + //drawString(0, 0, "Loading..."); + overlay(PSTR("Loading..."),3000,0); } // gets called every time WiFi is (re-)connected. Initialize own network @@ -484,6 +485,7 @@ class FourLineDisplayUsermod : public Usermod { if (forceRedraw) { knownHour = 99; needRedraw = true; + clear(); } else if ((bri == 0 && powerON) || (bri > 0 && !powerON)) { //trigger power icon powerON = !powerON; drawStatusIcons(); @@ -526,6 +528,7 @@ class FourLineDisplayUsermod : public Usermod { if (sleepMode && !displayTurnedOff && (now - lastRedraw > screenTimeout)) { // We will still check if there is a change in redraw() // and turn it back on if it changed. + clear(); sleepOrClock(true); } else if (displayTurnedOff && clockMode) { showTime(); @@ -539,6 +542,7 @@ class FourLineDisplayUsermod : public Usermod { if (displayTurnedOff) { // Turn the display back on sleepOrClock(false); + clear(); } // Update last known values. @@ -705,6 +709,7 @@ class FourLineDisplayUsermod : public Usermod { if (type == NONE || !enabled) return false; knownHour = 99; if (displayTurnedOff) { + clear(); // Turn the display back on sleepOrClock(false); redraw(true); @@ -729,8 +734,10 @@ class FourLineDisplayUsermod : public Usermod { if (glyphType > 0) { if (lineHeight == 2) drawGlyph(5, 0, glyphType, u8x8_font_benji_custom_icons_6x6, true); else drawGlyph(7, lineHeight, glyphType, u8x8_font_benji_custom_icons_2x2, true); + if (line1) drawString(0, 3*lineHeight, line1); + } else { + if (line1) drawString(0, 2*(lineHeight-1), line1); } - if (line1) drawString(0, 3*lineHeight, line1); overlayUntil = millis() + showHowLong; } @@ -777,7 +784,6 @@ class FourLineDisplayUsermod : public Usermod { * Enable sleep (turn the display off) or clock mode. */ void sleepOrClock(bool enabled) { - clear(); if (enabled) { if (clockMode) { knownMinute = knownHour = 99;