From 0c794413cf76fe574b8f9b8773c6f2d244673805 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Sep 2021 03:40:01 -0500 Subject: [PATCH] MarlinUI brightness menu, M256 for all --- Marlin/src/gcode/lcd/M250.cpp | 2 +- Marlin/src/inc/Conditionals_post.h | 2 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 9 +++------ Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 9 +-------- Marlin/src/lcd/e3v2/creality/dwin.cpp | 4 ++++ Marlin/src/lcd/e3v2/enhanced/dwin.cpp | 6 +++++- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 6 ++++-- Marlin/src/lcd/e3v2/marlinui/ui_common.cpp | 4 ++++ Marlin/src/lcd/language/language_en.h | 1 + Marlin/src/lcd/marlinui.cpp | 18 +++++++++++------- Marlin/src/lcd/marlinui.h | 16 +++++++++------- Marlin/src/lcd/menu/menu_configuration.cpp | 5 ++++- Marlin/src/module/settings.cpp | 6 +++--- buildroot/tests/STM32F103RET6_creality | 2 +- 14 files changed, 52 insertions(+), 38 deletions(-) diff --git a/Marlin/src/gcode/lcd/M250.cpp b/Marlin/src/gcode/lcd/M250.cpp index 079315311ab2a..083fb37f65ca6 100644 --- a/Marlin/src/gcode/lcd/M250.cpp +++ b/Marlin/src/gcode/lcd/M250.cpp @@ -32,7 +32,7 @@ */ void GcodeSuite::M250() { if (parser.seenval('C')) - ui.set_contrast(parser.value_int()); + ui.set_contrast(parser.value_byte()); else M250_report(); } diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 5da04c82b87ca..916a7ebc28835 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -425,7 +425,7 @@ #if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI #define HAS_LCD_BRIGHTNESS 1 - #define MAX_LCD_BRIGHTNESS 250 + #define LCD_BRIGHTNESS_MAX 250 #endif /** diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index 712e76e86f210..9617b3775db5e 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -376,12 +376,9 @@ void MarlinUI::clear_lcd() { lcd.clear_buffer(); } -int16_t MarlinUI::contrast; // Initialized by settings.load() - -void MarlinUI::set_contrast(const int16_t value) { - contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); - lcd.setContrast(contrast); -} +#if HAS_LCD_CONTRAST + void MarlinUI::_set_contrast() { lcd.setContrast(contrast); } +#endif static void center_text_P(PGM_P pstart, uint8_t y) { uint8_t len = utf8_strlen_P(pstart); diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index 33bb3e4b92123..98173da8f3113 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -93,14 +93,7 @@ U8G_CLASS u8g; #endif #if HAS_LCD_CONTRAST - - int16_t MarlinUI::contrast = DEFAULT_LCD_CONTRAST; - - void MarlinUI::set_contrast(const int16_t value) { - contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); - u8g.setContrast(contrast); - } - + void MarlinUI::_set_contrast() { u8g.setContrast(contrast); } #endif void MarlinUI::set_font(const MarlinFont font_nr) { diff --git a/Marlin/src/lcd/e3v2/creality/dwin.cpp b/Marlin/src/lcd/e3v2/creality/dwin.cpp index 05aa9f0ec3d58..6a2d4cd5fe0ca 100644 --- a/Marlin/src/lcd/e3v2/creality/dwin.cpp +++ b/Marlin/src/lcd/e3v2/creality/dwin.cpp @@ -1816,6 +1816,10 @@ void HMI_SDCardInit() { card.cdroot(); } void MarlinUI::refresh() { /* Nothing to see here */ } +#if HAS_LCD_BRIGHTNESS + void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } +#endif + #if ENABLED(SCROLL_LONG_FILENAMES) char shift_name[LONG_FILENAME_LENGTH + 1]; diff --git a/Marlin/src/lcd/e3v2/enhanced/dwin.cpp b/Marlin/src/lcd/e3v2/enhanced/dwin.cpp index a9967fcda830e..39994f694741e 100644 --- a/Marlin/src/lcd/e3v2/enhanced/dwin.cpp +++ b/Marlin/src/lcd/e3v2/enhanced/dwin.cpp @@ -865,6 +865,10 @@ void HMI_SDCardInit() { card.cdroot(); } void MarlinUI::refresh() { /* Nothing to see here */ } +#if HAS_LCD_BRIGHTNESS + void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } +#endif + #define ICON_Folder ICON_More #if ENABLED(SCROLL_LONG_FILENAMES) @@ -2187,7 +2191,7 @@ void SetPID(celsius_t t, heater_id_t h) { #if HAS_LCD_BRIGHTNESS void ApplyBrightness() { ui.set_brightness(HMI_value.Value); } - void SetBrightness() { SetIntOnClick(MIN_LCD_BRIGHTNESS, MAX_LCD_BRIGHTNESS, ui.brightness, ApplyBrightness, ApplyBrightness); } + void SetBrightness() { SetIntOnClick(LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, ui.brightness, ApplyBrightness, ApplyBrightness); } #endif #if ENABLED(SOUND_MENU_ITEM) diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 55aee49f8294f..804888ce8c26d 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -2717,7 +2717,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ Draw_Float(ui.brightness, row, false, 1); } else - Modify_Value(ui.brightness, MIN_LCD_BRIGHTNESS, MAX_LCD_BRIGHTNESS, 1, ui.refresh_brightness); + Modify_Value(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); break; case VISUAL_TIME_FORMAT: if (draw) { @@ -3879,7 +3879,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ Draw_Float(ui.brightness, row, false, 1); } else - Modify_Value(ui.brightness, MIN_LCD_BRIGHTNESS, MAX_LCD_BRIGHTNESS, 1, ui.refresh_brightness); + Modify_Value(ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, 1, ui.refresh_brightness); break; } break; @@ -4800,6 +4800,8 @@ void CrealityDWINClass::Update() { void MarlinUI::update() { CrealityDWIN.Update(); } +void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } + void CrealityDWINClass::State_Update() { if ((print_job_timer.isRunning() || print_job_timer.isPaused()) != printing) { if (!printing) Start_Print(card.isFileOpen() || TERN0(POWER_LOSS_RECOVERY, recovery.valid())); diff --git a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp index 45c1fa3122a97..5974815202536 100644 --- a/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp +++ b/Marlin/src/lcd/e3v2/marlinui/ui_common.cpp @@ -95,6 +95,10 @@ void MarlinUI::clear_lcd() { did_first_redraw = false; } +#if HAS_LCD_BRIGHTNESS + void MarlinUI::_set_brightness() { DWIN_LCD_Brightness(backlight ? brightness : 0); } +#endif + #if ENABLED(SHOW_BOOTSCREEN) void MarlinUI::show_bootscreen() { diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 85c689222b369..b23d0bfa00b6d 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -397,6 +397,7 @@ namespace Language_en { LSTR MSG_ADVANCE_K = _UxGT("Advance K"); LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); + LSTR MSG_BRIGHTNESS = _UxGT("LCD Brightness"); LSTR MSG_STORE_EEPROM = _UxGT("Store Settings"); LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index b4e707568d856..5fcbff870ee41 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -95,19 +95,23 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; } #endif +#if HAS_LCD_CONTRAST + uint8_t MarlinUI::contrast; // Initialized by settings.load() + + void MarlinUI::set_contrast(const uint8_t value) { + contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); + _set_contrast(); + } +#endif + #if HAS_LCD_BRIGHTNESS uint8_t MarlinUI::brightness = DEFAULT_LCD_BRIGHTNESS; bool MarlinUI::backlight = true; void MarlinUI::set_brightness(const uint8_t value) { - // Backlight off with 0 backlight = !!value; - // Leave brightness intact with 0 - if (backlight) brightness = constrain(value, MIN_LCD_BRIGHTNESS, MAX_LCD_BRIGHTNESS); - // Set brightness on enabled LCD here - #if EITHER(DWIN_CREALITY_LCD_ENHANCED, DWIN_CREALITY_LCD_JYERSUI) - DWIN_LCD_Brightness(backlight ? brightness : 0); - #endif + if (backlight) brightness = constrain(value, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX); + _set_brightness(); } #endif diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 49ecd89957a19..270ee3afcecdb 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -247,17 +247,18 @@ class MarlinUI { #endif #if HAS_LCD_BRIGHTNESS - #ifndef MIN_LCD_BRIGHTNESS - #define MIN_LCD_BRIGHTNESS 1 + #ifndef LCD_BRIGHTNESS_MIN + #define LCD_BRIGHTNESS_MIN 1 #endif - #ifndef MAX_LCD_BRIGHTNESS - #define MAX_LCD_BRIGHTNESS 255 + #ifndef LCD_BRIGHTNESS_MAX + #define LCD_BRIGHTNESS_MAX 255 #endif #ifndef DEFAULT_LCD_BRIGHTNESS - #define DEFAULT_LCD_BRIGHTNESS MAX_LCD_BRIGHTNESS + #define DEFAULT_LCD_BRIGHTNESS LCD_BRIGHTNESS_MAX #endif static uint8_t brightness; static bool backlight; + static void _set_brightness(); // Implementation-specific static void set_brightness(const uint8_t value); FORCE_INLINE static void refresh_brightness() { set_brightness(brightness); } #endif @@ -425,8 +426,9 @@ class MarlinUI { static uint8_t lcd_status_update_delay; #if HAS_LCD_CONTRAST - static int16_t contrast; - static void set_contrast(const int16_t value); + static uint8_t contrast; + static void _set_contrast(); // Implementation-specific + static void set_contrast(const uint8_t value); FORCE_INLINE static void refresh_contrast() { set_contrast(contrast); } #endif diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 44c99dd0a920a..c9227724ab23f 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -528,8 +528,11 @@ void menu_configuration() { #endif #endif + #if HAS_LCD_BRIGHTNESS + EDIT_ITEM_FAST(uint8, MSG_BRIGHTNESS, &ui.brightness, LCD_BRIGHTNESS_MIN, LCD_BRIGHTNESS_MAX, ui.refresh_brightness, true); + #endif #if HAS_LCD_CONTRAST - EDIT_ITEM(int3, MSG_CONTRAST, &ui.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, ui.refresh_contrast, true); + EDIT_ITEM_FAST(uint8, MSG_CONTRAST, &ui.contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, ui.refresh_contrast, true); #endif #if ENABLED(FWRETRACT) SUBMENU(MSG_RETRACT, menu_config_retract); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index d8d9f2027689a..7d73f2ec4bc58 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -352,7 +352,7 @@ typedef struct SettingsDataStruct { // // HAS_LCD_CONTRAST // - int16_t lcd_contrast; // M250 C + uint8_t lcd_contrast; // M250 C // // HAS_LCD_BRIGHTNESS @@ -1017,7 +1017,7 @@ void MarlinSettings::postprocess() { // { _FIELD_TEST(lcd_contrast); - const int16_t lcd_contrast = TERN(HAS_LCD_CONTRAST, ui.contrast, 127); + const uint8_t lcd_contrast = TERN(HAS_LCD_CONTRAST, ui.contrast, 127); EEPROM_WRITE(lcd_contrast); } @@ -1884,7 +1884,7 @@ void MarlinSettings::postprocess() { // { _FIELD_TEST(lcd_contrast); - int16_t lcd_contrast; + uint8_t lcd_contrast; EEPROM_READ(lcd_contrast); if (!validating) { TERN_(HAS_LCD_CONTRAST, ui.set_contrast(lcd_contrast)); diff --git a/buildroot/tests/STM32F103RET6_creality b/buildroot/tests/STM32F103RET6_creality index 8ce4f57cf8202..d530f7b851862 100755 --- a/buildroot/tests/STM32F103RET6_creality +++ b/buildroot/tests/STM32F103RET6_creality @@ -24,7 +24,7 @@ opt_enable DWIN_CREALITY_LCD_JYERSUI AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY exec_test $1 $2 "Ender 3 v2 with JyersUI" "$3" use_example_configs "Creality/Ender-3 V2/MarlinUI" -opt_add SDCARD_EEPROM_EMULATION NOZZLE_AS_PROBE AUTO_BED_LEVELING_BILINEAR Z_SAFE_HOMING +opt_add SDCARD_EEPROM_EMULATION AUTO_BED_LEVELING_BILINEAR Z_SAFE_HOMING exec_test $1 $2 "Ender 3 v2 with MarlinUI" "$3" restore_configs