diff --git a/.zed/settings.json b/.zed/settings.json index eb80ca73dcb9..70bb14920c4c 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -5,5 +5,12 @@ * see the documentation: https://zed.dev/docs/configuring-zed#settings-files */ { - "enable_language_servers": false + "languages": { + "C": { + "enable_language_server": false + }, + "C++": { + "enable_language_server": false + } + } } diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index c51b0ed5ef12..ff849d22dce4 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -61,7 +61,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Original author or contributor. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) // @section machine @@ -802,6 +802,40 @@ //#define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target #endif +/** + * Peltier Bed - Heating and Cooling + * + * A Peltier device transfers heat from one side to the other in proportion to the amount of + * current flowing through the device and the direction of current flow. So the same device + * can both heat and cool. + * + * When "cooling" in addition to rejecting the heat transferred from the hot side to the cold + * side, the dissipated power (voltage * current) must also be rejected. Be sure to set up a + * fan that can be powered in sync with the Peltier unit. + * + * This feature is only set up to run in bang-bang mode because Peltiers don't handle PWM + * well without filter circuitry. + * + * Since existing 3D printers are made to handle relatively high current for the heated bed, + * we can use the heated bed power pins to control the Peltier power using the same G-codes + * as the heated bed (M140, M190, etc.). + * + * A second GPIO pin is required to control current direction. + * Two configurations are possible: Relay and H-Bridge + * + * (At this time only relay is supported. H-bridge requires 4 MOS switches configured in H-Bridge.) + * + * Power is handled by the bang-bang control loop: 0 or 255. + * Cooling applications are more common than heating, so the pin states are commonly: + * LOW = Heating = Relay Energized + * HIGH = Cooling = Relay in "Normal" state + */ +//#define PELTIER_BED +#if ENABLED(PELTIER_BED) + #define PELTIER_DIR_PIN -1 // Relay control pin for Peltier + #define PELTIER_DIR_HEAT_STATE LOW // The relay pin state that causes the Peltier to heat +#endif + // Add 'M190 R T' for more gradual M190 R bed cooling. //#define BED_ANNEALING_GCODE diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index fc3b26d8a061..3928078d64bc 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -203,7 +203,7 @@ // #if DISABLED(PIDTEMPBED) #define BED_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) + #if ANY(BED_LIMIT_SWITCHING, PELTIER_BED) #define BED_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > BED_HYSTERESIS #endif #endif diff --git a/Marlin/Makefile b/Marlin/Makefile index e5ba9cb341e4..0c5d7c227314 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -187,6 +187,17 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1033) # RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan) else ifeq ($(HARDWARE_MOTHERBOARD),1034) +# RAMPS 1.6+ (Power outputs: Hotend, Fan, Bed) +else ifeq ($(HARDWARE_MOTHERBOARD),1035) +# RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Bed) +else ifeq ($(HARDWARE_MOTHERBOARD),1036) +# RAMPS 1.6+ (Power outputs: Hotend, Fan0, Fan1) +else ifeq ($(HARDWARE_MOTHERBOARD),1037) +# RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Fan) +else ifeq ($(HARDWARE_MOTHERBOARD),1038) +# RAMPS 1.6+ (Power outputs: Spindle, Controller Fan) +else ifeq ($(HARDWARE_MOTHERBOARD),1039) + # # RAMPS Derivatives - ATmega1280, ATmega2560 # @@ -221,108 +232,113 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1112) else ifeq ($(HARDWARE_MOTHERBOARD),1113) # BigTreeTech or BIQU KFB2.0 else ifeq ($(HARDWARE_MOTHERBOARD),1114) -# zrib V2.0 (Chinese RAMPS replica) +# Zonestar zrib V2.0 (Chinese RAMPS replica) else ifeq ($(HARDWARE_MOTHERBOARD),1115) -# zrib V5.2 (Chinese RAMPS replica) +# Zonestar zrib V5.2 (Chinese RAMPS replica) else ifeq ($(HARDWARE_MOTHERBOARD),1116) -# Felix 2.0+ Electronics Board (RAMPS like) +# Zonestar zrib V5.3 (Chinese RAMPS replica) else ifeq ($(HARDWARE_MOTHERBOARD),1117) -# Invent-A-Part RigidBoard +# Felix 2.0+ Electronics Board (RAMPS like) else ifeq ($(HARDWARE_MOTHERBOARD),1118) -# Invent-A-Part RigidBoard V2 +# Invent-A-Part RigidBoard else ifeq ($(HARDWARE_MOTHERBOARD),1119) -# Sainsmart 2-in-1 board +# Invent-A-Part RigidBoard V2 else ifeq ($(HARDWARE_MOTHERBOARD),1120) -# Ultimaker +# Sainsmart 2-in-1 board else ifeq ($(HARDWARE_MOTHERBOARD),1121) -# Ultimaker (Older electronics. Pre 1.5.4. This is rare) +# Ultimaker else ifeq ($(HARDWARE_MOTHERBOARD),1122) +# Ultimaker (Older electronics. Pre 1.5.4. This is rare) +else ifeq ($(HARDWARE_MOTHERBOARD),1123) MCU ?= atmega1280 PROG_MCU ?= m1280 # Azteeg X3 -else ifeq ($(HARDWARE_MOTHERBOARD),1123) -# Azteeg X3 Pro else ifeq ($(HARDWARE_MOTHERBOARD),1124) -# Ultimainboard 2.x (Uses TEMP_SENSOR 20) +# Azteeg X3 Pro else ifeq ($(HARDWARE_MOTHERBOARD),1125) -# Rumba +# Ultimainboard 2.x (Uses TEMP_SENSOR 20) else ifeq ($(HARDWARE_MOTHERBOARD),1126) -# Raise3D N series Rumba derivative +# Rumba else ifeq ($(HARDWARE_MOTHERBOARD),1127) -# Rapide Lite 200 (v1, low-cost RUMBA clone with drv) +# Raise3D N series Rumba derivative else ifeq ($(HARDWARE_MOTHERBOARD),1128) -# Formbot T-Rex 2 Plus +# Rapide Lite 200 (v1, low-cost RUMBA clone with drv) else ifeq ($(HARDWARE_MOTHERBOARD),1129) -# Formbot T-Rex 3 +# Formbot T-Rex 2 Plus else ifeq ($(HARDWARE_MOTHERBOARD),1130) -# Formbot Raptor +# Formbot T-Rex 3 else ifeq ($(HARDWARE_MOTHERBOARD),1131) -# Formbot Raptor 2 +# Formbot Raptor else ifeq ($(HARDWARE_MOTHERBOARD),1132) -# bq ZUM Mega 3D +# Formbot Raptor 2 else ifeq ($(HARDWARE_MOTHERBOARD),1133) -# MakeBoard Mini v2.1.2 by MicroMake +# bq ZUM Mega 3D else ifeq ($(HARDWARE_MOTHERBOARD),1134) -# TriGorilla Anycubic version 1.3-based on RAMPS EFB +# MakeBoard Mini v2.1.2 by MicroMake else ifeq ($(HARDWARE_MOTHERBOARD),1135) -# ... Ver 1.4 +# TriGorilla Anycubic version 1.3-based on RAMPS EFB else ifeq ($(HARDWARE_MOTHERBOARD),1136) -# ... Rev 1.1 (new servo pin order) +# ... Ver 1.4 else ifeq ($(HARDWARE_MOTHERBOARD),1137) -# Creality: Ender-4, CR-8 +# ... Rev 1.1 (new servo pin order) else ifeq ($(HARDWARE_MOTHERBOARD),1138) -# Creality: CR10S, CR20, CR-X +# Creality: Ender-4, CR-8 else ifeq ($(HARDWARE_MOTHERBOARD),1139) -# Dagoma F5 +# Creality: CR10S, CR20, CR-X else ifeq ($(HARDWARE_MOTHERBOARD),1140) -# FYSETC F6 1.3 +# Dagoma F5 else ifeq ($(HARDWARE_MOTHERBOARD),1141) -# FYSETC F6 1.4 +# Dagoma D6 (as found in the Dagoma DiscoUltimate V2 TMC) else ifeq ($(HARDWARE_MOTHERBOARD),1142) -# Wanhao Duplicator i3 Plus +# FYSETC F6 1.3 else ifeq ($(HARDWARE_MOTHERBOARD),1143) -# VORON Design +# FYSETC F6 1.4 else ifeq ($(HARDWARE_MOTHERBOARD),1144) -# Tronxy TRONXY-V3-1.0 +# Wanhao Duplicator i3 Plus else ifeq ($(HARDWARE_MOTHERBOARD),1145) -# Z-Bolt X Series +# VORON Design else ifeq ($(HARDWARE_MOTHERBOARD),1146) -# TT OSCAR +# Tronxy TRONXY-V3-1.0 else ifeq ($(HARDWARE_MOTHERBOARD),1147) -# Overlord/Overlord Pro +# Z-Bolt X Series else ifeq ($(HARDWARE_MOTHERBOARD),1148) -# ADIMLab Gantry v1 +# TT OSCAR else ifeq ($(HARDWARE_MOTHERBOARD),1149) -# ADIMLab Gantry v2 -else ifeq ($(HARDWARE_MOTHERBOARD),1150) # BIQU Tango V1 -else ifeq ($(HARDWARE_MOTHERBOARD),1151) +else ifeq ($(HARDWARE_MOTHERBOARD),1150) # MKS GEN L V2 -else ifeq ($(HARDWARE_MOTHERBOARD),1152) +else ifeq ($(HARDWARE_MOTHERBOARD),1151) # MKS GEN L V2.1 -else ifeq ($(HARDWARE_MOTHERBOARD),1153) +else ifeq ($(HARDWARE_MOTHERBOARD),1152) # Copymaster 3D -else ifeq ($(HARDWARE_MOTHERBOARD),1154) +else ifeq ($(HARDWARE_MOTHERBOARD),1153) # Ortur 4 -else ifeq ($(HARDWARE_MOTHERBOARD),1155) +else ifeq ($(HARDWARE_MOTHERBOARD),1154) # Tenlog D3 Hero IDEX printer +else ifeq ($(HARDWARE_MOTHERBOARD),1155) +# Tenlog D3, D5, D6 IDEX Printer else ifeq ($(HARDWARE_MOTHERBOARD),1156) -# Tenlog D3,5,6 Pro IDEX printers -else ifeq ($(HARDWARE_MOTHERBOARD),1157) # Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed) -else ifeq ($(HARDWARE_MOTHERBOARD),1158) +else ifeq ($(HARDWARE_MOTHERBOARD),1157) # Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed) -else ifeq ($(HARDWARE_MOTHERBOARD),1159) +else ifeq ($(HARDWARE_MOTHERBOARD),1158) # Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed) -else ifeq ($(HARDWARE_MOTHERBOARD),1160) +else ifeq ($(HARDWARE_MOTHERBOARD),1159) # Longer LK1 PRO / Alfawise U20 Pro (PRO version) -else ifeq ($(HARDWARE_MOTHERBOARD),1161) +else ifeq ($(HARDWARE_MOTHERBOARD),1160) # Longer LKx PRO / Alfawise Uxx Pro (PRO version) +else ifeq ($(HARDWARE_MOTHERBOARD),1161) +# Pxmalion Core I3 else ifeq ($(HARDWARE_MOTHERBOARD),1162) -# Zonestar zrib V5.3 (Chinese RAMPS replica) +# Panowin Cutlass (as found in the Panowin F1) else ifeq ($(HARDWARE_MOTHERBOARD),1163) -# Pxmalion Core I3 +# Kodama Bardo V1.x (as found in the Kodama Trinus) else ifeq ($(HARDWARE_MOTHERBOARD),1164) +# XTLW MFF V1.0 +else ifeq ($(HARDWARE_MOTHERBOARD),1165) +# XTLW MFF V2.0 +else ifeq ($(HARDWARE_MOTHERBOARD),1166) + # # RAMBo and derivatives @@ -340,7 +356,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1203) else ifeq ($(HARDWARE_MOTHERBOARD),1204) # abee Scoovo X9H else ifeq ($(HARDWARE_MOTHERBOARD),1205) -# Rambo ThinkerV2 +# ThinkerV2 else ifeq ($(HARDWARE_MOTHERBOARD),1206) # @@ -383,30 +399,40 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1315) else ifeq ($(HARDWARE_MOTHERBOARD),1316) # Geeetech GT2560 Rev B for A10(M/T/D) else ifeq ($(HARDWARE_MOTHERBOARD),1317) -# Geeetech GT2560 Rev B for A10(M/T/D) -else ifeq ($(HARDWARE_MOTHERBOARD),1318) # Geeetech GT2560 Rev B for Mecreator2 -else ifeq ($(HARDWARE_MOTHERBOARD),1319) +else ifeq ($(HARDWARE_MOTHERBOARD),1318) # Geeetech GT2560 Rev B for A20(M/T/D) +else ifeq ($(HARDWARE_MOTHERBOARD),1319) +# Geeetech GT2560 Rev B for A10(M/T/D) else ifeq ($(HARDWARE_MOTHERBOARD),1320) -# Einstart retrofit +# Geeetech GT2560 Rev B for A20(M/T/D) else ifeq ($(HARDWARE_MOTHERBOARD),1321) -# Wanhao 0ne+ i3 Mini +# Einstart retrofit else ifeq ($(HARDWARE_MOTHERBOARD),1322) -# Leapfrog Xeed 2015 +# Wanhao 0ne+ i3 Mini else ifeq ($(HARDWARE_MOTHERBOARD),1323) -# PICA Shield (original version) +# Overlord/Overlord Pro else ifeq ($(HARDWARE_MOTHERBOARD),1324) -# PICA Shield (rev C or later) +# ADIMLab Gantry v1 else ifeq ($(HARDWARE_MOTHERBOARD),1325) -# Intamsys 4.0 (Funmat HT) +# ADIMLab Gantry v2 else ifeq ($(HARDWARE_MOTHERBOARD),1326) -# Malyan M180 Mainboard Version 2 (no display function, direct G-code only) +# Leapfrog Xeed 2015 else ifeq ($(HARDWARE_MOTHERBOARD),1327) -# Geeetech GT2560 Rev B for A20(M/T/D) +# PICA Shield (original version) else ifeq ($(HARDWARE_MOTHERBOARD),1328) -# Mega controller & Protoneer CNC Shield V3.00 +# PICA Shield (rev C or later) else ifeq ($(HARDWARE_MOTHERBOARD),1329) +# Intamsys 4.0 (Funmat HT) +else ifeq ($(HARDWARE_MOTHERBOARD),1330) +# Malyan M180 Mainboard Version 2 (no display function, direct G-code only) +else ifeq ($(HARDWARE_MOTHERBOARD),1331) +# Mega controller & Protoneer CNC Shield V3.00 +else ifeq ($(HARDWARE_MOTHERBOARD),1332) +# WEEDO 62A board (TINA2, Monoprice Cadet, etc.) +else ifeq ($(HARDWARE_MOTHERBOARD),1333) +# Geeetech GT2560 V4.1B for A10(M/T/D) +else ifeq ($(HARDWARE_MOTHERBOARD),1334) # # ATmega1281, ATmega2561 @@ -440,7 +466,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1502) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega644p PROG_MCU ?= m644p -# Melzi V2.0 +# Melzi V2 else ifeq ($(HARDWARE_MOTHERBOARD),1503) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p @@ -450,36 +476,41 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1504) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# Melzi Creality3D board (for CR-10 etc) +# Melzi Creality3D (for CR-10 etc) else ifeq ($(HARDWARE_MOTHERBOARD),1505) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# Melzi Malyan M150 board +# Melzi Creality3D (for Ender-2) else ifeq ($(HARDWARE_MOTHERBOARD),1506) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# Tronxy X5S +# Melzi Malyan M150 else ifeq ($(HARDWARE_MOTHERBOARD),1507) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# STB V1.1 +# Tronxy X5S else ifeq ($(HARDWARE_MOTHERBOARD),1508) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# Azteeg X1 +# STB V1.1 else ifeq ($(HARDWARE_MOTHERBOARD),1509) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p -# Anet 1.0 (Melzi clone) +# Azteeg X1 else ifeq ($(HARDWARE_MOTHERBOARD),1510) HARDWARE_VARIANT ?= Sanguino MCU ?= atmega1284p PROG_MCU ?= m1284p +# Anet 1.0 (Melzi clone) +else ifeq ($(HARDWARE_MOTHERBOARD),1511) + HARDWARE_VARIANT ?= Sanguino + MCU ?= atmega1284p + PROG_MCU ?= m1284p # ZoneStar ZMIB V2 else ifeq ($(HARDWARE_MOTHERBOARD),1511) HARDWARE_VARIANT ?= Sanguino diff --git a/Marlin/Version.h b/Marlin/Version.h index c5ff3bdc2773..60be992edac9 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2024-10-05" +//#define STRING_DISTRIBUTION_DATE "2024-10-17" /** * Defines a generic printer name to be output to the LCD after booting Marlin. diff --git a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp index e508f90e61d6..bb011ec6f452 100644 --- a/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp +++ b/Marlin/src/HAL/STM32/tft/tft_fsmc.cpp @@ -111,11 +111,11 @@ void TFT_FSMC::init() { HAL_SRAM_Init(&SRAMx, &timing, &extTiming); + __HAL_RCC_DMA2_CLK_ENABLE(); + #ifdef STM32F1xx - __HAL_RCC_DMA1_CLK_ENABLE(); - DMAtx.Instance = DMA1_Channel1; + DMAtx.Instance = DMA2_Channel1; #elif defined(STM32F4xx) - __HAL_RCC_DMA2_CLK_ENABLE(); DMAtx.Instance = DMA2_Stream0; DMAtx.Init.Channel = DMA_CHANNEL_0; DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index fb17669161fd..f48f6d28e183 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -79,8 +79,8 @@ #define BOARD_MKS_GEN_13 1112 // MKS GEN v1.3 or 1.4 #define BOARD_MKS_GEN_L 1113 // MKS GEN L #define BOARD_KFB_2 1114 // BigTreeTech or BIQU KFB2.0 -#define BOARD_ZRIB_V20 1115 // zrib V2.0 (Chinese RAMPS replica) -#define BOARD_ZRIB_V52 1116 // zrib V5.2 (Chinese RAMPS replica) +#define BOARD_ZRIB_V20 1115 // Zonestar zrib V2.0 (Chinese RAMPS replica) +#define BOARD_ZRIB_V52 1116 // Zonestar zrib V5.2 (Chinese RAMPS replica) #define BOARD_ZRIB_V53 1117 // Zonestar zrib V5.3 (Chinese RAMPS replica) #define BOARD_FELIX2 1118 // Felix 2.0+ Electronics Board (RAMPS like) #define BOARD_RIGIDBOARD 1119 // Invent-A-Part RigidBoard diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index e641a1431b4b..3a9a24a51c28 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -191,6 +191,7 @@ #define STR_ERR_HOTEND_TOO_COLD "Hotend too cold" #define STR_ERR_EEPROM_WRITE "Error writing to EEPROM!" #define STR_ERR_EEPROM_CORRUPT "EEPROM Corrupt" +#define STR_EEPROM_INITIALIZED "EEPROM Initialized" #define STR_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle" #define STR_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button" diff --git a/Marlin/src/feature/hotend_idle.cpp b/Marlin/src/feature/hotend_idle.cpp index 050898e3b53b..eb16781fdd1a 100644 --- a/Marlin/src/feature/hotend_idle.cpp +++ b/Marlin/src/feature/hotend_idle.cpp @@ -40,7 +40,7 @@ HotendIdleProtection hotend_idle; millis_t HotendIdleProtection::next_protect_ms = 0; -hotend_idle_settings_t HotendIdleProtection::cfg; // Initialized by settings.load() +hotend_idle_settings_t HotendIdleProtection::cfg; // Initialized by settings.load void HotendIdleProtection::check_hotends(const millis_t &ms) { const bool busy = (TERN0(HAS_RESUME_CONTINUE, wait_for_user) || planner.has_blocks_queued()); diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index b7dcf0038548..6c35de7cb5cc 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -35,10 +35,10 @@ #include "../lcd/extui/ui_api.h" #endif -bool PrintJobRecovery::enabled; // Initialized by settings.load() +bool PrintJobRecovery::enabled; // Initialized by settings.load #if HAS_PLR_BED_THRESHOLD - celsius_t PrintJobRecovery::bed_temp_threshold; // Initialized by settings.load() + celsius_t PrintJobRecovery::bed_temp_threshold; // Initialized by settings.load #endif MediaFile PrintJobRecovery::file; diff --git a/Marlin/src/feature/x_twist.cpp b/Marlin/src/feature/x_twist.cpp index b8f7e52ab6d5..2b7924707e9a 100644 --- a/Marlin/src/feature/x_twist.cpp +++ b/Marlin/src/feature/x_twist.cpp @@ -30,7 +30,7 @@ XATC xatc; bool XATC::enabled; float XATC::spacing, XATC::start; -xatc_array_t XATC::z_offset; // Initialized by settings.load() +xatc_array_t XATC::z_offset; // Initialized by settings.load void XATC::reset() { constexpr float xzo[] = XATC_Z_OFFSETS; diff --git a/Marlin/src/inc/Conditionals-5-post.h b/Marlin/src/inc/Conditionals-5-post.h index 8579afc6eb54..55d91c4b81dc 100644 --- a/Marlin/src/inc/Conditionals-5-post.h +++ b/Marlin/src/inc/Conditionals-5-post.h @@ -3039,7 +3039,7 @@ #endif /** - * Heated bed requires settings + * Heated Bed required settings */ #if HAS_HEATED_BED #ifndef MIN_BED_POWER @@ -3049,6 +3049,14 @@ #define MAX_BED_POWER 255 #endif #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ ENABLED(HEATER_BED_INVERTING)) + #if ENABLED(PELTIER_BED) + /** + * A "Heated Bed" Peltier device needs a direction (heat/cool) to be + * implemented by a relay (single pin) or H-bridge (2 or 4 pin). + * H-Bridge can also perform PWM. (Not recommended for Peltier devices). + */ + #define WRITE_PELTIER_DIR(v) WRITE(PELTIER_DIR_PIN, (v) ? PELTIER_DIR_HEAT_STATE : !PELTIER_DIR_HEAT_STATE) + #endif #endif /** diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 818af3e0bee0..9a8efb0b8216 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1073,8 +1073,8 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #error "DIRECT_STEPPING does not currently support more than 3 axes (i.e., XYZ)." #elif ENABLED(FOAMCUTTER_XYUV) && !(HAS_I_AXIS && HAS_J_AXIS) #error "FOAMCUTTER_XYUV requires I and J steppers to be enabled." -#elif ENABLED(LINEAR_ADVANCE) && HAS_I_AXIS - #error "LINEAR_ADVANCE does not currently support the inclusion of an I axis." +#elif ENABLED(LIN_ADVANCE) && HAS_I_AXIS + #error "LIN_ADVANCE does not currently support the inclusion of an I axis." #endif /** diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 9b94d5101816..b49dbcb02c2b 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2024-10-05" + #define STRING_DISTRIBUTION_DATE "2024-10-17" #endif /** diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index f10408dd9c44..0ccc9d6acf68 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -921,3 +921,10 @@ #if defined(ARDUINO_ARCH_HC32) && F_CPU == 200000000 #warning "HC32 clock is assumed to be 200MHz. If this isn't the case for your board please submit a report so we can add support." #endif + +/** + * Peltier with PIDTEMPBED + */ +#if ALL(PELTIER_BED, PIDTEMPBED) + #warning "PELTIER_BED with PIDTEMPBED requires extra circuitry. Use with caution." +#endif diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el.h b/Marlin/src/lcd/dogm/fontdata/langdata_el.h index 6fefab9c61a1..9faacfbd24b6 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_el.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_el.h @@ -11,19 +11,21 @@ const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00, 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80, 0xF8}; -const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00, +const u8g_fntpgm_uint8_t fontpage_7_145_149[82] U8G_FONT_SECTION("fontpage_7_145_149") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x95,0x00,0x07,0x00,0x00, 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07, 0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00, 0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20, 0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80, - 0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05, - 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06, - 0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0, - 0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0, - 0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88, - 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07, - 0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88}; + 0x80,0xF8}; +const u8g_fntpgm_uint8_t fontpage_7_151_157[108] U8G_FONT_SECTION("fontpage_7_151_157") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x00,0x07,0x00,0x00, + 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07, + 0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01, + 0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90, + 0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88, + 0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05, + 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88}; const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00, 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07, @@ -79,7 +81,8 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1 static const uxg_fontinfo_t g_fontinfo_el[] PROGMEM = { FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ' - FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν' + FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // 'Α' -- 'Ε' + FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // 'Η' -- 'Ν' FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ' FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ' FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί' diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h b/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h index c3a2264aecd5..6ad34ebc9564 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h @@ -11,19 +11,21 @@ const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00, 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80, 0xF8}; -const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = { - 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00, +const u8g_fntpgm_uint8_t fontpage_7_145_149[82] U8G_FONT_SECTION("fontpage_7_145_149") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x95,0x00,0x07,0x00,0x00, 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07, 0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00, 0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20, 0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80, - 0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05, - 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06, - 0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0, - 0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0, - 0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88, - 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07, - 0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88}; + 0x80,0xF8}; +const u8g_fntpgm_uint8_t fontpage_7_151_157[108] U8G_FONT_SECTION("fontpage_7_151_157") = { + 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x9D,0x00,0x07,0x00,0x00, + 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07, + 0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01, + 0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90, + 0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88, + 0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05, + 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88}; const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = { 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00, 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07, @@ -79,7 +81,8 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1 static const uxg_fontinfo_t g_fontinfo_el_CY[] PROGMEM = { FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ' - FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν' + FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // 'Α' -- 'Ε' + FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // 'Η' -- 'Ν' FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ' FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ' FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί' diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp index c215afb7301f..29316c553dbe 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp @@ -390,8 +390,9 @@ void MarlinUI::clear_for_drawing() { } #if HAS_DISPLAY_SLEEP + static bool asleep = false; + bool MarlinUI::display_is_asleep() { return asleep; } void MarlinUI::sleep_display(const bool sleep/*=true*/) { - static bool asleep = false; if (asleep != sleep) { sleep ? u8g.sleepOn() : u8g.sleepOff(); asleep = sleep; diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index dc8c70248dbd..894d78198da2 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -3358,7 +3358,7 @@ void drawFilSetMenu() { if (SET_MENU(ledControlMenu, MSG_LED_CONTROL, 10)) { BACK_ITEM((currentMenu == tuneMenu) ? drawTuneMenu : drawControlMenu); #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) - EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, setLedStatus, &leds.lights_on); + EDIT_ITEM(ICON_LedControl, MSG_LIGHTS, onDrawChkbMenu, setLedStatus, &leds.lights_on); #endif #if HAS_COLOR_LEDS #if ENABLED(LED_COLOR_PRESETS) @@ -3450,7 +3450,7 @@ void drawTuneMenu() { MENU_ITEM(ICON_LedControl, MSG_LED_CONTROL, onDrawSubMenu, drawLedControlMenu); #endif #elif ENABLED(LED_CONTROL_MENU) && DISABLED(CASE_LIGHT_USE_NEOPIXEL) - EDIT_ITEM(ICON_LedControl, MSG_LEDS, onDrawChkbMenu, setLedStatus, &leds.lights_on); + EDIT_ITEM(ICON_LedControl, MSG_LIGHTS, onDrawChkbMenu, setLedStatus, &leds.lights_on); #endif } updateMenu(tuneMenu); diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp index 8e2b1bb8e48a..6429ac07e5cd 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp @@ -59,9 +59,9 @@ float Z_distance = 0.1; // // Persistent settings // -xy_int_t mks_corner_offsets[5]; // Initialized by settings.load() -xyz_int_t mks_park_pos; // Initialized by settings.load() -celsius_t mks_min_extrusion_temp; // Initialized by settings.load() +xy_int_t mks_corner_offsets[5]; // Initialized by settings.load +xyz_int_t mks_park_pos; // Initialized by settings.load +celsius_t mks_min_extrusion_temp; // Initialized by settings.load void MKS_reset_settings() { constexpr xy_int_t init_dgus_level_offsets[5] = { diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 4af271951d55..edaff3b845dc 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -52,7 +52,7 @@ #endif bool DGUSAutoTurnOff = false; -MKS_Language mks_language_index; // Initialized by settings.load() +MKS_Language mks_language_index; // Initialized by settings.load #if 0 void DGUSScreenHandlerMKS::sendinfoscreen_ch(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4) { diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/case_light_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/case_light_screen.cpp index 8fbb400a681b..23140ea6513e 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/case_light_screen.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/case_light_screen.cpp @@ -31,7 +31,7 @@ using namespace Theme; void CaseLightScreen::onRedraw(draw_mode_t what) { widgets_t w(what); w.heading( GET_TEXT_F(MSG_CASE_LIGHT)); - w.toggle( 2, GET_TEXT_F(MSG_LEDS), getCaseLightState()); + w.toggle( 2, GET_TEXT_F(MSG_LIGHTS), getCaseLightState()); #if DISABLED(CASE_LIGHT_NO_BRIGHTNESS) w.precision(0).units(GET_TEXT_F(MSG_UNITS_PERCENT)) .adjuster(10, GET_TEXT_F(MSG_CASE_LIGHT_BRIGHTNESS), getCaseLightBrightness_percent()); diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index a84f816ffbda..bd54a4803efa 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -159,7 +159,10 @@ namespace LanguageNarrow_an { LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar tarcheta"); LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera"); LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Probe Z con pas"); LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 5c10cefb8ec8..7b58b263eebe 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -142,7 +142,10 @@ namespace LanguageNarrow_bg { LSTR MSG_ATTACH_MEDIA = _UxGT("Иниц. SD-Карта"); LSTR MSG_CHANGE_MEDIA = _UxGT("Смяна SD-Карта"); LSTR MSG_ZPROBE_OUT = _UxGT("Z-сондата е извадена"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Отстояние"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Отстояние"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Отстояние"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Отстояние"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Промяна на Z"); LSTR MSG_BABYSTEP_X = _UxGT("Министъпка X"); LSTR MSG_BABYSTEP_Y = _UxGT("Министъпка Y"); diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index 54bfa38bbdb2..3c753de53e99 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -150,7 +150,10 @@ namespace LanguageNarrow_ca { LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fora"); LSTR MSG_BLTOUCH_RESET = _UxGT("Reinicia BLTouch"); LSTR MSG_HOME_FIRST = _UxGT("Home %s primer"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalatge X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalatge Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalatge Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalatge @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas a pas el Z"); LSTR MSG_BABYSTEP_X = _UxGT("Micropas X"); LSTR MSG_BABYSTEP_Y = _UxGT("Micropas Y"); diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index 8884792c51f7..2217ee5fbd15 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -200,7 +200,8 @@ namespace LanguageNarrow_cz { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Uložit síť bodů"); LSTR MSG_LED_CONTROL = _UxGT("Nastavení LED"); - LSTR MSG_LEDS = _UxGT("Světla"); + LSTR MSG_LIGHTS = _UxGT("Světla"); + LSTR MSG_LIGHT_N = _UxGT("Světla #{"); LSTR MSG_LED_PRESETS = _UxGT("Světla Předvolby"); LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); @@ -384,7 +385,10 @@ namespace LanguageNarrow_cz { LSTR MSG_MANUAL_DEPLOY = _UxGT("Vysunout Z-sondu"); LSTR MSG_MANUAL_STOW = _UxGT("Zasunout Z-sondu"); LSTR MSG_HOME_FIRST = _UxGT("Domů %s první"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok a Z offset"); LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 7c3a5ebfd86e..afabace283c8 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -254,7 +254,8 @@ namespace LanguageNarrow_de { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Bettnetz speichern"); LSTR MSG_LED_CONTROL = _UxGT("Licht-Steuerung"); - LSTR MSG_LEDS = _UxGT("Licht"); + LSTR MSG_LIGHTS = _UxGT("Licht"); + LSTR MSG_LIGHT_N = _UxGT("Lichter #{"); LSTR MSG_LED_PRESETS = _UxGT("Licht-Einstellung"); LSTR MSG_SET_LEDS_RED = _UxGT("Rot"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -266,7 +267,6 @@ namespace LanguageNarrow_de { LSTR MSG_SET_LEDS_WHITE = _UxGT("Weiß"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_LEDS2 = _UxGT("Lichter #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Licht #2 Voreinst."); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Helligkeit"); LSTR MSG_CUSTOM_LEDS = _UxGT("Benutzerdefiniert"); @@ -525,6 +525,7 @@ namespace LanguageNarrow_de { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Sondenversatz X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Sondenversatz Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Sondenversatz Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sondenversatz @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z Offset mit Pas"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Sondenrand"); LSTR MSG_Z_FEED_RATE = _UxGT("Z-Vorschub"); diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index bcc7696b9d59..e971af32d59d 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -184,15 +184,18 @@ namespace LanguageNarrow_el { LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); // SHORTEN LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πρώτα"); - LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥΖ πρώτα"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Ζ"); + LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥZ πρώτα"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); - LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Ζ"); + LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Ακύρωση endstop"); LSTR MSG_ERR_HEATING_FAILED = _UxGT("Αποτυχία θέρμανσης"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΘΕΡΜΙΚΗ ΔΙΑΦΥΓΗ"); LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("ΘΕΡΜΙΚΗ ΔΥΣΛΕΙΤΟΥΡΓΙΑ"); LSTR MSG_ERR_MAXTEMP = _UxGT("ΠΕΡΙΤΤΗ ΘΕΡΜΟΚΡΑΣΙΑ"); diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index 87f56455bde3..e2a34765ce21 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -47,7 +47,7 @@ namespace LanguageNarrow_el_gr { LSTR MSG_AUTO_HOME_X = _UxGT("Αρχικό σημείο X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Αρχικό σημείο Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Αρχικό σημείο Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥΖ"); + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥZ"); LSTR MSG_LEVEL_BED_WAITING = _UxGT("Κάντε κλικ για να ξεκινήσετε"); LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο"); LSTR MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); @@ -173,16 +173,19 @@ namespace LanguageNarrow_el_gr { LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία κάρτας SD"); LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός κλίνης"); - LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πριν από Ζ"); - LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥΖ πρώτα"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Ζ"); + LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πριν από Z"); + LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥZ πρώτα"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); - LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Ζ"); + LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Ματαίωση endstop "); LSTR MSG_ERR_HEATING_FAILED = _UxGT("Ανεπιτυχής θέρμανση"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Λάθος: ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ"); LSTR MSG_ERR_MAXTEMP = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); LSTR MSG_ERR_MINTEMP = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index ad83797a41fb..b2d4aa7dbbd4 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -310,7 +310,8 @@ namespace LanguageNarrow_en { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh"); LSTR MSG_LED_CONTROL = _UxGT("LED Control"); - LSTR MSG_LEDS = _UxGT("Lights"); + LSTR MSG_LIGHTS = _UxGT("Lights"); + LSTR MSG_LIGHT_N = _UxGT("Light #{"); LSTR MSG_LED_PRESETS = _UxGT("Light Presets"); LSTR MSG_SET_LEDS_RED = _UxGT("Red"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -322,7 +323,6 @@ namespace LanguageNarrow_en { LSTR MSG_SET_LEDS_WHITE = _UxGT("White"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Default"); LSTR MSG_LED_CHANNEL_N = _UxGT("Channel {"); - LSTR MSG_LEDS2 = _UxGT("Lights #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Light #2 Presets"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Brightness"); LSTR MSG_CUSTOM_LEDS = _UxGT("Custom Lights"); @@ -331,6 +331,8 @@ namespace LanguageNarrow_en { LSTR MSG_INTENSITY_B = _UxGT("Blue Intensity"); LSTR MSG_INTENSITY_W = _UxGT("White Intensity"); LSTR MSG_LED_BRIGHTNESS = _UxGT("Brightness"); + LSTR MSG_LIGHT_ENCODER = _UxGT("Encoder Light"); + LSTR MSG_LIGHT_ENCODER_PRESETS = _UxGT("Encoder Light Presets"); LSTR MSG_MOVING = _UxGT("Moving..."); LSTR MSG_FREE_XY = _UxGT("Free XY"); @@ -496,6 +498,7 @@ namespace LanguageNarrow_en { LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); + LSTR MSG_EEPROM_INITIALIZED = _UxGT("EEPROM Initialized"); LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Size"); LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version"); @@ -639,6 +642,7 @@ namespace LanguageNarrow_en { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Probe Margin"); LSTR MSG_ZOFFSET = _UxGT("Z Offset"); @@ -1097,6 +1101,7 @@ namespace LanguageWide_en { LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total"); LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feedrate"); + LSTR MSG_EEPROM_INITIALIZED = _UxGT("Default Settings Restored"); #endif } diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index e3ca432e7825..5863b63a0e7e 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -198,7 +198,8 @@ namespace LanguageNarrow_es { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Guardar Mall. cama"); LSTR MSG_LED_CONTROL = _UxGT("Control LED"); - LSTR MSG_LEDS = _UxGT("LEDS"); + LSTR MSG_LIGHTS = _UxGT("Luces"); + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); LSTR MSG_LED_PRESETS = _UxGT("Color predefinido"); LSTR MSG_SET_LEDS_RED = _UxGT("Rojo"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Naranja"); @@ -395,6 +396,7 @@ namespace LanguageNarrow_es { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desf. Sonda X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desf. Sonda Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desf. Sonda Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desf. Sonda @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Ajuste Z al paso"); LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 86cffd27c994..2e49cf50e9e0 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -108,7 +108,8 @@ namespace LanguageNarrow_eu { LSTR MSG_UBL_MESH_LEVEL = _UxGT("Sarea berdindu"); LSTR MSG_UBL_MAP_TYPE = _UxGT("Mapa mota"); LSTR MSG_LED_CONTROL = _UxGT("LED ezarpenak"); - LSTR MSG_LEDS = _UxGT("Argiak"); + LSTR MSG_LIGHTS = _UxGT("Argiak"); + LSTR MSG_LIGHT_N = _UxGT("Argi #{"); LSTR MSG_LED_PRESETS = _UxGT("Argi aurrehautaketak"); LSTR MSG_SET_LEDS_RED = _UxGT("Gorria"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranja"); @@ -228,7 +229,10 @@ namespace LanguageNarrow_eu { LSTR MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch jaitsi/luzatu"); LSTR MSG_BLTOUCH_STOW = _UxGT("BLTouch igo/jaso"); LSTR MSG_HOME_FIRST = _UxGT("Etxera %s lehenengo"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Konpentsatu"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Konpentsatu"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Konpentsatu"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Konpentsatu"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z pausoz egokitu"); LSTR MSG_BABYSTEP_X = _UxGT("Mikro-urratsa X"); LSTR MSG_BABYSTEP_Y = _UxGT("Mikro-urratsa Y"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index dae5a32c9a6c..169363339e38 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -202,7 +202,8 @@ namespace LanguageNarrow_fr { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); LSTR MSG_LED_CONTROL = _UxGT("Contrôle LED"); - LSTR MSG_LEDS = _UxGT("Lumière"); + LSTR MSG_LIGHTS = _UxGT("Lumière"); + LSTR MSG_LIGHT_N = _UxGT("Lumière #{"); LSTR MSG_LED_PRESETS = _UxGT("Préregl. LED"); LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -420,6 +421,7 @@ namespace LanguageNarrow_fr { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Décalage X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Décalage Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Décalage Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Décalage @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index c158cd32c85f..a2c5f024b9b6 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -202,7 +202,8 @@ namespace LanguageNarrow_fr_na { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); LSTR MSG_LED_CONTROL = _UxGT("Controle LED"); - LSTR MSG_LEDS = _UxGT("Lumiere"); + LSTR MSG_LIGHTS = _UxGT("Lumiere"); + LSTR MSG_LIGHT_N = _UxGT("Lumiere #{"); LSTR MSG_LED_PRESETS = _UxGT("Preregl. LED"); LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -420,6 +421,7 @@ namespace LanguageNarrow_fr_na { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalage X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalage Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalage Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalage @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index cc334ea19cff..dc04f481ec5f 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -195,7 +195,8 @@ namespace LanguageNarrow_gl { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Gardar Malla Cama"); LSTR MSG_LED_CONTROL = _UxGT("Control LED"); - LSTR MSG_LEDS = _UxGT("Luces"); + LSTR MSG_LIGHTS = _UxGT("Luces"); + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); LSTR MSG_LED_PRESETS = _UxGT("Axustes Luz"); LSTR MSG_SET_LEDS_RED = _UxGT("Vermello"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranxa"); @@ -409,7 +410,8 @@ namespace LanguageNarrow_gl { LSTR MSG_ZPROBE_OFFSETS = _UxGT("Desfases Sonda"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase Sonda X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Sonda Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Sonda Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase Sonda @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Micropaso Sonda-Z"); LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 7ca5b39ff248..fd81dc6b1812 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -226,7 +226,8 @@ namespace LanguageNarrow_hu { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Ágy háló mentése"); LSTR MSG_LED_CONTROL = _UxGT("LED vezérlés"); - LSTR MSG_LEDS = _UxGT("Világítás"); + LSTR MSG_LIGHTS = _UxGT("Világítás"); + LSTR MSG_LIGHT_N = _UxGT("Világítás #{"); LSTR MSG_LED_PRESETS = _UxGT("Beállított színek"); LSTR MSG_SET_LEDS_RED = _UxGT("Piros"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Narancs"); @@ -238,7 +239,6 @@ namespace LanguageNarrow_hu { LSTR MSG_SET_LEDS_WHITE = _UxGT("Fehér"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Alapérték"); LSTR MSG_LED_CHANNEL_N = _UxGT("Csatorna {"); - LSTR MSG_LEDS2 = _UxGT("LED-ek #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Fény #2 megadott"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Fényerö"); LSTR MSG_CUSTOM_LEDS = _UxGT("Egyéni szín"); @@ -461,6 +461,7 @@ namespace LanguageNarrow_hu { LSTR MSG_ZPROBE_XOFFSET = _UxGT("X szonda eltolás"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y szonda eltolás"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z szonda eltolás"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ szonda eltolás"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z lépés állítás"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Fej az ágyhoz"); LSTR MSG_BABYSTEP_X = _UxGT("Mikrolépés X"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 64f95008088d..6ff9405751a6 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -275,7 +275,8 @@ namespace LanguageNarrow_it { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salva mesh piatto"); LSTR MSG_LED_CONTROL = _UxGT("Controllo LED"); - LSTR MSG_LEDS = _UxGT("Luci"); + LSTR MSG_LIGHTS = _UxGT("Luci"); + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); LSTR MSG_LED_PRESETS = _UxGT("Presets luce"); LSTR MSG_SET_LEDS_RED = _UxGT("Rosso"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Arancione"); @@ -287,7 +288,6 @@ namespace LanguageNarrow_it { LSTR MSG_SET_LEDS_WHITE = _UxGT("Bianco"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Predefinito"); LSTR MSG_LED_CHANNEL_N = _UxGT("Canale {"); - LSTR MSG_LEDS2 = _UxGT("Luci #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Presets luce #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Luminosità"); LSTR MSG_CUSTOM_LEDS = _UxGT("Luci personalizzate"); @@ -586,6 +586,7 @@ namespace LanguageNarrow_it { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X sonda"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y sonda"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z sonda"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @ sonda"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonda Z"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Margine sonda"); LSTR MSG_Z_FEED_RATE = _UxGT("Velocità Z"); diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index c3c5194940bf..f7c37bad16c5 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -174,7 +174,10 @@ namespace LanguageNarrow_jp_kana { LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // "BLTouch Self-Test" LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // "Reset BLTouch" LSTR MSG_HOME_FIRST = _UxGT("サキニ %s ヲフッキサセテクダサイ"); // "Home ... first" + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Xオフセット"); // "X Offset" + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Yオフセット"); // "Y Offset" LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // "Z Offset" + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@オフセット"); // "@ Offset" LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("プローブZオフセット"); // "Babystep Probe Z" LSTR MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // "Babystep X" LSTR MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // "Babystep Y" diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index 8b8f018bf47d..2c542999ca05 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -152,7 +152,10 @@ namespace LanguageNarrow_nl { LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Zelf-Test"); LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); LSTR MSG_HOME_FIRST = _UxGT("Home %s Eerst"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); // accepted English term in Dutch + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Offset"); // accepted English term in Dutch + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Offset"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Offset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); LSTR MSG_BABYSTEP_X = _UxGT("Babystap X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystap Y"); diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index 9244be402164..64759ee841a7 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -208,7 +208,8 @@ namespace LanguageNarrow_pl { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Zapis siatki stołu"); LSTR MSG_LED_CONTROL = _UxGT("Sterowanie LED"); - LSTR MSG_LEDS = _UxGT("Światła"); + LSTR MSG_LIGHTS = _UxGT("Światła"); + LSTR MSG_LIGHT_N = _UxGT("Światło #{"); LSTR MSG_LED_PRESETS = _UxGT("Ustawienia świateł"); LSTR MSG_SET_LEDS_RED = _UxGT("Czerwony"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Pomarańczowy"); @@ -366,7 +367,10 @@ namespace LanguageNarrow_pl { LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("UWAGA: Złe ustawienia mogą uszkodzić drukarkę. Kontynuować?"); LSTR MSG_HOME_FIRST = _UxGT("Najpierw Home %s"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z offsetu"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Przesuń dyszę do stołu"); LSTR MSG_BABYSTEP_TOTAL = _UxGT("Łącznie"); diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index 036ca297dbe8..682ebba9fad5 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -145,7 +145,10 @@ namespace LanguageNarrow_pt { LSTR MSG_ATTACH_MEDIA = _UxGT("Inici. cartão SD"); LSTR MSG_CHANGE_MEDIA = _UxGT("Trocar cartão SD"); LSTR MSG_ZPROBE_OUT = _UxGT("Sensor fora/base"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desvio X"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desvio Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desvio Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desvio @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); LSTR MSG_ENDSTOP_ABORT = _UxGT("Fim de curso"); LSTR MSG_ERR_HEATING_FAILED = _UxGT("Aquecimento falhou"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 3281b897d8ca..f131e06ad808 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -41,7 +41,6 @@ namespace LanguageNarrow_pt_br { LSTR MSG_MEDIA_ABORTING = _UxGT("Abortando..."); LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); - LSTR MSG_MEDIA_RELEASED = _UxGT("Cartão liberado"); LSTR MSG_MEDIA_WAITING = _UxGT("Aguardando cartão"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Erro de leitura"); LSTR MSG_MEDIA_USB_REMOVED = _UxGT("USB removido"); @@ -181,7 +180,8 @@ namespace LanguageNarrow_pt_br { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salvar Malha"); LSTR MSG_LED_CONTROL = _UxGT("Controle do LED"); - LSTR MSG_LEDS = _UxGT("Luz"); + LSTR MSG_LIGHTS = _UxGT("Luz"); + LSTR MSG_LIGHT_N = _UxGT("Luz #{"); LSTR MSG_LED_PRESETS = _UxGT("Configuração da Luz"); LSTR MSG_SET_LEDS_RED = _UxGT("Luz Vermelha"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Luz Laranja"); @@ -338,6 +338,7 @@ namespace LanguageNarrow_pt_br { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Compensar Sonda em X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Compensar Sonda em Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Compensar Sonda em Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Compensar Sonda em @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); LSTR MSG_BABYSTEP_X = _UxGT("Passinho X"); LSTR MSG_BABYSTEP_Y = _UxGT("Passinho Y"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 02311aa963e8..e45c93e34da4 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -194,7 +194,8 @@ namespace LanguageNarrow_ro { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh"); LSTR MSG_LED_CONTROL = _UxGT("LED Control"); - LSTR MSG_LEDS = _UxGT("Lights"); + LSTR MSG_LIGHTS = _UxGT("Lights"); + LSTR MSG_LIGHT_N = _UxGT("Light #{"); LSTR MSG_LED_PRESETS = _UxGT("Light Presets"); LSTR MSG_SET_LEDS_RED = _UxGT("Red"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -417,6 +418,7 @@ namespace LanguageNarrow_ro { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas Z ajustare"); LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 81a3a04794cb..aef39952cf39 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -226,7 +226,8 @@ namespace LanguageNarrow_ru { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Сохранить сетку"); LSTR MSG_LED_CONTROL = _UxGT("Настройка подсветки"); - LSTR MSG_LEDS = _UxGT("Подсветка"); + LSTR MSG_LIGHTS = _UxGT("Подсветка"); + LSTR MSG_LIGHT_N = _UxGT("Свет #{"); LSTR MSG_LED_PRESETS = _UxGT("Предустановки света"); LSTR MSG_SET_LEDS_RED = _UxGT("Красный"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Оранжевый"); @@ -238,7 +239,6 @@ namespace LanguageNarrow_ru { LSTR MSG_SET_LEDS_WHITE = _UxGT("Белый"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию"); LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); - LSTR MSG_LEDS2 = _UxGT("Свет #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустан."); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яркость"); LSTR MSG_CUSTOM_LEDS = _UxGT("Свой цвет подсветки"); @@ -465,6 +465,7 @@ namespace LanguageNarrow_ru { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Смещение X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Смещение Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Смещение @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Шаг Z смещения"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двиг. сопло к столу"); LSTR MSG_BABYSTEP_X = _UxGT("Микрошаг X"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index c174bfcaf8ba..b3a9e3368ef1 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -271,7 +271,8 @@ namespace LanguageNarrow_sk { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Uložiť sieť bodov"); LSTR MSG_LED_CONTROL = _UxGT("Nastavenie LED"); - LSTR MSG_LEDS = _UxGT("Svetlo"); + LSTR MSG_LIGHTS = _UxGT("Svetlo"); + LSTR MSG_LIGHT_N = _UxGT("Svetlo #{"); LSTR MSG_LED_PRESETS = _UxGT("Predvolby svetla"); LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); @@ -283,7 +284,6 @@ namespace LanguageNarrow_sk { LSTR MSG_SET_LEDS_WHITE = _UxGT("Biela"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Obnoviť nastavenie"); LSTR MSG_LED_CHANNEL_N = _UxGT("Kanál {"); - LSTR MSG_LEDS2 = _UxGT("Svetlo #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Predvolby svetla #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jas"); LSTR MSG_CUSTOM_LEDS = _UxGT("Vlastná farba"); @@ -567,6 +567,7 @@ namespace LanguageNarrow_sk { LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z posuň"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Hranica sondy"); LSTR MSG_Z_FEED_RATE = _UxGT("Rýchl. posunu Z"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 0af09d61fe57..76cd39fcea78 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -217,7 +217,8 @@ namespace LanguageNarrow_sv { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Spara Bädd Nät"); LSTR MSG_LED_CONTROL = _UxGT("LED Kontroll"); - LSTR MSG_LEDS = _UxGT("Ljus"); + LSTR MSG_LIGHTS = _UxGT("Ljus"); + LSTR MSG_LIGHT_N = _UxGT("Ljus #{"); LSTR MSG_LED_PRESETS = _UxGT("Ljus Förinställd"); LSTR MSG_SET_LEDS_RED = _UxGT("Röd"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); @@ -229,7 +230,6 @@ namespace LanguageNarrow_sv { LSTR MSG_SET_LEDS_WHITE = _UxGT("Vitt"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_LEDS2 = _UxGT("Ljus #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Ljus #2 Förinställd"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Ljusstyrka"); LSTR MSG_CUSTOM_LEDS = _UxGT("Anpassat Ljus"); @@ -447,6 +447,7 @@ namespace LanguageNarrow_sv { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Sond X Offset"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Sond Y Offset"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Sond Z Offset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sond @ Offset"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Steg Z justering"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Flytta Munstycke till Bädd"); LSTR MSG_BABYSTEP_X = _UxGT("Småsteg X"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 05dd1f588835..830d0adaa41d 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -274,7 +274,8 @@ namespace LanguageNarrow_tr { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Tabla Mesh Kaydet"); LSTR MSG_LED_CONTROL = _UxGT("LED Kontrolü"); - LSTR MSG_LEDS = _UxGT("LEDler"); + LSTR MSG_LIGHTS = _UxGT("LEDler"); + LSTR MSG_LIGHT_N = _UxGT("Işıklar #{"); LSTR MSG_LED_PRESETS = _UxGT("LED Hazır Ayarları"); LSTR MSG_SET_LEDS_RED = _UxGT("Kırmızı"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Turuncu"); @@ -286,7 +287,6 @@ namespace LanguageNarrow_tr { LSTR MSG_SET_LEDS_WHITE = _UxGT("Beyaz"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan"); LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_LEDS2 = _UxGT("Işıklar #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Işık #2 Ön Ayarları"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Parlaklık"); LSTR MSG_CUSTOM_LEDS = _UxGT("Özel Işıklar"); @@ -586,6 +586,7 @@ namespace LanguageNarrow_tr { LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofseti"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofseti"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofseti"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Prob Ofseti"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z ayarı adımsal"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Prob Payı"); LSTR MSG_Z_FEED_RATE = _UxGT("Z İlerleme Hızı"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 5aafbf8610ba..63a721fe9fcf 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -225,7 +225,8 @@ namespace LanguageNarrow_uk { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Зберегти сітку"); LSTR MSG_LED_CONTROL = _UxGT("Керування світлом"); - LSTR MSG_LEDS = _UxGT("Підсвітка"); + LSTR MSG_LIGHTS = _UxGT("Підсвітка"); + LSTR MSG_LIGHT_N = _UxGT("Світло #{"); LSTR MSG_LED_PRESETS = _UxGT("Передустан. світла"); LSTR MSG_SET_LEDS_RED = _UxGT("Червоний"); LSTR MSG_SET_LEDS_ORANGE = _UxGT("Помаранчевий"); @@ -237,7 +238,6 @@ namespace LanguageNarrow_uk { LSTR MSG_SET_LEDS_WHITE = _UxGT("Білий"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("За умовчанням"); LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); - LSTR MSG_LEDS2 = _UxGT("Світло #2"); LSTR MSG_NEO2_PRESETS = _UxGT("Передуст. світла #2"); LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яскравість"); LSTR MSG_CUSTOM_LEDS = _UxGT("Своє світло"); @@ -475,6 +475,7 @@ namespace LanguageNarrow_uk { LSTR MSG_ZPROBE_XOFFSET = _UxGT("Зміщення по X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Зміщення по Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Зміщення по Z"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Зміщення по @"); LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Крок Z зміщення"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Рухати сопло до столу"); LSTR MSG_BABYSTEP_X = _UxGT("Мікрокрок X"); diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index cc5befe557c5..deed0fda7bbc 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -170,7 +170,8 @@ namespace LanguageNarrow_vi { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Lưu lưới bàn"); LSTR MSG_LED_CONTROL = _UxGT("Điều khiển LED"); // LED Control - LSTR MSG_LEDS = _UxGT("Đèn"); // Lights + LSTR MSG_LIGHTS = _UxGT("Đèn"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Đèn #{"); // Light #{ LSTR MSG_LED_PRESETS = _UxGT("Đèn định sẵn"); // Light Presets LSTR MSG_SET_LEDS_RED = _UxGT("Đỏ"); // Red LSTR MSG_SET_LEDS_ORANGE = _UxGT("Cam"); // Orange @@ -321,7 +322,10 @@ namespace LanguageNarrow_vi { LSTR MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe LSTR MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe LSTR MSG_HOME_FIRST = _UxGT("Về nhà %s Trước"); // Home %s first + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Đầu Dò Bù Đắp X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Đầu Dò Bù Đắp Y"); // Probe Y Offset LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Đầu Dò Bù Đắp @"); // Probe @ Offset LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Điều chỉnh Z từng"); // Babystep Probe Z LSTR MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X LSTR MSG_BABYSTEP_Y = _UxGT("Nhít Y"); diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index c52e59d82686..120bbdca35b5 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -204,7 +204,8 @@ namespace LanguageNarrow_zh_CN { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格"); LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control" - LSTR MSG_LEDS = _UxGT("灯"); // "Lights" + LSTR MSG_LIGHTS = _UxGT("灯"); // "Lights" + LSTR MSG_LIGHT_N = _UxGT("灯 #{"); // "Light #{" LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets" LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" @@ -424,9 +425,10 @@ namespace LanguageNarrow_zh_CN { LSTR MSG_MANUAL_STOW = _UxGT("收好Z探针"); LSTR MSG_HOME_FIRST = _UxGT("归位 %s 先"); // "Home ... first" LSTR MSG_ZPROBE_OFFSETS = _UxGT("探针偏移量"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("探针X偏移"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("探针Y偏移"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("探针X偏移"); // "X Offset" + LSTR MSG_ZPROBE_YOFFSET = _UxGT("探针Y偏移"); // "Y Offset" LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探针Z偏移"); // "Z Offset" + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探针@偏移"); // "@ Offset" LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步调整Z"); // "Babystep Probe Z" LSTR MSG_BABYSTEP_X = _UxGT("微量调整X轴"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts LSTR MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); // "Babystep Y" diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index fe4c78cf5bbb..43378e587441 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -190,7 +190,8 @@ namespace LanguageNarrow_zh_TW { LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格"); LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control" - LSTR MSG_LEDS = _UxGT("燈"); // "Lights" + LSTR MSG_LIGHTS = _UxGT("燈"); // "Lights" + LSTR MSG_LIGHT_N = _UxGT("燈 #{"); // "Light #{" LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets" LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" @@ -366,6 +367,7 @@ namespace LanguageNarrow_zh_TW { LSTR MSG_ZPROBE_XOFFSET = _UxGT("探針X偏移量"); // "Probe X Offset" LSTR MSG_ZPROBE_YOFFSET = _UxGT("探針Y偏移量"); // "Probe Y Offset" LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探針Z偏移量"); // "Probe Z Offset" + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探針@偏移量"); // "Probe @ Offset" LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步調整Z"); // "Babystep Probe Z" LSTR MSG_BABYSTEP_X = _UxGT("微量調整X軸"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts LSTR MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); // "Babystep Y" diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index b8e11b5b4d34..c625351d5a8e 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -93,7 +93,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #endif #if HAS_MULTI_LANGUAGE - uint8_t MarlinUI::language; // Initialized by settings.load() + uint8_t MarlinUI::language; // Initialized by settings.load void MarlinUI::set_language(const uint8_t lang) { if (lang < NUM_LANGUAGES) { language = lang; @@ -105,7 +105,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #endif #if HAS_LCD_CONTRAST - uint8_t MarlinUI::contrast = LCD_CONTRAST_DEFAULT; // Initialized by settings.load() + uint8_t MarlinUI::contrast = LCD_CONTRAST_DEFAULT; // Initialized by settings.load void MarlinUI::set_contrast(const uint8_t value) { contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); _set_contrast(); @@ -138,7 +138,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #if HAS_PREHEAT #include "../module/temperature.h" - preheat_t MarlinUI::material_preset[PREHEAT_COUNT]; // Initialized by settings.load() + preheat_t MarlinUI::material_preset[PREHEAT_COUNT]; // Initialized by settings.load FSTR_P MarlinUI::get_preheat_label(const uint8_t m) { #define _PDEF(N) static PGMSTR(preheat_##N##_label, PREHEAT_##N##_LABEL); @@ -189,7 +189,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #if HAS_BACKLIGHT_TIMEOUT #if ENABLED(EDITABLE_DISPLAY_TIMEOUT) - uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load() + uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load #else constexpr uint8_t MarlinUI::backlight_timeout_minutes; #endif @@ -209,7 +209,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; #elif HAS_DISPLAY_SLEEP #if ENABLED(EDITABLE_DISPLAY_TIMEOUT) - uint8_t MarlinUI::sleep_timeout_minutes; // Initialized by settings.load() + uint8_t MarlinUI::sleep_timeout_minutes; // Initialized by settings.load #else constexpr uint8_t MarlinUI::sleep_timeout_minutes; #endif @@ -957,11 +957,13 @@ void MarlinUI::init() { // If the action button is pressed... static bool wait_for_unclick; // = false + // Set lcd_clicked for most clicks. + // Ignore the click when clearing wait_for_user or waking the screen. auto do_click = [&]{ - wait_for_unclick = true; // - Set debounce flag to ignore continuous clicks - lcd_clicked = !wait_for_user; // - Keep the click if not waiting for a user-click - wait_for_user = false; // - Any click clears wait for user - quick_feedback(); // - Always make a click sound + wait_for_unclick = true; + lcd_clicked = !wait_for_user && !display_is_asleep(); + wait_for_user = false; + quick_feedback(); }; #if HAS_TOUCH_BUTTONS diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 96484442feda..64c64020ed99 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -232,7 +232,7 @@ class MarlinUI { #endif #if ENABLED(SOUND_MENU_ITEM) - static bool sound_on; // Initialized by settings.load() + static bool sound_on; // Initialized by settings.load #else static constexpr bool sound_on = true; #endif @@ -305,6 +305,7 @@ class MarlinUI { #endif // Sleep or wake the display (e.g., by turning the backlight off/on). + static bool display_is_asleep() IF_DISABLED(HAS_DISPLAY_SLEEP, { return false; }); static void sleep_display(const bool=true) IF_DISABLED(HAS_DISPLAY_SLEEP, {}); static void wake_display() { sleep_display(false); } diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 25a315524eb3..96e6f6d073d8 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -167,65 +167,72 @@ void MenuEditItemBase::goto_edit_screen( * General function to go directly to a screen */ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, const uint8_t top/*=0*/, const uint8_t items/*=0*/) { - if (currentScreen != screen) { + if (currentScreen == screen) return; - wake_display(); + wake_display(); - thermalManager.set_menu_cold_override(false); + thermalManager.set_menu_cold_override(false); - TERN_(IS_DWIN_MARLINUI, did_first_redraw = false); + TERN_(IS_DWIN_MARLINUI, did_first_redraw = false); - TERN_(HAS_TOUCH_BUTTONS, repeat_delay = BUTTON_DELAY_MENU); + TERN_(HAS_TOUCH_BUTTONS, repeat_delay = BUTTON_DELAY_MENU); - TERN_(SET_PROGRESS_PERCENT, progress_reset()); + TERN_(SET_PROGRESS_PERCENT, progress_reset()); - #if ALL(DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEPPING) - static millis_t doubleclick_expire_ms = 0; - // Going to menu_main from status screen? Remember first click time. - // Going back to status screen within a very short time? Go to Z babystepping. - if (screen == menu_main) { - if (on_status_screen()) - doubleclick_expire_ms = millis() + DOUBLECLICK_MAX_INTERVAL; - } - else if (screen == status_screen && currentScreen == menu_main && PENDING(millis(), doubleclick_expire_ms)) { - if (BABYSTEP_ALLOWED()) - screen = TERN(BABYSTEP_ZPROBE_OFFSET, lcd_babystep_zoffset, lcd_babystep_z); - else { - #if ENABLED(MOVE_Z_WHEN_IDLE) - ui.manual_move.menu_scale = MOVE_Z_IDLE_MULTIPLICATOR; - screen = []{ lcd_move_axis(Z_AXIS); }; - #endif - } + /** + * Double-click on the status screen is a shortcut for one of these: + * - Babystep the Probe Z Offset + * - Babystep the Z axis + * - Move the Z axis + */ + #if ALL(DOUBLECLICK_FOR_Z_BABYSTEPPING, BABYSTEPPING) + static millis_t doubleclick_expire_ms = 0; + if (screen == menu_main) { + if (on_status_screen()) + doubleclick_expire_ms = millis() + DOUBLECLICK_MAX_INTERVAL; + } + else if (screen == status_screen && currentScreen == menu_main && PENDING(millis(), doubleclick_expire_ms)) { + if (BABYSTEP_ALLOWED()) + screen = TERN(BABYSTEP_ZPROBE_OFFSET, lcd_babystep_zoffset, lcd_babystep_z); + else { + #if ENABLED(MOVE_Z_WHEN_IDLE) + ui.manual_move.menu_scale = MOVE_Z_IDLE_MULTIPLICATOR; + screen = []{ lcd_move_axis(Z_AXIS); }; + #endif } - #endif - - currentScreen = screen; - encoderPosition = encoder; - encoderTopLine = top; - screen_items = items; - if (on_status_screen()) { - defer_status_screen(false); - clear_menu_history(); - TERN_(AUTO_BED_LEVELING_UBL, bedlevel.lcd_map_control = false); } + #endif - clear_for_drawing(); + // + // Go to the new screen + // + + currentScreen = screen; + encoderPosition = encoder; + encoderTopLine = top; + screen_items = items; + if (on_status_screen()) { + defer_status_screen(false); + clear_menu_history(); + TERN_(AUTO_BED_LEVELING_UBL, bedlevel.lcd_map_control = false); + } + + clear_for_drawing(); - // Re-initialize custom characters that may be re-used - #if HAS_MARLINUI_HD44780 - if (TERN1(AUTO_BED_LEVELING_UBL, !bedlevel.lcd_map_control)) - set_custom_characters(on_status_screen() ? CHARSET_INFO : CHARSET_MENU); - #endif + // Re-initialize custom characters that may be re-used + #if HAS_MARLINUI_HD44780 + if (TERN1(AUTO_BED_LEVELING_UBL, !bedlevel.lcd_map_control)) + set_custom_characters(on_status_screen() ? CHARSET_INFO : CHARSET_MENU); + #endif - refresh(LCDVIEW_CALL_REDRAW_NEXT); - screen_changed = true; - TERN_(HAS_MARLINUI_U8GLIB, drawing_screen = false); + refresh(LCDVIEW_CALL_REDRAW_NEXT); + screen_changed = true; + TERN_(HAS_MARLINUI_U8GLIB, drawing_screen = false); - TERN_(HAS_MARLINUI_MENU, encoder_direction_normal()); - enable_encoder_multiplier(false); + TERN_(HAS_MARLINUI_MENU, encoder_direction_normal()); + enable_encoder_multiplier(false); - set_selection(false); - } + set_selection(false); } //////////////////////////////////////////// diff --git a/Marlin/src/lcd/menu/menu_led.cpp b/Marlin/src/lcd/menu/menu_led.cpp index 92c3133c1c7f..f996395b8903 100644 --- a/Marlin/src/lcd/menu/menu_led.cpp +++ b/Marlin/src/lcd/menu/menu_led.cpp @@ -34,9 +34,23 @@ #include "../../feature/power.h" #endif +#if ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) + #include "../../feature/caselight.h" + void menu_case_light() { + START_MENU(); + BACK_ITEM(MSG_CONFIGURATION); + EDIT_ITEM(percent, MSG_CASE_LIGHT_BRIGHTNESS, &caselight.brightness, 0, 255, caselight.update_brightness, true); + EDIT_ITEM(bool, MSG_CASE_LIGHT, &caselight.on, caselight.update_enabled); + END_MENU(); + } +#endif + #if ENABLED(LED_CONTROL_MENU) + #include "../../feature/leds/leds.h" + #define MSG_LIGHT2_PRESETS TERN(BIQU_BX_TFT70, MSG_LIGHT_ENCODER_PRESETS, MSG_NEO2_PRESETS) + #if ENABLED(LED_COLOR_PRESETS) void menu_led_presets() { @@ -56,14 +70,14 @@ END_MENU(); } - #endif + #endif // LED_COLOR_PRESETS #if ENABLED(NEO2_COLOR_PRESETS) void menu_leds2_presets() { START_MENU(); #if LCD_HEIGHT > 2 - STATIC_ITEM(MSG_NEO2_PRESETS, SS_DEFAULT|SS_INVERT); + STATIC_ITEM(MSG_LIGHT2_PRESETS, SS_DEFAULT|SS_INVERT); #endif BACK_ITEM(MSG_LED_CONTROL); ACTION_ITEM(MSG_SET_LEDS_WHITE, leds2.set_white); @@ -77,11 +91,12 @@ END_MENU(); } - #endif + #endif // NEO2_COLOR_PRESETS void menu_led_custom() { START_MENU(); BACK_ITEM(MSG_LED_CONTROL); + #if ENABLED(NEOPIXEL2_SEPARATE) STATIC_ITEM_N(1, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); #endif @@ -94,6 +109,7 @@ #if ENABLED(NEOPIXEL_LED) EDIT_ITEM(uint8, MSG_LED_BRIGHTNESS, &leds.color.i, 0, 255, leds.update, true); #endif + #if ENABLED(NEOPIXEL2_SEPARATE) STATIC_ITEM_N(2, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds2.color.r, 0, 255, leds2.update, true); @@ -104,65 +120,61 @@ #endif EDIT_ITEM(uint8, MSG_NEO2_BRIGHTNESS, &leds2.color.i, 0, 255, leds2.update, true); #endif + END_MENU(); } -#endif - -#if ENABLED(CASE_LIGHT_MENU) - #include "../../feature/caselight.h" - - - #if CASELIGHT_USES_BRIGHTNESS - void menu_case_light() { - START_MENU(); - BACK_ITEM(MSG_CONFIGURATION); - EDIT_ITEM(percent, MSG_CASE_LIGHT_BRIGHTNESS, &caselight.brightness, 0, 255, caselight.update_brightness, true); - EDIT_ITEM(bool, MSG_CASE_LIGHT, &caselight.on, caselight.update_enabled); - END_MENU(); - } - #endif -#endif - -#if ENABLED(LED_CONTROL_MENU) void menu_led() { + #if ENABLED(CASE_LIGHT_MENU) + const bool has_bright = TERN0(CASELIGHT_USES_BRIGHTNESS, caselight.has_brightness()); + #endif + START_MENU(); BACK_ITEM(MSG_MAIN_MENU); if (TERN1(PSU_CONTROL, powerManager.psu_on)) { editable.state = leds.lights_on; - EDIT_ITEM(bool, MSG_LEDS, &editable.state, leds.toggle); + #if ENABLED(NEOPIXEL2_SEPARATE) && DISABLED(BIQU_BX_TFT70) + EDIT_ITEM_N(bool, 1, MSG_LIGHT_N, &editable.state, leds.toggle); + #else + EDIT_ITEM(bool, MSG_LIGHTS, &editable.state, leds.toggle); + #endif } #if ENABLED(LED_COLOR_PRESETS) ACTION_ITEM(MSG_SET_LEDS_DEFAULT, [] { leds.set_default(); ui.refresh(); } ); + SUBMENU(MSG_LED_PRESETS, menu_led_presets); #endif #if ENABLED(NEOPIXEL2_SEPARATE) editable.state = leds2.lights_on; - EDIT_ITEM(bool, MSG_LEDS2, &editable.state, leds2.toggle); + #if ENABLED(BIQU_BX_TFT70) + EDIT_ITEM(bool, MSG_LIGHT_ENCODER, &editable.state, leds2.toggle); + #else + EDIT_ITEM_N(bool, 2, MSG_LIGHT_N, &editable.state, leds2.toggle); + #endif #if ENABLED(NEO2_COLOR_PRESETS) ACTION_ITEM(MSG_SET_LEDS_DEFAULT, leds2.set_default); + SUBMENU(MSG_LIGHT2_PRESETS, menu_leds2_presets); #endif #endif - #if ENABLED(LED_COLOR_PRESETS) - SUBMENU(MSG_LED_PRESETS, menu_led_presets); - #endif - #if ENABLED(NEO2_COLOR_PRESETS) - SUBMENU(MSG_NEO2_PRESETS, menu_leds2_presets); - #endif + + // + // Directly set RGBW and Brightness + // SUBMENU(MSG_CUSTOM_LEDS, menu_led_custom); // // Set Case light on/off/brightness // #if ENABLED(CASE_LIGHT_MENU) - #if CASELIGHT_USES_BRIGHTNESS - if (caselight.has_brightness()) + if (has_bright) { + #if CASELIGHT_USES_BRIGHTNESS SUBMENU(MSG_CASE_LIGHT, menu_case_light); - else - #endif - EDIT_ITEM(bool, MSG_CASE_LIGHT, &caselight.on, caselight.update_enabled); + #endif + } + else + EDIT_ITEM(bool, MSG_CASE_LIGHT, &caselight.on, caselight.update_enabled); #endif END_MENU(); diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index ed15a54fd615..c4ac9756908e 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -386,7 +386,7 @@ void menu_main() { #endif #if ENABLED(LED_CONTROL_MENU) - SUBMENU(MSG_LEDS, menu_led); + SUBMENU(MSG_LIGHTS, menu_led); #elif ALL(CASE_LIGHT_MENU, CASELIGHT_USES_BRIGHTNESS) SUBMENU(MSG_CASE_LIGHT, menu_case_light); #elif ENABLED(CASE_LIGHT_MENU) diff --git a/Marlin/src/lcd/menu/menu_probe_level.cpp b/Marlin/src/lcd/menu/menu_probe_level.cpp index 9376ada37ed1..2661a6b3fbde 100644 --- a/Marlin/src/lcd/menu/menu_probe_level.cpp +++ b/Marlin/src/lcd/menu/menu_probe_level.cpp @@ -338,8 +338,8 @@ void menu_probe_level() { // Probe XY Offsets // #if HAS_PROBE_XY_OFFSET - EDIT_ITEM(float31sign, MSG_ZPROBE_XOFFSET, &probe.offset.x, PROBE_OFFSET_XMIN, PROBE_OFFSET_XMAX); - EDIT_ITEM(float31sign, MSG_ZPROBE_YOFFSET, &probe.offset.y, PROBE_OFFSET_YMIN, PROBE_OFFSET_YMAX); + EDIT_ITEM_N(float31sign, X_AXIS, MSG_ZPROBE_OFFSET_N, &probe.offset.x, PROBE_OFFSET_XMIN, PROBE_OFFSET_XMAX); + EDIT_ITEM_N(float31sign, Y_AXIS, MSG_ZPROBE_OFFSET_N, &probe.offset.y, PROBE_OFFSET_YMIN, PROBE_OFFSET_YMAX); #endif // @@ -352,7 +352,7 @@ void menu_probe_level() { } else { #if HAS_BED_PROBE - EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_ZPROBE_ZOFFSET, &probe.offset.z, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX); + EDIT_ITEM_N(LCD_Z_OFFSET_TYPE, Z_AXIS, MSG_ZPROBE_OFFSET_N, &probe.offset.z, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX); #endif } diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index 13edf0dcff6c..fe1f726cedf7 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -59,7 +59,7 @@ void probe_offset_wizard_menu() { STATIC_ITEM(MSG_MOVE_NOZZLE_TO_BED, SS_CENTER|SS_INVERT); STATIC_ITEM_F(F("Z"), SS_CENTER, ftostr42_52(current_position.z)); - STATIC_ITEM(MSG_ZPROBE_ZOFFSET, SS_FULL, ftostr42_52(calculated_z_offset)); + STATIC_ITEM_N(Z_AXIS, MSG_ZPROBE_OFFSET_N, SS_FULL, ftostr42_52(calculated_z_offset)); SUBMENU_S(F("1.0"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 1.0f); }); SUBMENU_S(F("0.1"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 0.1f); }); diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index ae6c7c1127d4..1f1571d986ca 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -233,7 +233,7 @@ void menu_tune() { SUBMENU_N(Y_AXIS, MSG_BABYSTEP_N, []{ _lcd_babystep_go(_lcd_babystep_y); }); #endif #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - SUBMENU(MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset); + SUBMENU_N(Z_AXIS, MSG_ZPROBE_OFFSET_N, lcd_babystep_zoffset); #else SUBMENU_N(Z_AXIS, MSG_BABYSTEP_N, lcd_babystep_z); #endif diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index c7e588b758bd..6c2ab70dbc57 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -94,7 +94,7 @@ void xatc_wizard_menu() { STATIC_ITEM(MSG_MOVE_NOZZLE_TO_BED, SS_CENTER|SS_INVERT); STATIC_ITEM_F(F("Z="), SS_CENTER, ftostr42_52(current_position.z)); - STATIC_ITEM(MSG_ZPROBE_ZOFFSET, SS_LEFT, ftostr42_52(calculated_z_offset)); + STATIC_ITEM_N(Z_AXIS, MSG_ZPROBE_OFFSET_N, SS_LEFT, ftostr42_52(calculated_z_offset)); SUBMENU_S(F("1.0"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 1.0f); }); SUBMENU_S(F("0.1"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 0.1f); }); diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index e48f97453603..932418331bba 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -313,6 +313,7 @@ bool Touch::get_point(int16_t * const x, int16_t * const y) { next_sleep_ms = ui.sleep_timeout_minutes ? millis() + MIN_TO_MS(ui.sleep_timeout_minutes) : 0; } + bool MarlinUI::display_is_asleep() { return touch.isSleeping(); } void MarlinUI::sleep_display(const bool sleep/*=true*/) { if (!sleep) touch.wakeUp(); } diff --git a/Marlin/src/lcd/touch/touch_buttons.cpp b/Marlin/src/lcd/touch/touch_buttons.cpp index f6f4c66e77a4..e17fcbbcd42c 100644 --- a/Marlin/src/lcd/touch/touch_buttons.cpp +++ b/Marlin/src/lcd/touch/touch_buttons.cpp @@ -153,6 +153,9 @@ uint8_t TouchButtons::read_buttons() { next_sleep_ms = ui.sleep_timeout_minutes ? millis() + MIN_TO_MS(ui.sleep_timeout_minutes) : 0; } + bool MarlinUI::display_is_asleep() { + return touchBt.isSleeping(); + } void MarlinUI::sleep_display(const bool sleep/*=true*/) { if (!sleep) touchBt.wakeUp(); } diff --git a/Marlin/src/module/delta.cpp b/Marlin/src/module/delta.cpp index 379ef985ab38..aa1bcebe7031 100644 --- a/Marlin/src/module/delta.cpp +++ b/Marlin/src/module/delta.cpp @@ -49,7 +49,7 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" -// Initialized by settings.load() +// Initialized by settings.load float delta_height; abc_float_t delta_endstop_adj{0}; float delta_radius, diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 999e07ea7431..85e021d661ea 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -65,7 +65,7 @@ Endstops endstops; // private: -bool Endstops::enabled, Endstops::enabled_globally; // Initialized by settings.load() +bool Endstops::enabled, Endstops::enabled_globally; // Initialized by settings.load volatile Endstops::endstop_mask_t Endstops::hit_state; Endstops::endstop_mask_t Endstops::live_state = 0; @@ -95,7 +95,7 @@ Endstops::endstop_mask_t Endstops::live_state = 0; volatile bool Endstops::calibration_stop_state; #endif -// Initialized by settings.load() +// Initialized by settings.load #if ENABLED(X_DUAL_ENDSTOPS) float Endstops::x2_endstop_adj; #endif diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 10be020680d4..174f16d5c570 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -124,7 +124,7 @@ xyze_pos_t destination; // {0} // Extruder offsets #if HAS_HOTEND_OFFSET - xyz_pos_t hotend_offset[HOTENDS]; // Initialized by settings.load() + xyz_pos_t hotend_offset[HOTENDS]; // Initialized by settings.load void reset_hotend_offsets() { constexpr float tmp[XYZ][HOTENDS] = { HOTEND_OFFSET_X, HOTEND_OFFSET_Y, HOTEND_OFFSET_Z }; static_assert( diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 7c746fa5f0a7..42b4c8060b5c 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -138,7 +138,7 @@ uint8_t Planner::delay_before_delivering; // Delay block delivery so initi constexpr float PlannerSettings::axis_steps_per_mm[DISTINCT_AXES]; constexpr float Planner::mm_per_step[DISTINCT_AXES]; #endif -planner_settings_t Planner::settings; // Initialized by settings.load() +planner_settings_t Planner::settings; // Initialized by settings.load /** * Set up inline block variables @@ -199,7 +199,7 @@ uint32_t Planner::max_acceleration_steps_per_s2[DISTINCT_AXES]; // (steps/s^2) D matrix_3x3 Planner::bed_level_matrix; // Transform to compensate for bed level #endif #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) - float Planner::z_fade_height, // Initialized by settings.load() + float Planner::z_fade_height, // Initialized by settings.load Planner::inverse_z_fade_height, Planner::last_fade_z; #endif @@ -208,7 +208,7 @@ uint32_t Planner::max_acceleration_steps_per_s2[DISTINCT_AXES]; // (steps/s^2) D #endif #if ENABLED(SKEW_CORRECTION) - skew_factor_t Planner::skew_factor; // Initialized by settings.load() + skew_factor_t Planner::skew_factor; // Initialized by settings.load #endif #if ENABLED(AUTOTEMP) @@ -235,7 +235,7 @@ float Planner::previous_nominal_speed; #endif #if ENABLED(LIN_ADVANCE) - float Planner::extruder_advance_K[DISTINCT_E]; // Initialized by settings.load() + float Planner::extruder_advance_K[DISTINCT_E]; // Initialized by settings.load #endif #if HAS_POSITION_FLOAT diff --git a/Marlin/src/module/polargraph.cpp b/Marlin/src/module/polargraph.cpp index ef6a4c0db463..534ec17ef8ea 100644 --- a/Marlin/src/module/polargraph.cpp +++ b/Marlin/src/module/polargraph.cpp @@ -37,7 +37,7 @@ #include "../lcd/marlinui.h" #include "../MarlinCore.h" -// Initialized by settings.load() +// Initialized by settings.load float segments_per_second, polargraph_max_belt_len; xy_pos_t draw_area_min, draw_area_max; diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 7c7bf3debd76..a66c11a782e9 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -103,7 +103,7 @@ Probe probe; -xyz_pos_t Probe::offset; // Initialized by settings.load() +xyz_pos_t Probe::offset; // Initialized by settings.load #if HAS_PROBE_XY_OFFSET const xy_pos_t &Probe::offset_xy = Probe::offset; diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index fa7b5d1f139b..51677fdec6b8 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -3100,17 +3100,24 @@ void MarlinSettings::postprocess() { #endif // HAS_EARLY_LCD_SETTINGS bool MarlinSettings::load() { + // If the EEPROM data is valid load it if (validate()) { const EEPROM_Error err = _load(); const bool success = (err == ERR_EEPROM_NOERR); TERN_(EXTENSIBLE_UI, ExtUI::onSettingsLoaded(success)); return success; } + + // Otherwise reset settings to default "factory settings" reset(); + + // Options to overwrite the EEPROM on error #if ANY(EEPROM_AUTO_INIT, EEPROM_INIT_NOW) - (void)save(); - SERIAL_ECHO_MSG("EEPROM Initialized"); + (void)init_eeprom(); + LCD_MESSAGE(MSG_EEPROM_INITIALIZED); + SERIAL_ECHO_MSG(STR_EEPROM_INITIALIZED); #endif + return false; } diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 81e1d0404e02..d7851e9c672c 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -160,7 +160,7 @@ Stepper stepper; // Singleton #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM bool Stepper::initialized; // = false - uint32_t Stepper::motor_current_setting[MOTOR_CURRENT_COUNT]; // Initialized by settings.load() + uint32_t Stepper::motor_current_setting[MOTOR_CURRENT_COUNT]; // Initialized by settings.load #if HAS_MOTOR_CURRENT_SPI constexpr uint32_t Stepper::digipot_count[]; #endif @@ -212,7 +212,7 @@ uint32_t Stepper::acceleration_time, Stepper::deceleration_time; #if ENABLED(ADAPTIVE_STEP_SMOOTHING) #if ENABLED(ADAPTIVE_STEP_SMOOTHING_TOGGLE) - bool Stepper::adaptive_step_smoothing_enabled; // Initialized by settings.load() + bool Stepper::adaptive_step_smoothing_enabled; // Initialized by settings.load #else constexpr bool Stepper::adaptive_step_smoothing_enabled; // = true #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index c678b9dca3ac..306b2151b51f 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -324,7 +324,7 @@ class Stepper { #define MOTOR_CURRENT_COUNT COUNT(Stepper::digipot_count) #endif static bool initialized; - static uint32_t motor_current_setting[MOTOR_CURRENT_COUNT]; // Initialized by settings.load() + static uint32_t motor_current_setting[MOTOR_CURRENT_COUNT]; // Initialized by settings.load #endif // Last-moved extruder, as set when the last movement was fetched from planner diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 7e5c4bc9fd7d..c6df105aa8b1 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1882,7 +1882,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T static bool last_pause_state; #endif - do { + do { // 'break' out of this block #if DISABLED(PIDTEMPBED) if (PENDING(ms, next_bed_check_ms) @@ -1908,38 +1908,63 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T constexpr bool bed_timed_out = false; #endif - if (!bed_timed_out) { - if (is_bed_preheating()) { - temp_bed.soft_pwm_amount = MAX_BED_POWER >> 1; - } - else { - #if ENABLED(PIDTEMPBED) - temp_bed.soft_pwm_amount = WITHIN(temp_bed.celsius, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0; - #else - // Check if temperature is within the correct band - if (WITHIN(temp_bed.celsius, BED_MINTEMP, BED_MAXTEMP)) { - #if ENABLED(BED_LIMIT_SWITCHING) + if (bed_timed_out) break; + + if (is_bed_preheating()) { + temp_bed.soft_pwm_amount = MAX_BED_POWER >> 1; + break; + } - // Range-limited "bang-bang" bed heating - if (temp_bed.is_above_target(BED_HYSTERESIS)) - temp_bed.soft_pwm_amount = 0; - else if (temp_bed.is_below_target(BED_HYSTERESIS)) - temp_bed.soft_pwm_amount = MAX_BED_POWER >> 1; + #if ENABLED(PIDTEMPBED) - #else // !PIDTEMPBED && !BED_LIMIT_SWITCHING + // + // PID Bed Heating + // + temp_bed.soft_pwm_amount = WITHIN(temp_bed.celsius, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0; - // Simple (noisy) "bang-bang" bed heating - temp_bed.soft_pwm_amount = temp_bed.is_below_target() ? MAX_BED_POWER >> 1 : 0; + #else // !PIDTEMPBED - #endif - } - else { + // + // Range-limited "bang-bang" bed heating + // + + // Bed Off if the current bed temperature is outside the allowed range + if (!WITHIN(temp_bed.celsius, BED_MINTEMP, BED_MAXTEMP)) { + temp_bed.soft_pwm_amount = 0; + WRITE_HEATER_BED(LOW); + break; + } + + #if ENABLED(PELTIER_BED) + /** + * Peltier bang-bang maintains max bed power but changes + * current direction to switch between heating/cooling. + */ + if (temp_bed.target && temp_bed.is_above_target(BED_HYSTERESIS)) { // Fast Cooling + temp_bed.soft_pwm_amount = MAX_BED_POWER; + temp_bed.peltier_dir_heating = false; + } + else if (temp_bed.is_below_target(BED_HYSTERESIS)) { // Heating + temp_bed.soft_pwm_amount = MAX_BED_POWER; + temp_bed.peltier_dir_heating = true; + } + else + temp_bed.soft_pwm_amount = 0; // Off (ambient cooling) + + #else // !PELTIER_BED + + #if ENABLED(BED_LIMIT_SWITCHING) + if (temp_bed.is_above_target(BED_HYSTERESIS)) // Cooling (implicit off) temp_bed.soft_pwm_amount = 0; - WRITE_HEATER_BED(LOW); - } + else if (temp_bed.is_below_target(BED_HYSTERESIS)) // Heating + temp_bed.soft_pwm_amount = MAX_BED_POWER >> 1; + #else // Not bed limit switching + temp_bed.soft_pwm_amount = temp_bed.is_below_target() ? MAX_BED_POWER >> 1 : 0; #endif - } - } + + #endif // !PELTIER_BED + + #endif // !PIDTEMPBED } while (false); } @@ -2292,7 +2317,7 @@ void Temperature::task() { #if HAS_USER_THERMISTORS - user_thermistor_t Temperature::user_thermistor[USER_THERMISTORS]; // Initialized by settings.load() + user_thermistor_t Temperature::user_thermistor[USER_THERMISTORS]; // Initialized by settings.load void Temperature::reset_user_thermistors() { user_thermistor_t default_user_thermistor[USER_THERMISTORS] = { @@ -2945,6 +2970,10 @@ void Temperature::init() { #endif #if HAS_HEATED_BED + #if ENABLED(PELTIER_BED) + SET_OUTPUT(PELTIER_DIR_PIN); + OUT_WRITE(PELTIER_DIR_PIN, !PELTIER_DIR_HEAT_STATE); + #endif #ifdef BOARD_OPENDRAIN_MOSFETS OUT_WRITE_OD(HEATER_BED_PIN, ENABLED(HEATER_BED_INVERTING)); #else @@ -3926,6 +3955,9 @@ void Temperature::isr() { #if HAS_HEATED_BED _PWM_MOD(BED, soft_pwm_bed, temp_bed); + #if ENABLED(PELTIER_BED) + WRITE_PELTIER_DIR(temp_bed.peltier_dir_heating); + #endif #endif #if HAS_HEATED_CHAMBER @@ -4392,15 +4424,15 @@ void Temperature::isr() { #if HAS_TEMP_SENSOR /** * Print a single heater state in the form: - * Bed: " B:nnn.nn /nnn.nn" - * Chamber: " C:nnn.nn /nnn.nn" - * Probe: " P:nnn.nn" - * Cooler: " L:nnn.nn /nnn.nn" - * Board: " M:nnn.nn" - * SoC: " S:nnn.nn" - * Redundant: " R:nnn.nn /nnn.nn" - * Extruder: " T0:nnn.nn /nnn.nn" - * With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)" + * Extruder: " T0:nnn.nn /nnn.nn" + * Bed: " B:nnn.nn /nnn.nn" + * Chamber: " C:nnn.nn /nnn.nn" + * Cooler: " L:nnn.nn /nnn.nn" + * Probe: " P:nnn.nn" + * Board: " M:nnn.nn" + * SoC: " S:nnn.nn" + * Redundant: " R:nnn.nn /nnn.nn" + * With ADC: " T0:nnn.nn /nnn.nn (nnn.nn)" */ static void print_heater_state(const heater_id_t e, const_celsius_float_t c, const_celsius_float_t t OPTARG(SHOW_TEMP_ADC_VALUES, const float r) @@ -4418,12 +4450,12 @@ void Temperature::isr() { #if HAS_TEMP_CHAMBER case H_CHAMBER: k = 'C'; break; #endif - #if HAS_TEMP_PROBE - case H_PROBE: k = 'P'; show_t = false; break; - #endif #if HAS_TEMP_COOLER case H_COOLER: k = 'L'; break; #endif + #if HAS_TEMP_PROBE + case H_PROBE: k = 'P'; show_t = false; break; + #endif #if HAS_TEMP_BOARD case H_BOARD: k = 'M'; show_t = false; break; #endif @@ -4450,6 +4482,17 @@ void Temperature::isr() { delay(2); } + /** + * Print all heater states followed by power data on a single line. + * See print_heater_state for heater output strings. + * Power output strings are in the format: + * Extruder: " @:nnn" + * Bed: " B@:nnn" + * Peltier: " P@:H/C" + * Chamber: " C@:nnn" + * Cooler: " L@:nnn" + * Hotends: " @0:nnn @1:nnn ..." + */ void Temperature::print_heater_states(const int8_t target_extruder OPTARG(HAS_TEMP_REDUNDANT, const bool include_r/*=false*/) ) { @@ -4481,15 +4524,10 @@ void Temperature::isr() { HOTEND_LOOP() print_heater_state((heater_id_t)e, degHotend(e), degTargetHotend(e) OPTARG(SHOW_TEMP_ADC_VALUES, rawHotendTemp(e))); #endif SString<100> s(F(" @:"), getHeaterPower((heater_id_t)target_extruder)); - #if HAS_HEATED_BED - s.append(" B@:", getHeaterPower(H_BED)); - #endif - #if HAS_HEATED_CHAMBER - s.append(" C@:", getHeaterPower(H_CHAMBER)); - #endif - #if HAS_COOLER - s.append(" C@:", getHeaterPower(H_COOLER)); - #endif + TERN_(HAS_HEATED_BED, s.append(F(" B@:"), getHeaterPower(H_BED))); + TERN_(PELTIER_BED, s.append(F(" P@:"), temp_bed.peltier_dir_heating ? 'H' : 'C')); + TERN_(HAS_HEATED_CHAMBER, s.append(F(" C@:"), getHeaterPower(H_CHAMBER))); + TERN_(HAS_COOLER, s.append(F(" L@:"), getHeaterPower(H_COOLER))); #if HAS_MULTI_HOTEND HOTEND_LOOP() s.append(F(" @"), e, ':', getHeaterPower((heater_id_t)e)); #endif diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h index d5ed80ad3a91..ffc86eb4e5ba 100644 --- a/Marlin/src/module/temperature.h +++ b/Marlin/src/module/temperature.h @@ -437,12 +437,15 @@ typedef struct HeaterInfo : public TempInfo { uint8_t soft_pwm_amount; bool is_below_target(const celsius_t offs=0) const { return (target - celsius > offs); } // celsius < target - offs bool is_above_target(const celsius_t offs=0) const { return (celsius - target > offs); } // celsius > target + offs + #if ENABLED(PELTIER_BED) + bool peltier_dir_heating; // = false + #endif } heater_info_t; // A heater with PID stabilization template struct PIDHeaterInfo : public HeaterInfo { - T pid; // Initialized by settings.load() + T pid; // Initialized by settings.load }; #if ENABLED(MPCTEMP) diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index b6f02713b349..12aca3fff671 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -37,7 +37,7 @@ //#define DEBUG_TOOLCHANGE_FILAMENT_SWAP #if HAS_MULTI_EXTRUDER - toolchange_settings_t toolchange_settings; // Initialized by settings.load() + toolchange_settings_t toolchange_settings; // Initialized by settings.load #endif #if ENABLED(TOOLCHANGE_MIGRATION_FEATURE) diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0.h index d83548608585..47c2d1cf3747 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0.h @@ -21,6 +21,10 @@ */ #pragma once +/** + * BigTreeTech SKR 3 (STM32H743VI / STM32H723VG) + */ + #define BOARD_INFO_NAME "BTT SKR V3" #include "pins_BTT_SKR_V3_0_common.h" diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_EZ.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_EZ.h index 003f20f5cf6e..933ecf2decb3 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_EZ.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_EZ.h @@ -21,6 +21,10 @@ */ #pragma once +/** + * BigTreeTech SKR 3 EZ (STM32H743VI / STM32H723VG) + */ + #define BOARD_INFO_NAME "BTT SKR V3 EZ" #include "pins_BTT_SKR_V3_0_common.h" diff --git a/README.md b/README.md index 151765b8b6ec..43407f9da6dd 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,16 @@ Name|Role|Link|Donate 🇺🇸 Bob Kuhn|Admin|[[@Bob-the-Kuhn](//github.com/Bob-the-Kuhn)]| 🇳🇱 Erik van der Zalm|Founder|[[@ErikZalm](//github.com/ErikZalm)]| +## Star History + + + + + + Star History Chart + + + ## License Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork. diff --git a/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h b/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h index 9373e2fa3ba5..170f8936bdac 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_BTT_EBB42_V1_1/variant_MARLIN_BTT_EBB42_V1_1.h @@ -167,7 +167,7 @@ #endif // Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) +#ifndef HAL_DAC_MODULE_DISABLED #define HAL_DAC_MODULE_ENABLED #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F401RC/variant_MARLIN_STM32F401RC.h b/buildroot/share/PlatformIO/variants/MARLIN_F401RC/variant_MARLIN_STM32F401RC.h index 37d60d93068a..779ef92a304a 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_F401RC/variant_MARLIN_STM32F401RC.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_F401RC/variant_MARLIN_STM32F401RC.h @@ -153,7 +153,7 @@ #endif // Extra HAL modules -#if !defined(HAL_SD_MODULE_DISABLED) +#ifndef HAL_SD_MODULE_DISABLED #define HAL_SD_MODULE_ENABLED #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h index e6f2251db059..0c999d2b89af 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_G0B1VE/variant_MARLIN_STM32G0B1VE.h @@ -225,7 +225,7 @@ #endif // Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) +#ifndef HAL_DAC_MODULE_DISABLED #define HAL_DAC_MODULE_ENABLED #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h index c3e5c78ec51f..e5072e8d30b2 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723VG/variant_MARLIN_STM32H723VG.h @@ -228,16 +228,16 @@ #endif // Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) +#ifndef HAL_DAC_MODULE_DISABLED #define HAL_DAC_MODULE_ENABLED #endif -#if !defined(HAL_ETH_MODULE_DISABLED) +#ifndef HAL_ETH_MODULE_DISABLED #define HAL_ETH_MODULE_ENABLED #endif -#if !defined(HAL_OSPI_MODULE_DISABLED) +#ifndef HAL_OSPI_MODULE_DISABLED #define HAL_OSPI_MODULE_ENABLED #endif -#if !defined(HAL_SD_MODULE_DISABLED) +#ifndef HAL_SD_MODULE_DISABLED #define HAL_SD_MODULE_ENABLED #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h index c9c631412a04..ce6f6e7a06cf 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723ZE/variant_MARLIN_STM32H723ZE.h @@ -269,16 +269,16 @@ #endif // Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) +#ifndef HAL_DAC_MODULE_DISABLED #define HAL_DAC_MODULE_ENABLED #endif -#if !defined(HAL_ETH_MODULE_DISABLED) +#ifndef HAL_ETH_MODULE_DISABLED #define HAL_ETH_MODULE_ENABLED #endif -#if !defined(HAL_OSPI_MODULE_DISABLED) +#ifndef HAL_OSPI_MODULE_DISABLED #define HAL_OSPI_MODULE_ENABLED #endif -#if !defined(HAL_SD_MODULE_DISABLED) +#ifndef HAL_SD_MODULE_DISABLED #define HAL_SD_MODULE_ENABLED #endif diff --git a/buildroot/share/PlatformIO/variants/MARLIN_H723ZG/variant_MARLIN_STM32H723ZG.h b/buildroot/share/PlatformIO/variants/MARLIN_H723ZG/variant_MARLIN_STM32H723ZG.h index 1b518f01cfa4..5174ce087542 100644 --- a/buildroot/share/PlatformIO/variants/MARLIN_H723ZG/variant_MARLIN_STM32H723ZG.h +++ b/buildroot/share/PlatformIO/variants/MARLIN_H723ZG/variant_MARLIN_STM32H723ZG.h @@ -267,16 +267,16 @@ #endif // Extra HAL modules -#if !defined(HAL_DAC_MODULE_DISABLED) +#ifndef HAL_DAC_MODULE_DISABLED #define HAL_DAC_MODULE_ENABLED #endif -#if !defined(HAL_ETH_MODULE_DISABLED) +#ifndef HAL_ETH_MODULE_DISABLED #define HAL_ETH_MODULE_ENABLED #endif -#if !defined(HAL_OSPI_MODULE_DISABLED) +#ifndef HAL_OSPI_MODULE_DISABLED #define HAL_OSPI_MODULE_ENABLED #endif -#if !defined(HAL_SD_MODULE_DISABLED) +#ifndef HAL_SD_MODULE_DISABLED #define HAL_SD_MODULE_ENABLED #endif diff --git a/buildroot/share/scripts/languageExport.py b/buildroot/share/scripts/languageExport.py index 46485aa1241c..ca1998c18e97 100755 --- a/buildroot/share/scripts/languageExport.py +++ b/buildroot/share/scripts/languageExport.py @@ -1,20 +1,22 @@ #!/usr/bin/env python3 ''' -languageExport.py +languageExport.py [--single] Export LCD language strings to CSV files for easier translation. -Use importTranslations.py to import CSV into the language files. +Use languageImport.py to import CSV into the language files. +Use --single to export all languages to a single CSV file. ''' import re from pathlib import Path +from sys import argv from languageUtil import namebyid LANGHOME = "Marlin/src/lcd/language" # Write multiple sheets if true, otherwise write one giant sheet -MULTISHEET = True +MULTISHEET = '--single' not in argv[1:] OUTDIR = 'out-csv' # Check for the path to the language files @@ -28,7 +30,7 @@ # A dictionary to contain strings for each language. # Init with 'en' so English will always be first. -language_strings = { 'en': 0 } +language_strings = { 'en': {} } # A dictionary to contain all distinct LCD string names names = {} diff --git a/docs/ConfigEmbedding.md b/docs/ConfigEmbedding.md index 90075bc37343..562661e11112 100644 --- a/docs/ConfigEmbedding.md +++ b/docs/ConfigEmbedding.md @@ -3,7 +3,7 @@ Starting with version 2.0.9.3, Marlin can automatically extract the configuration used to generate the firmware and store it in the firmware binary. This is enabled by defining `CONFIGURATION_EMBEDDING` in `Configuration_adv.h`. ## How it's done -At the start of the PlatformIO build process, we create an embedded configuration by extracting all active options from the Configuration files and writing them out as JSON to `marlin_config.json`, which also includes specific build information (like the git revision, the build date, and some version information. The JSON file is then compressed in a ZIP archive called `.pio/build/mc.zip` which is converted into a C array and stored in a C++ file called `mc.h` which is included in the build. +At the start of the PlatformIO build process, we create an embedded configuration by extracting all active options from the Configuration files and writing them out as JSON to `marlin_config.json`, which also includes specific build information (like the git revision, the build date, and some version information). The JSON file is then compressed in a ZIP archive called `.pio/build/mc.zip` which is converted into a C array and stored in a C++ file called `mc.h` which is included in the build. ## Extracting configurations from a Marlin binary To get the configuration out of a binary firmware, you'll need a non-write-protected SD card inserted into the printer while running the firmware.