diff --git a/Marlin/Conditionals_LulzBot.h b/Marlin/Conditionals_LulzBot.h index 9f4563a45..ef6f63905 100644 --- a/Marlin/Conditionals_LulzBot.h +++ b/Marlin/Conditionals_LulzBot.h @@ -13,7 +13,7 @@ * got disabled. */ -#define LULZBOT_FW_VERSION ".21" // Change this with each update +#define LULZBOT_FW_VERSION ".23" // Change this with each update #if ( \ !defined(LULZBOT_Gladiola_Mini) && \ @@ -54,6 +54,7 @@ #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_NORMALLY_OPEN_ENDSTOPS + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 115200 #define LULZBOT_UUID "351487b6-ca9a-4c1a-8765-d668b1da6585" #endif @@ -70,6 +71,7 @@ #define LULZBOT_USE_EARLY_EINSY #define LULZBOT_USE_AUTOLEVELING #define LULZBOT_SENSORLESS_HOMING + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 115200 #define LULZBOT_UUID "4479bf92-7e47-4c2c-be95-64dd01bd413b" #endif @@ -84,6 +86,7 @@ #define LULZBOT_USE_LCD_DISPLAY #define LULZBOT_USE_AUTOLEVELING #define LULZBOT_SENSORLESS_HOMING + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 115200 #define LULZBOT_UUID "4479bf92-7e47-4c2c-be95-64dd01bd413b" #endif @@ -98,6 +101,7 @@ #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS + #define LULZBOT_USE_Z_BELT #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "1b8d32d3-0596-4335-8cd4-f3741a095087" @@ -113,6 +117,7 @@ #define LULZBOT_TWO_PIECE_BED #define LULZBOT_USE_AUTOLEVELING #define LULZBOT_SENSORLESS_HOMING + #define LULZBOT_USE_Z_BELT #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "e5502411-d46d-421d-ba3a-a20126d7930f" @@ -129,6 +134,7 @@ #define LULZBOT_TWO_PIECE_BED #define LULZBOT_USE_AUTOLEVELING #define LULZBOT_SENSORLESS_HOMING + #define LULZBOT_USE_Z_BELT #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "e5502411-d46d-421d-ba3a-a20126d7930f" @@ -144,6 +150,7 @@ #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_NORMALLY_OPEN_ENDSTOPS + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 115200 #define LULZBOT_UUID "083f68f1-028e-494c-98e1-f2e0dfaee9a5" #endif @@ -160,6 +167,7 @@ #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS + #define LULZBOT_USE_Z_BELT #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "80fed4d6-4d15-4512-a02e-61b1dc4fb072" @@ -173,6 +181,7 @@ #define LULZBOT_USE_LCD_DISPLAY #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_NORMALLY_OPEN_ENDSTOPS + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 250000 #define LULZBOT_UUID "c3255c96-4097-4884-8ed0-ded2ff9bae61" #endif @@ -188,6 +197,7 @@ #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_HOME_BUTTON #define LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS + #define LULZBOT_USE_Z_SCREW #define LULZBOT_BAUDRATE 250000 #define LULZBOT_UUID "845f003c-aebd-4e53-a6b9-7d0984fde609" #endif @@ -203,6 +213,7 @@ #define LULZBOT_USE_MIN_ENDSTOPS #define LULZBOT_USE_MAX_ENDSTOPS #define LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS + #define LULZBOT_USE_Z_BELT #define LULZBOT_BAUDRATE 250000 #define LULZBOT_PRINTCOUNTER #define LULZBOT_UUID "a952577d-8722-483a-999d-acdc9e772b7b" @@ -217,6 +228,7 @@ #define LULZBOT_AUTO_REPORT_TEMPERATURES #define LULZBOT_ADVANCED_OK #define LULZBOT_HOST_KEEPALIVE_FEATURE_DISABLED +#define LULZBOT_CLARIFY_ERROR_MESSAGES // Marlin 1.1.4 has changed the behavior of G92 so that // it changes software endstops, making it less useful @@ -256,6 +268,7 @@ // Whether endstops are inverting #define LULZBOT_NORMALLY_CLOSED_ENDSTOP false #define LULZBOT_NORMALLY_OPEN_ENDSTOP true +#define LULZBOT_NO_ENDSTOP true #if defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_EINSYRAMBO) // Experimental Mini retrofitted with EinsyRambo from UltiMachine @@ -322,10 +335,12 @@ #if defined(LULZBOT_MINI_BED) #define LULZBOT_HOMING_FEEDRATE_XY (30*60) // mm/m #define LULZBOT_HOMING_FEEDRATE_Z (8*60) // mm/m -#elif defined(LULZBOT_Quiver_TAZ7) + +#elif defined(LULZBOT_TAZ_BED) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_HOMING_FEEDRATE_XY (50*60) // mm/m #define LULZBOT_HOMING_FEEDRATE_Z (10*60) // mm/m -#elif defined(LULZBOT_TAZ_BED) + +#elif defined(LULZBOT_TAZ_BED) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_HOMING_FEEDRATE_XY (50*60) // mm/m #define LULZBOT_HOMING_FEEDRATE_Z (3*60) // mm/m #endif // LULZBOT_TAZ_BED @@ -339,8 +354,8 @@ #define LULZBOT_AFTER_Z_HOME_Z_RAISE 10 #define LULZBOT_AFTER_Z_HOME_Z_ORIGIN 0 -#elif defined(LULZBOT_Juniper_TAZ5) - // Set safe homing position so fan duct does not hit. +#elif defined(LULZBOT_IS_TAZ) && !defined(LULZBOT_USE_HOME_BUTTON) + // TAZ 5 safe homing position so fan duct does not hit. #define LULZBOT_Z_SAFE_HOMING #define LULZBOT_Z_SAFE_HOMING_X_POINT 10 #define LULZBOT_Z_SAFE_HOMING_Y_POINT 10 @@ -389,6 +404,7 @@ #define LULZBOT_NOZZLE_CLEAN_FEATURE // Select type of leveling to use: //#define LULZBOT_AUTO_BED_LEVELING_BILINEAR + //#define LULZBOT_AUTO_BED_LEVELING_LINEAR #define LULZBOT_AUTO_BED_LEVELING_3POINT #endif @@ -400,7 +416,7 @@ #define LULZBOT_ABL_PROBE_PT_2_Y LULZBOT_FRONT_PROBE_BED_POSITION #define LULZBOT_ABL_PROBE_PT_3_X LULZBOT_RIGHT_PROBE_BED_POSITION #define LULZBOT_ABL_PROBE_PT_3_Y LULZBOT_BACK_PROBE_BED_POSITION -#elif defined(LULZBOT_AUTO_BED_LEVELING_BILINEAR) +#elif defined(LULZBOT_AUTO_BED_LEVELING_LINEAR) || defined(LULZBOT_AUTO_BED_LEVELING_BILINEAR) // Traditionally LulzBot printers have employed a four-point leveling // using a degenerate 2x2 grid. This is the traditional behavior. #define LULZBOT_GRID_MAX_POINTS_X 2 @@ -722,7 +738,10 @@ #define LULZBOT_SWITCHING_EXTRUDER #define LULZBOT_SWITCHING_NOZZLE #define LULZBOT_SWITCHING_SERVO_ANGLES { 0, 67 } + #undef LULZBOT_TOOLHEAD_X_MIN_ADJ + #define LULZBOT_TOOLHEAD_X_MIN_ADJ 14 #define LULZBOT_E_STEPS 420 + #define LULZBOT_X_MAX_ENDSTOP_INVERTING LULZBOT_NO_ENDSTOP #define LULZBOT_AO_Hexagon #endif /* TOOLHEAD_Devel_ServoDual */ @@ -869,7 +888,7 @@ #if defined(LULZBOT_IS_MINI) // The Mini fan runs rather loud at full speed. #define LULZBOT_CONTROLLERFAN_SPEED 120 -#else +#elif defined(LULZBOT_IS_TAZ) #define LULZBOT_CONTROLLERFAN_SPEED 255 #endif @@ -906,7 +925,7 @@ #define LULZBOT_X_BED_SIZE 288 #define LULZBOT_Y_BED_SIZE 275 -#elif defined(LULZBOT_Quiver_TAZ7) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_STANDARD_X_MAX_POS 300 #define LULZBOT_STANDARD_X_MIN_POS -16 #define LULZBOT_STANDARD_Y_MAX_POS 303 @@ -915,7 +934,8 @@ #define LULZBOT_X_BED_SIZE 280 #define LULZBOT_Y_BED_SIZE 280 -#elif defined(LULZBOT_IS_TAZ) + +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_STANDARD_X_MAX_POS 300 #define LULZBOT_STANDARD_X_MIN_POS -20 #define LULZBOT_STANDARD_Y_MAX_POS 303 @@ -925,11 +945,11 @@ #define LULZBOT_Y_BED_SIZE 280 #endif -#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD) || defined(LULZBOT_Gladiola_EinsyMini) || defined(LULZBOT_Gladiola_EinsyMiniLCD) +#if defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_STANDARD_Z_MIN_POS -2 #define LULZBOT_STANDARD_Z_MAX_POS 159 -#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD) || defined(LULZBOT_Hibiscus_EinsyMini2) || defined(LULZBOT_Hibiscus_EinsyMini2LCD) +#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_STANDARD_Z_MIN_POS 0 #define LULZBOT_STANDARD_Z_MAX_POS 183 @@ -937,11 +957,11 @@ #define LULZBOT_STANDARD_Z_MIN_POS 0 #define LULZBOT_STANDARD_Z_MAX_POS 250 -#elif defined(LULZBOT_Oliveoil_TAZ6) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_STANDARD_Z_MIN_POS 0 #define LULZBOT_STANDARD_Z_MAX_POS 270 -#elif defined(LULZBOT_Quiver_TAZ7) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_STANDARD_Z_MIN_POS 0 #define LULZBOT_STANDARD_Z_MAX_POS 299 #endif @@ -983,7 +1003,7 @@ * X_MAX which varies by toolhead. */ #if defined(LULZBOT_USE_NORMALLY_CLOSED_ENDSTOPS) - // TAZ 6+ and Huerfano Mini onwards use normally closed endstops. + // TAZ 6+ and Hibiscus Mini onwards use normally closed endstops. // This is safer, as a loose connector or broken wire will halt // the axis #define LULZBOT_X_MIN_ENDSTOP_INVERTING LULZBOT_NORMALLY_CLOSED_ENDSTOP @@ -1281,7 +1301,7 @@ #define LULZBOT_NUM_REWIPES 1 #if defined(LULZBOT_IS_TAZ) #define LULZBOT_BED_PROBE_MIN 0 // Limit on pushing into the bed -#else +#else defined(LULZBOT_IS_MINI) #define LULZBOT_BED_PROBE_MIN -4 // Limit on pushing into the bed #endif @@ -1319,11 +1339,11 @@ #define LULZBOT_MOTOR_CURRENT_E 960 // mA #endif -#elif defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD) +#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_MOTOR_CURRENT_XY 1300 // mA #define LULZBOT_MOTOR_CURRENT_Z 1630 // mA -#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD) +#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_MOTOR_CURRENT_XY 1300 // mA #define LULZBOT_MOTOR_CURRENT_Z 1000 // mA @@ -1331,16 +1351,16 @@ #define LULZBOT_MOTOR_CURRENT_XY 950 // mA #define LULZBOT_MOTOR_CURRENT_Z 1275 // mA -#elif defined(LULZBOT_Oliveoil_TAZ6) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_MOTOR_CURRENT_XY 950 // mA #define LULZBOT_MOTOR_CURRENT_Z 1075 // mA -#elif defined(LULZBOT_Quiver_TAZ7) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_BELT) #define LULZBOT_MOTOR_CURRENT_XY 950 // mA #define LULZBOT_MOTOR_CURRENT_Z 950 // mA #endif -/******************** ACCELERATION, FEEDRATES AND XYZ MOTOR STEPS *******************/ +/************ ACCELERATION, FEEDRATES AND XYZ MOTOR STEPS *******************/ // Values for XYZ vary by printer model, values for E vary by toolhead. @@ -1373,10 +1393,10 @@ #define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.200 #endif -#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_MiniLCD) || defined(LULZBOT_Gladiola_EinsyMini) || defined(LULZBOT_Gladiola_EinsyMiniLCD) +#if defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_Z_STEPS 1600 -#elif defined(LULZBOT_Hibiscus_Mini2) || defined(LULZBOT_Hibiscus_Mini2LCD) || defined(LULZBOT_Hibiscus_EinsyMini2) || defined(LULZBOT_Hibiscus_EinsyMini2LCD) +#elif defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_Z_BELT) #define Z_FULL_STEPS_PER_ROTATION 200 #define Z_MICROSTEPS 16 #define Z_BELT_PITCH 2 @@ -1387,17 +1407,12 @@ #undef LULZBOT_DEFAULT_MAX_FEEDRATE #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 8, 25} // (mm/sec) -#elif defined(LULZBOT_Juniper_TAZ5) - #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec) - #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} - #define LULZBOT_Z_STEPS 1600 - -#elif defined(LULZBOT_Oliveoil_TAZ6) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_SCREW) #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec) #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} #define LULZBOT_Z_STEPS 1600 -#elif defined(LULZBOT_Quiver_TAZ7) +#elif defined(LULZBOT_IS_TAZ) && defined(LULZBOT_USE_Z_BELT) // Prototype Z-belt driven TAZ 7 #define LULZBOT_DEFAULT_MAX_FEEDRATE {300, 300, 10, 25} // (mm/sec) #define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000} @@ -1476,7 +1491,7 @@ #define LULZBOT_ENCODER_PULSES_PER_STEP 2 #define LULZBOT_ENCODER_STEPS_PER_MENU_ITEM 1 #define LULZBOT_COOLING_MESSAGES - #if defined(LULZBOT_Gladiola_MiniLCD) || defined(LULZBOT_Hibiscus_Mini2LCD) || defined(LULZBOT_Gladiola_EinsyMiniLCD) || defined(LULZBOT_Hibiscus_EinsyMini2LCD) + #if defined(LULZBOT_IS_MINI) // In the experimental Gladiola_MiniLCD, the encoder direction is reversed. #define LULZBOT_REVERSE_ENCODER_DIRECTION #endif diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 77d0e51d8..f747b1fb9 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -875,6 +875,10 @@ */ #if defined(LULZBOT_AUTO_BED_LEVELING_3POINT) #define AUTO_BED_LEVELING_3POINT LULZBOT_AUTO_BED_LEVELING_3POINT + +#elif defined(LULZBOT_AUTO_BED_LEVELING_LINEAR) +#define AUTO_BED_LEVELING_LINEAR + #elif defined(LULZBOT_AUTO_BED_LEVELING_BILINEAR) #define AUTO_BED_LEVELING_BILINEAR #endif diff --git a/Marlin/language_en.h b/Marlin/language_en.h index 55a2b3e4b..98fe78e2f 100644 --- a/Marlin/language_en.h +++ b/Marlin/language_en.h @@ -156,7 +156,7 @@ #ifndef MSG_LEVEL_BED #define MSG_LEVEL_BED _UxGT("Level bed") #endif -#ifndef MSG_REWIPE +#ifndef MSG_REWIPE && defined(LULZBOT_PROBE_Z_WITH_REWIPE) #define MSG_REWIPE _UxGT("Rewiping") #endif #ifndef MSG_LEVEL_CORNERS @@ -689,7 +689,9 @@ #ifndef MSG_ERR_MINTEMP_BED #define MSG_ERR_MINTEMP_BED _UxGT("Err: MINTEMP BED") #endif -#ifndef MSG_ERR_Z_HOMING +#ifndef MSG_ERR_Z_HOMING && defined(LULZBOT_CLARIFY_ERROR_MESSAGES) + #define MSG_ERR_Z_HOMING _UxGT("Home XY first") +#else #define MSG_ERR_Z_HOMING _UxGT("G28 Z Forbidden") #endif #ifndef MSG_HALTED @@ -713,16 +715,16 @@ #ifndef MSG_HEATING_COMPLETE #define MSG_HEATING_COMPLETE _UxGT("Heating done.") #endif -#ifndef MSG_COOLING +#ifndef MSG_COOLING && defined(LULZBOT_COOLING_MESSAGES) #define MSG_COOLING _UxGT("Cooling...") #endif -#ifndef MSG_COOLING_COMPLETE +#ifndef MSG_COOLING_COMPLETE && defined(LULZBOT_COOLING_MESSAGES) #define MSG_COOLING_COMPLETE _UxGT("Cooling done.") #endif #ifndef MSG_BED_HEATING #define MSG_BED_HEATING _UxGT("Bed heating.") #endif -#ifndef MSG_BED_COOLING +#ifndef MSG_BED_COOLING && defined(LULZBOT_COOLING_MESSAGES) #define MSG_BED_COOLING _UxGT("Bed cooling.") #endif #ifndef MSG_BED_DONE diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 4701a554e..ef7cb50a1 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -901,42 +901,42 @@ void kill_screen(const char* lcd_msg) { static void lcd_store_settings(); static void lcd_load_settings(); - void lcd_main_menu() { - #if ENABLED(SDSUPPORT) - /* If we are printing, the menu will only show options related to pausing/stopping */ - if (card.cardOK && card.isFileOpen()) { - START_MENU(); - MENU_BACK(MSG_WATCH); - if (card.sdprinting) - MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); - else - MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); - MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop); - if (!thermalManager.tooColdToExtrude(active_extruder)) { - MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); - } - END_MENU(); - return; - } - #endif // SDSUPPORT + void lcd_main_menu() { START_MENU(); MENU_BACK(MSG_WATCH); - if (!thermalManager.tooColdToExtrude(active_extruder)) { - MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); - } + bool isPrinting = (planner.movesplanned() || IS_SD_PRINTING || (card.cardOK && card.isFileOpen())); - MENU_ITEM(submenu, _UxGT("Movement"), lcd_movement_menu); - MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); - MENU_ITEM(submenu, _UxGT("Configuration"), lcd_configuration_menu); + if (isPrinting) { + MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); + #if ENABLED(ADVANCED_PAUSE_FEATURE) + if (!thermalManager.tooColdToExtrude(active_extruder)) + MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); + #endif + } else { + MENU_ITEM(submenu, _UxGT("Movement"), lcd_movement_menu); + MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); + MENU_ITEM(submenu, _UxGT("Configuration"), lcd_configuration_menu); + } #if ENABLED(SDSUPPORT) if (card.cardOK) { - if(!card.isFileOpen()) { + if (card.isFileOpen()) { + if (card.sdprinting) + MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); + else + MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); + MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop); + } + else if(!isPrinting) { MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu); + #if !PIN_EXISTS(SD_DETECT) + MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user + #endif } - } else { + } + else if(!isPrinting) { MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu); #if !PIN_EXISTS(SD_DETECT) MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface @@ -944,11 +944,13 @@ void kill_screen(const char* lcd_msg) { } #endif // SDSUPPORT - MENU_ITEM(submenu, MSG_INFO_MENU, lcd_show_custom_bootscreen); + if(!isPrinting) { + MENU_ITEM(submenu, MSG_INFO_MENU, lcd_show_custom_bootscreen); - #if defined(LULZBOT_PRINTERCOUNTER) - MENU_ITEM(submenu, MSG_INFO_STATS_MENU, lcd_info_stats_menu); // Printer Statistics > - #endif + #if defined(LULZBOT_PRINTERCOUNTER) + MENU_ITEM(submenu, MSG_INFO_STATS_MENU, lcd_info_stats_menu); // Printer Statistics > + #endif + } END_MENU(); } @@ -1365,7 +1367,7 @@ void kill_screen(const char* lcd_msg) { // // Change filament // - #if ENABLED(ADVANCED_PAUSE_FEATURE) + #if ENABLED(ADVANCED_PAUSE_FEATURE) && !defined(LULZBOT_REORDERED_MENUS) if (!thermalManager.tooColdToExtrude(active_extruder)) MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); #endif diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h index b7b0959f3..091fb26f4 100644 --- a/Marlin/ultralcd_impl_DOGM.h +++ b/Marlin/ultralcd_impl_DOGM.h @@ -760,9 +760,9 @@ static void lcd_implementation_status_screen() { #endif // ADVANCED_PAUSE_FEATURE #if defined(LULZBOT_SCROLL_LONG_FILE_NAMES) - static int scroll_offset; - static int scroll_max; - static int scroll_row; + static uint8_t scroll_offset; + static uint8_t scroll_max; + static uint8_t scroll_hash; #endif // Set the colors for a menu item based on whether it is selected @@ -953,16 +953,23 @@ static void lcd_implementation_status_screen() { uint8_t n = LCD_WIDTH - (START_COL) - 1; if (longFilename[0]) { - filename = longFilename; #if defined(LULZBOT_SCROLL_LONG_FILE_NAMES) if (isSelected) { - if(scroll_row != row) { - scroll_max = max(0, strlen(longFilename) - n); - scroll_row = row; + uint8_t name_hash = row; + for (uint8_t i = 0; filename[i]; ++i) { + name_hash = ((name_hash << 1) | (name_hash >> 7)) ^ filename[i]; + } + if(scroll_hash != name_hash) { + scroll_max = max(0, lcd_strlen(longFilename) - n); + scroll_hash = name_hash; scroll_offset = 0; } - filename += scroll_offset; + filename = longFilename + scroll_offset; + } else { + filename = longFilename; } + #else + filename = longFilename; #endif }