diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h index 3707d77..42f4733 100644 --- a/Marlin/Conditionals_post.h +++ b/Marlin/Conditionals_post.h @@ -190,11 +190,17 @@ * Safe Homing Options */ #if ENABLED(Z_SAFE_HOMING) + #if ENABLED(AUTO_BED_LEVELING_UBL) + // Home close to center so grid points have z heights very close to 0 + #define _SAFE_POINT(A) (((GRID_MAX_POINTS_##A) / 2) * (A##_BED_SIZE - 2 * (MESH_INSET)) / (GRID_MAX_POINTS_##A - 1) + MESH_INSET) + #else + #define _SAFE_POINT(A) A##_CENTER + #endif #ifndef Z_SAFE_HOMING_X_POINT - #define Z_SAFE_HOMING_X_POINT X_CENTER + #define Z_SAFE_HOMING_X_POINT _SAFE_POINT(X) #endif #ifndef Z_SAFE_HOMING_Y_POINT - #define Z_SAFE_HOMING_Y_POINT Y_CENTER + #define Z_SAFE_HOMING_Y_POINT _SAFE_POINT(Y) #endif #define X_TILT_FULCRUM Z_SAFE_HOMING_X_POINT #define Y_TILT_FULCRUM Z_SAFE_HOMING_Y_POINT diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 7a5b278..6bcdb9c 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -238,7 +238,7 @@ * * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } */ -//#define POWER_SUPPLY 1 +#define POWER_SUPPLY 0 #if POWER_SUPPLY > 0 // Enable this option to leave the PSU off at startup. @@ -1245,7 +1245,7 @@ // #define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. -//#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating +#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating // // M100 Free Memory Watcher diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index e00380d..e701753 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1,4 +1,4 @@ -/** +/** * Marlin 3D Printer Firmware * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * @@ -431,7 +431,7 @@ // @section extras // minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 50000 +#define DEFAULT_MINSEGMENTTIME 30000 // If defined the movements slow down when the look ahead buffer is only half full #define SLOWDOWN diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index fd8b57c..27d40a8 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -609,13 +609,7 @@ uint8_t target_extruder; #endif #if HAS_POWER_SWITCH - bool powersupply_on = ( - #if ENABLED(PS_DEFAULT_OFF) - false - #else - true - #endif - ); + bool powersupply_on; #if ENABLED(AUTO_POWER_CONTROL) #define PSU_ON() powerManager.power_on() #define PSU_OFF() powerManager.power_off() @@ -951,9 +945,9 @@ void setup_powerhold() { #endif #if HAS_POWER_SWITCH #if ENABLED(PS_DEFAULT_OFF) - PSU_OFF(); + powersupply_on = true; PSU_OFF(); #else - PSU_ON(); + powersupply_on = false; PSU_ON(); #endif #endif } @@ -7217,7 +7211,6 @@ inline void gcode_M17() { * Used by M125 and M600 */ static void wait_for_filament_reload(const int8_t max_beep_count=0) { - nozzle_timed_out = false; nozzle_timed_out = false; #ifdef ANYCUBIC_TFT_MODEL AnycubicTFT.PausedByNozzleTimeout = false; @@ -10138,7 +10131,7 @@ inline void gcode_M226() { NOLESS(thermalManager.lpq_len, 0); #endif - thermalManager.updatePID(); + thermalManager.update_pid(); SERIAL_ECHO_START(); #if ENABLED(PID_PARAMS_PER_HOTEND) SERIAL_ECHOPAIR(" e:", e); // specify extruder in serial output @@ -10284,7 +10277,7 @@ inline void gcode_M303() { KEEPALIVE_STATE(NOT_BUSY); #endif - thermalManager.PID_autotune(temp, e, c, u); + thermalManager.pid_autotune(temp, e, c, u); #if DISABLED(BUSY_WHILE_HEATING) KEEPALIVE_STATE(IN_HANDLER); @@ -14741,7 +14734,7 @@ void prepare_move_to_destination() { #if ENABLED(TEMP_STAT_LEDS) - static bool red_led = false; + static uint8_t red_led = -1; // Invalid value to force leds initializzation on startup static millis_t next_status_led_update_ms = 0; void handle_status_leds(void) { @@ -14749,20 +14742,18 @@ void prepare_move_to_destination() { next_status_led_update_ms += 500; // Update every 0.5s float max_temp = 0.0; #if HAS_HEATED_BED - max_temp = MAX3(max_temp, thermalManager.degTargetBed(), thermalManager.degBed()); + max_temp = MAX(thermalManager.degTargetBed(), thermalManager.degBed()); #endif HOTEND_LOOP() max_temp = MAX3(max_temp, thermalManager.degHotend(e), thermalManager.degTargetHotend(e)); - const bool new_led = (max_temp > 55.0) ? true : (max_temp < 54.0) ? false : red_led; + const uint8_t new_led = (max_temp > 55.0) ? HIGH : (max_temp < 54.0 || red_led == -1) ? LOW : red_led; if (new_led != red_led) { red_led = new_led; #if PIN_EXISTS(STAT_LED_RED) - WRITE(STAT_LED_RED_PIN, new_led ? HIGH : LOW); - #if PIN_EXISTS(STAT_LED_BLUE) - WRITE(STAT_LED_BLUE_PIN, new_led ? LOW : HIGH); - #endif - #else - WRITE(STAT_LED_BLUE_PIN, new_led ? HIGH : LOW); + WRITE(STAT_LED_RED_PIN, new_led); + #endif + #if PIN_EXISTS(STAT_LED_BLUE) + WRITE(STAT_LED_BLUE_PIN, !new_led); #endif } } @@ -15170,7 +15161,6 @@ void stop() { } } - /** * Marlin entry-point: Set up before the program loop * - Set up the kill pin, filament runout, power hold @@ -15445,7 +15435,6 @@ void setup() { #endif } - /** * The main Marlin program loop * diff --git a/Marlin/Version.h b/Marlin/Version.h index f5de352..d14568d 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -1,4 +1,4 @@ -/** +/** * Marlin 3D Printer Firmware * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * diff --git a/Marlin/boards.h b/Marlin/boards.h index a7aceff..18912ce 100644 --- a/Marlin/boards.h +++ b/Marlin/boards.h @@ -156,6 +156,6 @@ #define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: HARDWARE_MOTHERBOARD=84 make #define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board -#define MB(board) (MOTHERBOARD==BOARD_##board) +#define MB(board) (defined(BOARD_##board) && MOTHERBOARD==BOARD_##board) #endif // __BOARDS_H diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 6ec8f53..bfaea61 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -308,7 +308,7 @@ void MarlinSettings::postprocess() { #endif #if ENABLED(PIDTEMP) - thermalManager.updatePID(); + thermalManager.update_pid(); #endif #if DISABLED(NO_VOLUMETRICS) diff --git a/Marlin/language_de.h b/Marlin/language_de.h index 2a28c91..80c1c5e 100644 --- a/Marlin/language_de.h +++ b/Marlin/language_de.h @@ -41,33 +41,34 @@ #define MSG_SD_INSERTED _UxGT("SD-Karte erkannt") #define MSG_SD_REMOVED _UxGT("SD-Karte entfernt") #define MSG_LCD_ENDSTOPS _UxGT("Endstopp") // Max length 8 characters +#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft-Endstopp") #define MSG_MAIN _UxGT("Hauptmenü") #define MSG_AUTOSTART _UxGT("Autostart") #define MSG_DISABLE_STEPPERS _UxGT("Motoren deaktivieren") // M84 -#define MSG_DEBUG_MENU _UxGT("Debug Menü") -#define MSG_PROGRESS_BAR_TEST _UxGT("Fortschrittsb. Test") -#define MSG_AUTO_HOME _UxGT("Home") // G28 +#define MSG_DEBUG_MENU _UxGT("Debug-Menü") +#define MSG_PROGRESS_BAR_TEST _UxGT("Statusbalken-Test") +#define MSG_AUTO_HOME _UxGT("Home XYZ") // G28 #define MSG_AUTO_HOME_X _UxGT("Home X") #define MSG_AUTO_HOME_Y _UxGT("Home Y") #define MSG_AUTO_HOME_Z _UxGT("Home Z") #define MSG_TMC_Z_CALIBRATION _UxGT("Kalibriere Z") #define MSG_LEVEL_BED_HOMING _UxGT("Home XYZ") -#define MSG_LEVEL_BED_WAITING _UxGT("Klick für Start") +#define MSG_LEVEL_BED_WAITING _UxGT("Klick zum Starten") #define MSG_LEVEL_BED_NEXT_POINT _UxGT("Nächste Koordinate") -#define MSG_LEVEL_BED_DONE _UxGT("Fertig") +#define MSG_LEVEL_BED_DONE _UxGT("Nivellieren fertig!") #define MSG_Z_FADE_HEIGHT _UxGT("Ausblendhöhe") #define MSG_SET_HOME_OFFSETS _UxGT("Setze Homeversatz") #define MSG_HOME_OFFSETS_APPLIED _UxGT("Homeversatz aktiv") -#define MSG_SET_ORIGIN _UxGT("Setze Nullpunkt") //"G92 X0 Y0 Z0" commented out in ultralcd.cpp +#define MSG_SET_ORIGIN _UxGT("Setze Nullpunkte") //"G92 X0 Y0 Z0" commented out in ultralcd.cpp #define MSG_PREHEAT_1 _UxGT("Vorwärmen PLA") #define MSG_PREHEAT_1_N _UxGT("Vorwärmen PLA ") -#define MSG_PREHEAT_1_ALL _UxGT("Vorw. PLA Alle") +#define MSG_PREHEAT_1_ALL _UxGT("Vorw. PLA Alles") #define MSG_PREHEAT_1_END _UxGT("Vorw. PLA Extr.") #define MSG_PREHEAT_1_BEDONLY _UxGT("Vorw. PLA Bett") #define MSG_PREHEAT_1_SETTINGS _UxGT("Vorw. PLA Einst.") #define MSG_PREHEAT_2 _UxGT("Vorwärmen ABS") #define MSG_PREHEAT_2_N _UxGT("Vorwärmen ABS ") -#define MSG_PREHEAT_2_ALL _UxGT("Vorw. ABS Alle") +#define MSG_PREHEAT_2_ALL _UxGT("Vorw. ABS Alles") #define MSG_PREHEAT_2_END _UxGT("Vorw. ABS Extr.") #define MSG_PREHEAT_2_BEDONLY _UxGT("Vorw. ABS Bett") #define MSG_PREHEAT_2_SETTINGS _UxGT("Vorw. ABS Einst.") @@ -75,20 +76,102 @@ #define MSG_SWITCH_PS_ON _UxGT("Netzteil ein") #define MSG_SWITCH_PS_OFF _UxGT("Netzteil aus") #define MSG_EXTRUDE _UxGT("Extrudieren") -#define MSG_RETRACT _UxGT("Retract") -#define MSG_MOVE_AXIS _UxGT("Bewegen") -#define MSG_BED_LEVELING _UxGT("Bett Nivellierung") +#define MSG_RETRACT _UxGT("Rückzug") +#define MSG_MOVE_AXIS _UxGT("Achse Bewegen") +#define MSG_BED_LEVELING _UxGT("Bett-Nivellierung") #define MSG_LEVEL_BED _UxGT("Bett nivellieren") #define MSG_LEVEL_CORNERS _UxGT("Ecken nivellieren") #define MSG_NEXT_CORNER _UxGT("Nächste Ecke") #define MSG_EDITING_STOPPED _UxGT("Netzbearb. angeh.") -#define MSG_USER_MENU _UxGT("Benutzer Menü") +#define MSG_USER_MENU _UxGT("Benutzer-Menü") +#define MSG_UBL_DOING_G29 _UxGT("G29 ausführen") +#define MSG_UBL_UNHOMED _UxGT("Home XYZ zuerst") +#define MSG_UBL_TOOLS _UxGT("UBL-Werkzeuge") +#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling") +#define MSG_UBL_MANUAL_MESH _UxGT("Netz manuell erst.") +#define MSG_UBL_BC_INSERT _UxGT("Unterlegen & messen") +#define MSG_UBL_BC_INSERT2 _UxGT("Messen") +#define MSG_UBL_BC_REMOVE _UxGT("Entfernen & messen") +#define MSG_UBL_MOVING_TO_NEXT _UxGT("Nächster Punkt...") +#define MSG_UBL_ACTIVATE_MESH _UxGT("UBL aktivieren") +#define MSG_UBL_DEACTIVATE_MESH _UxGT("UBL deaktivieren") +#define MSG_UBL_SET_BED_TEMP _UxGT("Betttemperatur") +#define MSG_UBL_CUSTOM_BED_TEMP MSG_UBL_SET_BED_TEMP +#define MSG_UBL_SET_HOTEND_TEMP _UxGT("Hotend-Temp.") +#define MSG_UBL_CUSTOM_HOTEND_TEMP MSG_UBL_SET_HOTEND_TEMP +#define MSG_UBL_MESH_EDIT _UxGT("Netz bearbeiten") +#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Eigenes Netz bearb.") +#define MSG_UBL_FINE_TUNE_MESH _UxGT("Feineinstellung...") +#define MSG_UBL_DONE_EDITING_MESH _UxGT("Bearbeitung beendet") +#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Eigenes Netz erst.") +#define MSG_UBL_BUILD_MESH_MENU _UxGT("Netz erstellen") +#define MSG_UBL_BUILD_PLA_MESH _UxGT("Netz erstellen PLA") +#define MSG_UBL_BUILD_ABS_MESH _UxGT("Netz erstellen ABS") +#define MSG_UBL_BUILD_COLD_MESH _UxGT("Netz erstellen kalt") +#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Netzhöhe einst.") +#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Höhe") +#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Netz validieren") +#define MSG_UBL_VALIDATE_PLA_MESH _UxGT("Netz validieren PLA") +#define MSG_UBL_VALIDATE_ABS_MESH _UxGT("Netz validieren ABS") +#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Eig. Netz validieren") +#define MSG_UBL_CONTINUE_MESH _UxGT("Netzerst. forts.") +#define MSG_UBL_MESH_LEVELING _UxGT("Netz-Nivellierung") +#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Punkt-Nivell.") +#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Gitternetz-Nivell.") +#define MSG_UBL_MESH_LEVEL _UxGT("Netz nivellieren") +#define MSG_UBL_SIDE_POINTS _UxGT("Eckpunkte") +#define MSG_UBL_MAP_TYPE _UxGT("Kartentyp") +#define MSG_UBL_OUTPUT_MAP _UxGT("Karte ausgeben") +#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Ausgabe für Host") +#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Ausgabe für CSV") +#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Externe Sicherung") +#define MSG_UBL_INFO_UBL _UxGT("UBL-Info ausgeben") +#define MSG_UBL_EDIT_MESH_MENU _UxGT("Netz bearbeiten") +#define MSG_UBL_FILLIN_AMOUNT _UxGT("Menge an Füllung") +#define MSG_UBL_MANUAL_FILLIN _UxGT("Manuelles Füllung") +#define MSG_UBL_SMART_FILLIN _UxGT("Cleveres Füllen") +#define MSG_UBL_FILLIN_MESH _UxGT("Netz Füllen") +#define MSG_UBL_INVALIDATE_ALL _UxGT("Alles annullieren") +#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Nächstlieg. ann.") +#define MSG_UBL_FINE_TUNE_ALL _UxGT("Feineinst. Alles") +#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Feineinst. Nächstl.") +#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Netz-Speicherplatz") +#define MSG_UBL_STORAGE_SLOT _UxGT("Speicherort") +#define MSG_UBL_LOAD_MESH _UxGT("Bettnetz laden") +#define MSG_UBL_SAVE_MESH _UxGT("Bettnetz speichern") +#define MSG_MESH_LOADED _UxGT("Netz %i geladen") +#define MSG_MESH_SAVED _UxGT("Netz %i gespeichert") +#define MSG_NO_STORAGE _UxGT("Kein Speicher") +#define MSG_UBL_SAVE_ERROR _UxGT("ERR:UBL speichern") +#define MSG_UBL_RESTORE_ERROR _UxGT("ERR:UBL wiederherst.") +#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Versatz angehalten") +#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Schrittweises UBL") + +#define MSG_LED_CONTROL _UxGT("LED-Steuerung") +#define MSG_LEDS _UxGT("Licht") +#define MSG_LED_PRESETS _UxGT("Licht-Einstellungen") +#define MSG_SET_LEDS_RED _UxGT("Rot") +#define MSG_SET_LEDS_ORANGE _UxGT("Orange") +#define MSG_SET_LEDS_YELLOW _UxGT("Gelb") +#define MSG_SET_LEDS_GREEN _UxGT("Grün") +#define MSG_SET_LEDS_BLUE _UxGT("Blau") +#define MSG_SET_LEDS_INDIGO _UxGT("Indigo") +#define MSG_SET_LEDS_VIOLET _UxGT("Violett") +#define MSG_SET_LEDS_WHITE _UxGT("Weiß") +#define MSG_SET_LEDS_DEFAULT _UxGT("Standard") +#define MSG_CUSTOM_LEDS _UxGT("Benutzerdef.") +#define MSG_INTENSITY_R _UxGT("Intensität Rot") +#define MSG_INTENSITY_G _UxGT("Intensität Grün") +#define MSG_INTENSITY_B _UxGT("Intensität Blau") +#define MSG_INTENSITY_W _UxGT("Intensität Weiß") +#define MSG_LED_BRIGHTNESS _UxGT("Helligkeit") + #define MSG_MOVING _UxGT("In Bewegung...") #define MSG_FREE_XY _UxGT("Abstand XY") -#define MSG_MOVE_X _UxGT("X") -#define MSG_MOVE_Y _UxGT("Y") -#define MSG_MOVE_Z _UxGT("Z") -#define MSG_MOVE_E _UxGT("Extruder ") +#define MSG_MOVE_X _UxGT("Bewege X") +#define MSG_MOVE_Y _UxGT("Bewege Y") +#define MSG_MOVE_Z _UxGT("Bewege Z") +#define MSG_MOVE_E _UxGT("Bewege Extruder") #define MSG_MOVE_01MM _UxGT(" 0,1 mm") #define MSG_MOVE_1MM _UxGT(" 1,0 mm") #define MSG_MOVE_10MM _UxGT("10,0 mm") @@ -97,13 +180,13 @@ #define MSG_NOZZLE _UxGT("Düse") #define MSG_BED _UxGT("Bett") #define MSG_FAN_SPEED _UxGT("Lüfter") -#define MSG_EXTRA_FAN_SPEED _UxGT("Extra Lüfter") +#define MSG_EXTRA_FAN_SPEED _UxGT("Geschw. Extralüfter") #define MSG_FLOW _UxGT("Flussrate") #define MSG_CONTROL _UxGT("Einstellungen") #define MSG_MIN LCD_STR_THERMOMETER _UxGT(" min") #define MSG_MAX LCD_STR_THERMOMETER _UxGT(" max") #define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Faktor") -#define MSG_AUTOTEMP _UxGT("AutoTemp") +#define MSG_AUTOTEMP _UxGT("Auto Temperatur") #define MSG_ON _UxGT("Ein") #define MSG_OFF _UxGT("Aus") #define MSG_PID_P _UxGT("PID P") @@ -111,7 +194,7 @@ #define MSG_PID_D _UxGT("PID D") #define MSG_PID_C _UxGT("PID C") #define MSG_SELECT _UxGT("Auswählen") -#define MSG_ACC _UxGT("A") +#define MSG_ACC _UxGT("Beschleunigung") #define MSG_JERK _UxGT("Jerk") #if IS_KINEMATIC #define MSG_VA_JERK _UxGT("V A Jerk") @@ -123,13 +206,14 @@ #define MSG_VC_JERK _UxGT("V Z Jerk") #endif #define MSG_VE_JERK _UxGT("V E Jerk") +#define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev") #define MSG_VELOCITY _UxGT("Geschwindigkeit") -#define MSG_VMAX _UxGT("V max ") // space by purpose +#define MSG_VMAX _UxGT("V max ") // space intentional #define MSG_VMIN _UxGT("V min") #define MSG_VTRAV_MIN _UxGT("V min Leerfahrt") #define MSG_ACCELERATION _UxGT("Beschleunigung") -#define MSG_AMAX _UxGT("A max ") // space by purpose -#define MSG_A_RETRACT _UxGT("A Retract") +#define MSG_AMAX _UxGT("A max ") // space intentional +#define MSG_A_RETRACT _UxGT("A Rückzug") #define MSG_A_TRAVEL _UxGT("A Leerfahrt") #define MSG_STEPS_PER_MM _UxGT("Steps/mm") #if IS_KINEMATIC @@ -151,11 +235,11 @@ #define MSG_MOTION _UxGT("Bewegung") #define MSG_FILAMENT _UxGT("Filament") #define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm³") -#define MSG_FILAMENT_DIAM _UxGT("D Fil.") +#define MSG_FILAMENT_DIAM _UxGT("Durchm. Filament") #define MSG_FILAMENT_UNLOAD _UxGT("Entladen mm") #define MSG_FILAMENT_LOAD _UxGT("Laden mm") -#define MSG_ADVANCE_K _UxGT("Advance Faktor") -#define MSG_CONTRAST _UxGT("LCD Kontrast") +#define MSG_ADVANCE_K _UxGT("Vorschubfaktor") +#define MSG_CONTRAST _UxGT("LCD-Kontrast") #define MSG_STORE_EEPROM _UxGT("Konfig. speichern") #define MSG_LOAD_EEPROM _UxGT("Konfig. laden") #define MSG_RESTORE_FAILSAFE _UxGT("Standardwerte laden") @@ -164,49 +248,52 @@ #define MSG_WATCH _UxGT("Info") #define MSG_PREPARE _UxGT("Vorbereitung") #define MSG_TUNE _UxGT("Justierung") -#define MSG_PAUSE_PRINT _UxGT("SD-Druck Pause") -#define MSG_RESUME_PRINT _UxGT("SD-Druck Fortsetzung") -#define MSG_STOP_PRINT _UxGT("SD-Druck Abbruch") -#define MSG_CARD_MENU _UxGT("SD-Karte") +#define MSG_PAUSE_PRINT _UxGT("SD-Druck pausieren") +#define MSG_RESUME_PRINT _UxGT("SD-Druck fortsetzen") +#define MSG_STOP_PRINT _UxGT("SD-Druck abbrechen") +#define MSG_POWER_LOSS_RECOVERY _UxGT("Wiederh. n. Stroma.") +#define MSG_CARD_MENU _UxGT("Druck v. SD-Karte") #define MSG_NO_CARD _UxGT("Keine SD-Karte") #define MSG_DWELL _UxGT("Warten...") -#define MSG_USERWAIT _UxGT("Warte auf Nutzer") -#define MSG_PRINT_PAUSED _UxGT("Druck pausiert") +#define MSG_USERWAIT _UxGT("Klick zum Fortsetzen") +#define MSG_PRINT_PAUSED _UxGT("Druck pausiert...") +#define MSG_PRINTING _UxGT("Druckt...") #define MSG_PRINT_ABORTED _UxGT("Druck abgebrochen") -#define MSG_NO_MOVE _UxGT("Motoren eingeschaltet") +#define MSG_NO_MOVE _UxGT("Motoren angeschaltet") #define MSG_KILLED _UxGT("ABGEBROCHEN") #define MSG_STOPPED _UxGT("ANGEHALTEN") -#define MSG_CONTROL_RETRACT _UxGT("Retract mm") -#define MSG_CONTROL_RETRACT_SWAP _UxGT("Wechs. Retract mm") -#define MSG_CONTROL_RETRACTF _UxGT("Retract V") -#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Z-Hop mm") +#define MSG_CONTROL_RETRACT _UxGT("Rückzug mm") +#define MSG_CONTROL_RETRACT_SWAP _UxGT("Wechs. Rückzug mm") +#define MSG_CONTROL_RETRACTF _UxGT("Rückzug V") +#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Z-Sprung mm") #define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm") #define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Wechs. UnRet mm") #define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V") #define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V") -#define MSG_AUTORETRACT _UxGT("Autom. Retract") +#define MSG_AUTORETRACT _UxGT("Autom. Rückzug") #define MSG_FILAMENTCHANGE _UxGT("Filament wechseln") #define MSG_FILAMENTLOAD _UxGT("Filament laden") #define MSG_FILAMENTUNLOAD _UxGT("Filament entladen") #define MSG_FILAMENTUNLOAD_ALL _UxGT("Alles entladen") -#define MSG_INIT_SDCARD _UxGT("SD-Karte erkennen") // Manually initialize the SD-card via user interface +#define MSG_INIT_SDCARD _UxGT("SD-Karte initialisi.") // Manually initialize the SD-card via user interface #define MSG_CNG_SDCARD _UxGT("SD-Karte getauscht") // SD-card changed by user. For machines with no autocarddetect. Both send "M21" -#define MSG_ZPROBE_OUT _UxGT("Sensor ausserhalb") -#define MSG_SKEW_FACTOR _UxGT("Skew Faktor") +#define MSG_ZPROBE_OUT _UxGT("Z-Sonde außerhalb") +#define MSG_SKEW_FACTOR _UxGT("Korrekturfaktor") #define MSG_BLTOUCH _UxGT("BLTouch") -#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Test") -#define MSG_BLTOUCH_RESET _UxGT("BLTouch Reset") +#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Selbsttest") +#define MSG_BLTOUCH_RESET _UxGT("BLTouch zurücks.") #define MSG_BLTOUCH_DEPLOY _UxGT("BLTouch ausfahren") #define MSG_BLTOUCH_STOW _UxGT("BLTouch einfahren") -#define MSG_HOME _UxGT("Vorher") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST +#define MSG_HOME _UxGT("Vorher") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST #define MSG_FIRST _UxGT("homen") -#define MSG_ZPROBE_ZOFFSET _UxGT("Z Versatz") +#define MSG_ZPROBE_ZOFFSET _UxGT("Sondenversatz Z") #define MSG_BABYSTEP_X _UxGT("Babystep X") #define MSG_BABYSTEP_Y _UxGT("Babystep Y") #define MSG_BABYSTEP_Z _UxGT("Babystep Z") -#define MSG_ENDSTOP_ABORT _UxGT("Endstopp-Abbr.") -#define MSG_HEATING_FAILED_LCD _UxGT("HEIZEN FEHLGESCHLAGEN") -#define MSG_ERR_REDUNDANT_TEMP _UxGT("REDUND. TEMPERATURABWEICHUNG") +#define MSG_ENDSTOP_ABORT _UxGT("Endstopp Abbr.") +#define MSG_HEATING_FAILED_LCD _UxGT("HEIZEN ERFOLGLOS") +#define MSG_HEATING_FAILED_LCD_BED _UxGT("Bett heizen fehlge.") +#define MSG_ERR_REDUNDANT_TEMP _UxGT("REDUND. TEMP-ABWEI.") #define MSG_THERMAL_RUNAWAY LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT") #define MSG_THERMAL_RUNAWAY_BED _UxGT("BETT") MSG_THERMAL_RUNAWAY #define MSG_ERR_MAXTEMP LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN") @@ -215,12 +302,14 @@ #define MSG_ERR_MINTEMP_BED _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN") #define MSG_ERR_Z_HOMING MSG_HOME _UxGT(" ") MSG_X MSG_Y _UxGT(" ") MSG_FIRST #define MSG_HALTED _UxGT("DRUCKER STOPP") -#define MSG_PLEASE_RESET _UxGT("Bitte Resetten") +#define MSG_PLEASE_RESET _UxGT("Bitte neustarten") #define MSG_SHORT_DAY _UxGT("t") // One character only #define MSG_SHORT_HOUR _UxGT("h") // One character only #define MSG_SHORT_MINUTE _UxGT("m") // One character only #define MSG_HEATING _UxGT("Extr. heizt...") +#define MSG_COOLING _UxGT("Extr. kühlt...") #define MSG_BED_HEATING _UxGT("Bett heizt...") +#define MSG_BED_COOLING _UxGT("Bett kühlt...") #define MSG_DELTA_CALIBRATE _UxGT("Delta kalibrieren") #define MSG_DELTA_CALIBRATE_X _UxGT("Kalibriere X") #define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibriere Y") @@ -229,171 +318,94 @@ #define MSG_DELTA_SETTINGS _UxGT("Delta Einst. anzeig.") #define MSG_DELTA_AUTO_CALIBRATE _UxGT("Autom. Kalibrierung") #define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Delta Höhe setzen") +#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Sondenversatz Z") #define MSG_DELTA_DIAG_ROD _UxGT("Diag Rod") #define MSG_DELTA_HEIGHT _UxGT("Höhe") #define MSG_DELTA_RADIUS _UxGT("Radius") #define MSG_INFO_MENU _UxGT("Über den Drucker") -#define MSG_INFO_PRINTER_MENU _UxGT("Drucker Info") -#define MSG_3POINT_LEVELING _UxGT("3-Punkt Nivellierung") +#define MSG_INFO_PRINTER_MENU _UxGT("Drucker-Info") +#define MSG_3POINT_LEVELING _UxGT("3-Punkt-Nivellierung") #define MSG_LINEAR_LEVELING _UxGT("Lineare Nivellierung") #define MSG_BILINEAR_LEVELING _UxGT("Bilineare Nivell.") #define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling") -#define MSG_MESH_LEVELING _UxGT("Netz Nivellierung") -#define MSG_INFO_STATS_MENU _UxGT("Drucker Statistik") -#define MSG_INFO_BOARD_MENU _UxGT("Board Info") +#define MSG_MESH_LEVELING _UxGT("Netz-Nivellierung") +#define MSG_INFO_STATS_MENU _UxGT("Drucker-Statistik") +#define MSG_INFO_BOARD_MENU _UxGT("Board-Info") #define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistoren") #define MSG_INFO_EXTRUDERS _UxGT("Extruder") -#define MSG_INFO_BAUDRATE _UxGT("Baud") +#define MSG_INFO_BAUDRATE _UxGT("Baudrate") #define MSG_INFO_PROTOCOL _UxGT("Protokoll") #define MSG_CASE_LIGHT _UxGT("Beleuchtung") #define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Helligkeit") -#define MSG_UBL_DOING_G29 _UxGT("G29 UBL läuft!") -#define MSG_UBL_UNHOMED _UxGT("Erst XYZ homen") -#define MSG_UBL_TOOLS _UxGT("UBL Werkzeuge") -#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling") -#define MSG_UBL_MANUAL_MESH _UxGT("Netz manuell erst.") -#define MSG_UBL_BC_INSERT _UxGT("Unterlegen & messen") -#define MSG_UBL_BC_INSERT2 _UxGT("Messen") -#define MSG_UBL_BC_REMOVE _UxGT("Entfernen & messen") -#define MSG_UBL_MOVING_TO_NEXT _UxGT("Nächster Punkt...") -#define MSG_UBL_ACTIVATE_MESH _UxGT("UBL aktivieren") -#define MSG_UBL_DEACTIVATE_MESH _UxGT("UBL deaktivieren") -#define MSG_UBL_SET_BED_TEMP _UxGT("Bett Temp.") -#define MSG_UBL_CUSTOM_BED_TEMP MSG_UBL_SET_BED_TEMP -#define MSG_UBL_SET_HOTEND_TEMP _UxGT("Hotend Temp.") -#define MSG_UBL_CUSTOM_HOTEND_TEMP MSG_UBL_SET_HOTEND_TEMP -#define MSG_UBL_MESH_EDIT _UxGT("Netz bearbeiten") -#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Eigenes Netz bearb.") -#define MSG_UBL_FINE_TUNE_MESH _UxGT("Feineinstellung...") -#define MSG_UBL_DONE_EDITING_MESH _UxGT("Bearbeitung beendet") -#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Eigenes Netz erst.") -#define MSG_UBL_BUILD_MESH_MENU _UxGT("Netz erstellen") -#define MSG_UBL_BUILD_PLA_MESH _UxGT("Netz erstellen PLA") -#define MSG_UBL_BUILD_ABS_MESH _UxGT("Netz erstellen ABS") -#define MSG_UBL_BUILD_COLD_MESH _UxGT("Netz erstellen kalt") -#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Netz Höhe einst.") -#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Höhe") -#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Netz validieren") -#define MSG_UBL_VALIDATE_PLA_MESH _UxGT("Netz validieren PLA") -#define MSG_UBL_VALIDATE_ABS_MESH _UxGT("Netz validieren ABS") -#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Eig. Netz validieren") -#define MSG_UBL_CONTINUE_MESH _UxGT("Netzerst. forts.") -#define MSG_UBL_MESH_LEVELING _UxGT("Netz Nivellierung") -#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Punkt Nivellierung") -#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Gitternetz Nivell.") -#define MSG_UBL_MESH_LEVEL _UxGT("Netz nivellieren") -#define MSG_UBL_SIDE_POINTS _UxGT("Eckpunkte") -#define MSG_UBL_MAP_TYPE _UxGT("Kartentyp") -#define MSG_UBL_OUTPUT_MAP _UxGT("Karte ausgeben") -#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Ausgabe für Host") -#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Ausgabe für CSV") -#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Externe Sicherung") -#define MSG_UBL_INFO_UBL _UxGT("UBL Info ausgeben") -#define MSG_UBL_EDIT_MESH_MENU _UxGT("Netz bearbeiten") -#define MSG_UBL_FILLIN_AMOUNT _UxGT("Menge an Fill-in") -#define MSG_UBL_MANUAL_FILLIN _UxGT("Manuelles Fill-in") -#define MSG_UBL_SMART_FILLIN _UxGT("Kluges Fill-in") -#define MSG_UBL_FILLIN_MESH _UxGT("Fill-in Netz") -#define MSG_UBL_INVALIDATE_ALL _UxGT("Alles annullieren") -#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Nächstlieg. ann.") -#define MSG_UBL_FINE_TUNE_ALL _UxGT("Feineinstellung Alle") -#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Feineinst. Nächstl.") -#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Netz Speicherplatz") -#define MSG_UBL_STORAGE_SLOT _UxGT("Memory Slot") -#define MSG_UBL_LOAD_MESH _UxGT("Bett Netz laden") -#define MSG_UBL_SAVE_MESH _UxGT("Bett Netz speichern") -#define MSG_MESH_LOADED _UxGT("Netz %i geladen") -#define MSG_MESH_SAVED _UxGT("Netz %i gespeichert") -#define MSG_NO_STORAGE _UxGT("Kein Speicher") -#define MSG_UBL_SAVE_ERROR _UxGT("ERR:UBL speichern") -#define MSG_UBL_RESTORE_ERROR _UxGT("ERR:UBL wiederherst.") -#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Versatz angehalten") -#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Schrittweises UBL") - -#define MSG_LED_CONTROL _UxGT("LED Kontrolle") -#define MSG_LEDS _UxGT("Licht") -#define MSG_LED_PRESETS _UxGT("Licht Einstellungen") -#define MSG_SET_LEDS_RED _UxGT("Rot") -#define MSG_SET_LEDS_ORANGE _UxGT("Orange") -#define MSG_SET_LEDS_YELLOW _UxGT("Gelb") -#define MSG_SET_LEDS_GREEN _UxGT("Grün") -#define MSG_SET_LEDS_BLUE _UxGT("Blau") -#define MSG_SET_LEDS_INDIGO _UxGT("Indigo") -#define MSG_SET_LEDS_VIOLET _UxGT("Violett") -#define MSG_SET_LEDS_WHITE _UxGT("Weiß") -#define MSG_SET_LEDS_DEFAULT _UxGT("Standard") -#define MSG_CUSTOM_LEDS _UxGT("Benutzerdef.") -#define MSG_INTENSITY_R _UxGT("Intensität Rot") -#define MSG_INTENSITY_G _UxGT("Intensität Grün") -#define MSG_INTENSITY_B _UxGT("Intensität Blau") -#define MSG_INTENSITY_W _UxGT("Intensität Weiß") -#define MSG_LED_BRIGHTNESS _UxGT("Helligkeit") - #if LCD_WIDTH >= 20 #define MSG_INFO_PRINT_COUNT _UxGT("Gesamte Drucke") - #define MSG_INFO_COMPLETED_PRINTS _UxGT("Beendete Drucke") + #define MSG_INFO_COMPLETED_PRINTS _UxGT("Komplette Drucke") #define MSG_INFO_PRINT_TIME _UxGT("Gesamte Druckzeit") - #define MSG_INFO_PRINT_LONGEST _UxGT("Längster Druckjob") + #define MSG_INFO_PRINT_LONGEST _UxGT("Längste Druckzeit") #define MSG_INFO_PRINT_FILAMENT _UxGT("Gesamt Extrudiert") #else #define MSG_INFO_PRINT_COUNT _UxGT("Drucke") - #define MSG_INFO_COMPLETED_PRINTS _UxGT("Komplett") - #define MSG_INFO_PRINT_TIME _UxGT("Gesamt ") - #define MSG_INFO_PRINT_LONGEST _UxGT("Längster") + #define MSG_INFO_COMPLETED_PRINTS _UxGT("Komplette") + #define MSG_INFO_PRINT_TIME _UxGT("Gesamte") + #define MSG_INFO_PRINT_LONGEST _UxGT("Längste") #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrud.") #endif #define MSG_INFO_MIN_TEMP _UxGT("Min Temp") #define MSG_INFO_MAX_TEMP _UxGT("Max Temp") #define MSG_INFO_PSU _UxGT("Netzteil") - -#define MSG_DRIVE_STRENGTH _UxGT("Motorströme") +#define MSG_DRIVE_STRENGTH _UxGT("Motorleistung") #define MSG_DAC_PERCENT _UxGT("Treiber %") #define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern") #define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("DRUCK PAUSIERT") #define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("FILAMENT LADEN") #define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("FILAMENT ENTLADEN") #define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("FORTS. OPTIONEN:") -#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Mehr entleeren") -#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Drucke weiter") +#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Mehr entladen") +#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Druck weiter") #define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Düse: ") #define MSG_ERR_HOMING_FAILED _UxGT("Homing gescheitert") #define MSG_ERR_PROBING_FAILED _UxGT("Probing gescheitert") -#define MSG_M600_TOO_COLD _UxGT("M600: Zu kalt") +#define MSG_M600_TOO_COLD _UxGT("M600: zu kalt") + +// +// Die Filament-Change-Bildschirme können bis zu 3 Zeilen auf einem 4-Zeilen-Display anzeigen +// ...oder 2 Zeilen auf einem 3-Zeilen-Display. #if LCD_HEIGHT >= 4 // Up to 3 lines allowed - #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Warte auf den") - #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("Start des") - #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("Filamentwechsels") - #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Warte auf") - #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("Herausnahme") - #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("des Filaments...") - #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Filament einlegen") - #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("und Knopf") - #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("drücken...") - #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Knopf drücken um") - #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("Düse aufzuheizen.") - #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Düse heizt auf...") - #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Bitte warten...") - #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Warte auf") - #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Laden des") - #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("Filaments") - #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Warte auf") - #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("Entleeren des") - #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("Filaments") - #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Warte auf") - #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("Fortsetzung des") - #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("Druckes...") + #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Warte auf den") + #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("Start des") + #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("Filamentwechsels...") + #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Filament einlegen") + #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("und Knopf drücken") + #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("um fortzusetzen") + #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Knopf drücken um") + #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("Düse aufzuheizen") + #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Düse heizt auf") + #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("bitte warten...") + #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Warte auf") + #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("Herausnahme") + #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("des Filaments...") + #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Warte auf") + #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Laden des") + #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("Filaments...") + #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Warte auf") + #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("Entladen des") + #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("Filaments...") + #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Warte auf") + #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("Fortsetzen des") + #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("Drucks...") #else // LCD_HEIGHT < 4 // Up to 2 lines allowed - #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Bitte warten...") - #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Auswerfen...") - #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laden und Klick") - #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heizen...") - #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Laden...") - #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Entleeren...") - #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsetzen...") + #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Bitte warten...") + #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laden und Klick") + #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klick zum Heizen") + #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heizen...") + #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Entladen...") + #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Laden...") + #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Entladen...") + #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsetzen...") #endif // LCD_HEIGHT < 4 #endif // LANGUAGE_DE_H diff --git a/Marlin/language_es.h b/Marlin/language_es.h index a4267af..4b1ef73 100644 --- a/Marlin/language_es.h +++ b/Marlin/language_es.h @@ -251,26 +251,25 @@ #define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Boquilla: ") -#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperando iniciar") +#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperando para") -#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserte filamento") +#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserte el filamento") #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("y presione el boton") #if LCD_HEIGHT >= 4 // Up to 3 lines allowed - #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("del filamento") - #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("cambiar") + #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("iniciar cambio") + #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("de filamento") #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("para continuar...") #else // LCD_HEIGHT < 4 // Up to 2 lines allowed - #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("del fil. cambiar") - #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserte filamento") + #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("iniciar cambio fil.") #endif // LCD_HEIGHT < 4 -#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Esperado por") -#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filamento expulsado") -#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperado por") -#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Cargar filamento") +#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Esperando para") +#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("expulsar filamento") +#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperado para") +#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("cargar el filamento") #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperando imp.") #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("para resumir") #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Oprima boton para") diff --git a/Marlin/language_pt-br.h b/Marlin/language_pt-br.h index 303ea1a..a14b773 100644 --- a/Marlin/language_pt-br.h +++ b/Marlin/language_pt-br.h @@ -369,7 +369,7 @@ #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperando impressao") #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("continuar") -#else LCD_HEIGHT < 4 +#else // LCD_HEIGHT < 4 #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Aguarde...") #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejetando...") #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insira e Clique") diff --git a/Marlin/pins_ANET_10.h b/Marlin/pins_ANET_10.h index a8cbd5f..36443c8 100644 --- a/Marlin/pins_ANET_10.h +++ b/Marlin/pins_ANET_10.h @@ -154,31 +154,32 @@ */ #if ENABLED(ULTRA_LCD) - #define LCD_SDSS 28 + #define LCD_SDSS 28 #if ENABLED(ADC_KEYPAD) - #define SERVO0_PIN 27 // free for BLTouch/3D-Touch - #define LCD_PINS_RS 28 - #define LCD_PINS_ENABLE 29 - #define LCD_PINS_D4 10 - #define LCD_PINS_D5 11 - #define LCD_PINS_D6 16 - #define LCD_PINS_D7 17 - #define BTN_EN1 -1 - #define BTN_EN2 -1 - #define BTN_ENC -1 - #define ADC_KEYPAD_PIN 1 + #define SERVO0_PIN 27 // free for BLTouch/3D-Touch + #ifndef LCD_I2C_TYPE_PCF8575 + #define LCD_PINS_RS 28 + #define LCD_PINS_ENABLE 29 + #define LCD_PINS_D4 10 + #define LCD_PINS_D5 11 + #define LCD_PINS_D6 16 + #define LCD_PINS_D7 17 + #endif + #ifndef ADC_KEYPAD_PIN + #define ADC_KEYPAD_PIN 1 // Analog Input + #endif #elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(ANET_FULL_GRAPHICS_LCD) // Pin definitions for the Anet A6 Full Graphics display and the RepRapDiscount Full Graphics // display using an adapter board // https://go.aisler.net/benlye/anet-lcd-adapter/pcb // See below for alternative pin definitions for use with https://www.thingiverse.com/thing:2103748 - #define SERVO0_PIN 29 // free for BLTouch/3D-Touch - #define BEEPER_PIN 17 - #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 28 - #define LCD_PINS_D4 30 - #define BTN_EN1 11 - #define BTN_EN2 10 - #define BTN_ENC 16 + #define SERVO0_PIN 29 // free for BLTouch/3D-Touch + #define BEEPER_PIN 17 + #define LCD_PINS_RS 27 + #define LCD_PINS_ENABLE 28 + #define LCD_PINS_D4 30 + #define BTN_EN1 11 + #define BTN_EN2 10 + #define BTN_ENC 16 #ifndef ST7920_DELAY_1 #define ST7920_DELAY_1 DELAY_NS(0) #endif @@ -192,7 +193,7 @@ #define STD_ENCODER_STEPS_PER_MENU_ITEM 1 #endif #else - #define SERVO0_PIN 27 + #define SERVO0_PIN 27 #endif /** diff --git a/Marlin/pins_RAMPS.h b/Marlin/pins_RAMPS.h index 20d1cba..1b12851 100644 --- a/Marlin/pins_RAMPS.h +++ b/Marlin/pins_RAMPS.h @@ -509,7 +509,7 @@ #define BTN_ENC 35 #define SD_DETECT_PIN 49 - #define KILL_PIN 64 + #define KILL_PIN 41 #elif ENABLED(MINIPANEL) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 0554110..4b4a68f 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -247,7 +247,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; * Alternately heat and cool the nozzle, observing its behavior to * determine the best PID values to achieve a stable temperature. */ - void Temperature::PID_autotune(const float &target, const int8_t hotend, const int8_t ncycles, const bool set_result/*=false*/) { + void Temperature::pid_autotune(const float &target, const int8_t hotend, const int8_t ncycles, const bool set_result/*=false*/) { float current = 0.0; int cycles = 0; bool heating = true; @@ -308,7 +308,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; return; } - if (target > GHV(BED_MAXTEMP, maxttemp[hotend]) - 10) { + if (target > GHV(BED_MAXTEMP, maxttemp[hotend]) - 15) { SERIAL_ECHOLNPGM(MSG_PID_TEMP_TOO_HIGH); return; } @@ -327,7 +327,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; const millis_t ms = millis(); if (temp_meas_ready) { // temp sample ready - updateTemperaturesFromRawValues(); + calculate_celsius_temperatures(); // Get the current temperature and constrain it current = GHV(current_temperature_bed, current_temperature[hotend]); @@ -336,7 +336,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; #if HAS_AUTO_FAN if (ELAPSED(ms, next_auto_fan_check_ms)) { - checkExtruderAutoFans(); + check_extruder_auto_fans(); next_auto_fan_check_ms = ms + 2500UL; } #endif @@ -483,7 +483,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; PID_PARAM(Kp, hotend) = workKp; \ PID_PARAM(Ki, hotend) = scalePID_i(workKi); \ PID_PARAM(Kd, hotend) = scalePID_d(workKd); \ - updatePID(); }while(0) + update_pid(); }while(0) // Use the result? (As with "M303 U1") if (set_result) { @@ -524,7 +524,7 @@ int Temperature::getHeaterPower(const int heater) { #if HAS_AUTO_FAN - void Temperature::checkExtruderAutoFans() { + void Temperature::check_extruder_auto_fans() { static const pin_t fanPin[] PROGMEM = { E0_AUTO_FAN_PIN, E1_AUTO_FAN_PIN, E2_AUTO_FAN_PIN, E3_AUTO_FAN_PIN, E4_AUTO_FAN_PIN, CHAMBER_AUTO_FAN_PIN }; static const uint8_t fanBit[] PROGMEM = { 0, @@ -613,25 +613,20 @@ float Temperature::get_pid_output(const int8_t e) { pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX]; dTerm[HOTEND_INDEX] = PID_K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + float(PID_K1) * dTerm[HOTEND_INDEX]; temp_dState[HOTEND_INDEX] = current_temperature[HOTEND_INDEX]; - #if HEATER_IDLE_HANDLER - if (heater_idle_timeout_exceeded[HOTEND_INDEX]) { - pid_output = 0; - pid_reset[HOTEND_INDEX] = true; - } - else - #endif - if (pid_error[HOTEND_INDEX] > PID_FUNCTIONAL_RANGE) { - pid_output = BANG_MAX; - pid_reset[HOTEND_INDEX] = true; - } - else if (pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) || target_temperature[HOTEND_INDEX] == 0 + + if (target_temperature[HOTEND_INDEX] == 0 + || pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) #if HEATER_IDLE_HANDLER || heater_idle_timeout_exceeded[HOTEND_INDEX] #endif - ) { + ) { pid_output = 0; pid_reset[HOTEND_INDEX] = true; } + else if (pid_error[HOTEND_INDEX] > PID_FUNCTIONAL_RANGE) { + pid_output = BANG_MAX; + pid_reset[HOTEND_INDEX] = true; + } else { if (pid_reset[HOTEND_INDEX]) { temp_iState[HOTEND_INDEX] = 0.0; @@ -764,7 +759,7 @@ void Temperature::manage_heater() { if (!temp_meas_ready) return; - updateTemperaturesFromRawValues(); // also resets the watchdog + calculate_celsius_temperatures(); // also resets the watchdog #if ENABLED(HEATER_0_USES_MAX6675) if (current_temperature[0] > MIN(HEATER_0_MAXTEMP, MAX6675_TMAX - 1.0)) max_temp_error(0); @@ -809,7 +804,7 @@ void Temperature::manage_heater() { #if HAS_AUTO_FAN if (ELAPSED(ms, next_auto_fan_check_ms)) { // only need to check fan state very infrequently - checkExtruderAutoFans(); + check_extruder_auto_fans(); next_auto_fan_check_ms = ms + 2500UL; } #endif @@ -919,7 +914,7 @@ void Temperature::manage_heater() { // Derived from RepRap FiveD extruder::getTemperature() // For hot end temperature measurement. -float Temperature::analog2temp(const int raw, const uint8_t e) { +float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) { #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) if (e > HOTENDS) #else @@ -991,7 +986,7 @@ float Temperature::analog2temp(const int raw, const uint8_t e) { #if HAS_HEATED_BED // Derived from RepRap FiveD extruder::getTemperature() // For bed temperature measurement. - float Temperature::analog2tempBed(const int raw) { + float Temperature::analog_to_celsius_bed(const int raw) { #if ENABLED(HEATER_BED_USES_THERMISTOR) SCAN_THERMISTOR_TABLE(BEDTEMPTABLE, BEDTEMPTABLE_LEN); #elif ENABLED(HEATER_BED_USES_AD595) @@ -1007,7 +1002,7 @@ float Temperature::analog2temp(const int raw, const uint8_t e) { #if HAS_TEMP_CHAMBER // Derived from RepRap FiveD extruder::getTemperature() // For chamber temperature measurement. - float Temperature::analog2tempChamber(const int raw) { + float Temperature::analog_to_celsius_chamber(const int raw) { #if ENABLED(HEATER_CHAMBER_USES_THERMISTOR) SCAN_THERMISTOR_TABLE(CHAMBERTEMPTABLE, CHAMBERTEMPTABLE_LEN); #elif ENABLED(HEATER_CHAMBER_USES_AD595) @@ -1026,22 +1021,22 @@ float Temperature::analog2temp(const int raw, const uint8_t e) { * and this function is called from normal context * as it would block the stepper routine. */ -void Temperature::updateTemperaturesFromRawValues() { +void Temperature::calculate_celsius_temperatures() { #if ENABLED(HEATER_0_USES_MAX6675) current_temperature_raw[0] = read_max6675(); #endif - HOTEND_LOOP() current_temperature[e] = Temperature::analog2temp(current_temperature_raw[e], e); + HOTEND_LOOP() current_temperature[e] = analog_to_celsius_hotend(current_temperature_raw[e], e); #if HAS_HEATED_BED - current_temperature_bed = Temperature::analog2tempBed(current_temperature_bed_raw); + current_temperature_bed = analog_to_celsius_bed(current_temperature_bed_raw); #endif #if HAS_TEMP_CHAMBER - current_temperature_chamber = Temperature::analog2tempChamber(current_temperature_chamber_raw); + current_temperature_chamber = analog_to_celsius_chamber(current_temperature_chamber_raw); #endif #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - redundant_temperature = Temperature::analog2temp(redundant_temperature_raw, 1); + redundant_temperature = analog_to_celsius_hotend(redundant_temperature_raw, 1); #endif #if ENABLED(FILAMENT_WIDTH_SENSOR) - filament_width_meas = analog2widthFil(); + filament_width_meas = analog_to_mm_fil_width(); #endif #if ENABLED(USE_WATCHDOG) @@ -1056,7 +1051,7 @@ void Temperature::updateTemperaturesFromRawValues() { #if ENABLED(FILAMENT_WIDTH_SENSOR) // Convert raw Filament Width to millimeters - float Temperature::analog2widthFil() { + float Temperature::analog_to_mm_fil_width() { return current_raw_filwidth * 5.0f * (1.0f / 16383.0); } @@ -1256,7 +1251,7 @@ void Temperature::init() { #define TEMP_MIN_ROUTINE(NR) \ minttemp[NR] = HEATER_ ##NR## _MINTEMP; \ - while (analog2temp(minttemp_raw[NR], NR) < HEATER_ ##NR## _MINTEMP) { \ + while (analog_to_celsius_hotend(minttemp_raw[NR], NR) < HEATER_ ##NR## _MINTEMP) { \ if (HEATER_ ##NR## _RAW_LO_TEMP < HEATER_ ##NR## _RAW_HI_TEMP) \ minttemp_raw[NR] += OVERSAMPLENR; \ else \ @@ -1264,7 +1259,7 @@ void Temperature::init() { } #define TEMP_MAX_ROUTINE(NR) \ maxttemp[NR] = HEATER_ ##NR## _MAXTEMP; \ - while (analog2temp(maxttemp_raw[NR], NR) > HEATER_ ##NR## _MAXTEMP) { \ + while (analog_to_celsius_hotend(maxttemp_raw[NR], NR) > HEATER_ ##NR## _MAXTEMP) { \ if (HEATER_ ##NR## _RAW_LO_TEMP < HEATER_ ##NR## _RAW_HI_TEMP) \ maxttemp_raw[NR] -= OVERSAMPLENR; \ else \ @@ -1312,7 +1307,7 @@ void Temperature::init() { #if HAS_HEATED_BED #ifdef BED_MINTEMP - while (analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) { + while (analog_to_celsius_bed(bed_minttemp_raw) < BED_MINTEMP) { #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP bed_minttemp_raw += OVERSAMPLENR; #else @@ -1321,7 +1316,7 @@ void Temperature::init() { } #endif // BED_MINTEMP #ifdef BED_MAXTEMP - while (analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) { + while (analog_to_celsius_bed(bed_maxttemp_raw) > BED_MAXTEMP) { #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP bed_maxttemp_raw -= OVERSAMPLENR; #else diff --git a/Marlin/temperature.h b/Marlin/temperature.h index 246c585..610da4b 100644 --- a/Marlin/temperature.h +++ b/Marlin/temperature.h @@ -318,13 +318,13 @@ class Temperature { /** * Static (class) methods */ - static float analog2temp(const int raw, const uint8_t e); + static float analog_to_celsius_hotend(const int raw, const uint8_t e); #if HAS_HEATED_BED - static float analog2tempBed(const int raw); + static float analog_to_celsius_bed(const int raw); #endif #if HAS_TEMP_CHAMBER - static float analog2tempChamber(const int raw); + static float analog_to_celsius_chamber(const int raw); #endif /** @@ -365,7 +365,7 @@ class Temperature { #endif #if ENABLED(FILAMENT_WIDTH_SENSOR) - static float analog2widthFil(); // Convert raw Filament Width to millimeters + static float analog_to_mm_fil_width(); // Convert raw Filament Width to millimeters static int8_t widthFil_to_size_ratio(); // Convert Filament Width (mm) to an extrusion ratio #endif @@ -414,7 +414,7 @@ class Temperature { #if ENABLED(AUTO_POWER_CONTROL) powerManager.power_on(); #endif - target_temperature[HOTEND_INDEX] = MIN(celsius, maxttemp[HOTEND_INDEX] - 10); + target_temperature[HOTEND_INDEX] = MIN(celsius, maxttemp[HOTEND_INDEX] - 15); #if WATCH_HOTENDS start_watching_heater(HOTEND_INDEX); #endif @@ -449,7 +449,7 @@ class Temperature { #endif target_temperature_bed = #ifdef BED_MAXTEMP - MIN(celsius, BED_MAXTEMP - 10) + MIN(celsius, BED_MAXTEMP - 15) #else celsius #endif @@ -489,13 +489,13 @@ class Temperature { * Perform auto-tuning for hotend or bed in response to M303 */ #if HAS_PID_HEATING - static void PID_autotune(const float &target, const int8_t hotend, const int8_t ncycles, const bool set_result=false); + static void pid_autotune(const float &target, const int8_t hotend, const int8_t ncycles, const bool set_result=false); /** * Update the temp manager when PID values change */ #if ENABLED(PIDTEMP) - FORCE_INLINE static void updatePID() { + FORCE_INLINE static void update_pid() { #if ENABLED(PID_EXTRUSION_SCALING) last_e_position = 0; #endif @@ -612,13 +612,13 @@ class Temperature { static void set_current_temp_raw(); - static void updateTemperaturesFromRawValues(); + static void calculate_celsius_temperatures(); #if ENABLED(HEATER_0_USES_MAX6675) static int read_max6675(); #endif - static void checkExtruderAutoFans(); + static void check_extruder_auto_fans(); static float get_pid_output(const int8_t e); diff --git a/Marlin/ubl.cpp b/Marlin/ubl.cpp index 26485c5..f4dd433 100644 --- a/Marlin/ubl.cpp +++ b/Marlin/ubl.cpp @@ -210,8 +210,11 @@ serialprintPGM(csv ? PSTR("CSV:\n") : PSTR("LCD:\n")); } - const float current_xi = get_cell_index_x(current_position[X_AXIS] + (MESH_X_DIST) / 2.0), - current_yi = get_cell_index_y(current_position[Y_AXIS] + (MESH_Y_DIST) / 2.0); + // Add XY_PROBE_OFFSET_FROM_EXTRUDER because probe_pt() subtracts these when + // moving to the xy position to be measured. This ensures better agreement between + // the current Z position after G28 and the mesh values. + const float current_xi = find_closest_x_index(current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER), + current_yi = find_closest_y_index(current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER); if (!lcd) SERIAL_EOL(); for (int8_t j = GRID_MAX_POINTS_Y - 1; j >= 0; j--) { diff --git a/Marlin/ubl_G29.cpp b/Marlin/ubl_G29.cpp index c401fa6..a8f365a 100644 --- a/Marlin/ubl_G29.cpp +++ b/Marlin/ubl_G29.cpp @@ -1287,8 +1287,8 @@ out_mesh.distance = -99999.9f; // Get our reference position. Either the nozzle or probe location. - const float px = rx - (probe_as_reference == USE_PROBE_AS_REFERENCE ? X_PROBE_OFFSET_FROM_EXTRUDER : 0), - py = ry - (probe_as_reference == USE_PROBE_AS_REFERENCE ? Y_PROBE_OFFSET_FROM_EXTRUDER : 0); + const float px = rx + (probe_as_reference == USE_PROBE_AS_REFERENCE ? X_PROBE_OFFSET_FROM_EXTRUDER : 0), + py = ry + (probe_as_reference == USE_PROBE_AS_REFERENCE ? Y_PROBE_OFFSET_FROM_EXTRUDER : 0); float best_so_far = 99999.99f; diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index f67de54..78a5442 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -3414,14 +3414,14 @@ void lcd_quick_feedback(const bool clear_buttons) { UNUSED(e); #endif PID_PARAM(Ki, e) = scalePID_i(raw_Ki); - thermalManager.updatePID(); + thermalManager.update_pid(); } void copy_and_scalePID_d(int16_t e) { #if DISABLED(PID_PARAMS_PER_HOTEND) || HOTENDS == 1 UNUSED(e); #endif PID_PARAM(Kd, e) = scalePID_d(raw_Kd); - thermalManager.updatePID(); + thermalManager.update_pid(); } #define _DEFINE_PIDTEMP_BASE_FUNCS(N) \ void copy_and_scalePID_i_E ## N() { copy_and_scalePID_i(N); } \ @@ -3524,7 +3524,7 @@ void lcd_quick_feedback(const bool clear_buttons) { MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &planner.autotemp_enabled); MENU_ITEM_EDIT(float3, MSG_MIN, &planner.autotemp_min, 0, float(HEATER_0_MAXTEMP) - 15); MENU_ITEM_EDIT(float3, MSG_MAX, &planner.autotemp_max, 0, float(HEATER_0_MAXTEMP) - 15); - MENU_ITEM_EDIT(float52, MSG_FACTOR, &planner.autotemp_factor, 0, 1); + MENU_ITEM_EDIT(float52, MSG_FACTOR, &planner.autotemp_factor, 0, 10); #endif // @@ -5606,15 +5606,14 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } #endif // LCD_HAS_DIRECTIONAL_BUTTONS - buttons = newbutton; #if ENABLED(LCD_HAS_SLOW_BUTTONS) - buttons |= slow_buttons; + newbutton |= slow_buttons; #endif + buttons = newbutton; #if ENABLED(ADC_KEYPAD) uint8_t newbutton_reprapworld_keypad = 0; - buttons = 0; if (buttons_reprapworld_keypad == 0) { newbutton_reprapworld_keypad = get_ADC_keyValue(); if (WITHIN(newbutton_reprapworld_keypad, 1, 8)) diff --git a/README.md b/README.md index 9e4a0dd..8a6d119 100644 --- a/README.md +++ b/README.md @@ -338,7 +338,7 @@ Notable contributors include: - [[@paulusjacobus](https://github.com/paulusjacobus)] - [[@psavva](https://github.com/psavva)] - [[@Tannoo](https://github.com/Tannoo)] - - [[@TheSFReader](https://github.com/TheSFReader)] + - [[@teemuatlut](https://github.com/teemuatlut)] - ...and many others ## License