Skip to content

Commit

Permalink
Merge pull request prusa3d#4765 from leptun/MBL_fixes
Browse files Browse the repository at this point in the history
Region MBL fixes
  • Loading branch information
3d-gussner authored Sep 4, 2024
2 parents 4e9e20c + 2fed2f0 commit 6ea4796
Show file tree
Hide file tree
Showing 19 changed files with 190 additions and 90 deletions.
91 changes: 49 additions & 42 deletions Firmware/Marlin_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2583,7 +2583,8 @@ static void gcode_G80()
{
constexpr float XY_AXIS_FEEDRATE = (homing_feedrate[X_AXIS] * 3) / 60;
constexpr float Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 60;
constexpr float Z_CALIBRATION_THRESHOLD = 0.35f;
constexpr float Z_CALIBRATION_THRESHOLD_TIGHT = 0.35f; // used for 7x7 MBL
constexpr float Z_CALIBRATION_THRESHOLD_RELAXED = 1.f; // used for 3x3 MBL
constexpr float MESH_HOME_Z_SEARCH_FAST = 0.35f;
st_synchronize();
if (planner_aborted)
Expand Down Expand Up @@ -2618,6 +2619,10 @@ static void gcode_G80()
if (uint8_t codeSeen = code_seen('N'), value = code_value_uint8(); codeSeen && (value == 7 || value == 3))
nMeasPoints = value;

// 7x7 region MBL needs tighter thresholds for triggering a Z realignment. This is because you want to have as little of a misalignment as possible between
// the "inner" MBL region and "outer" MBL region which is interpolated from Z calibration values.
const float Z_CALIBRATION_THRESHOLD = (nMeasPoints == 3) ? Z_CALIBRATION_THRESHOLD_RELAXED : Z_CALIBRATION_THRESHOLD_TIGHT;

uint8_t nProbeRetryCount = eeprom_read_byte((uint8_t*)EEPROM_MBL_PROBE_NR);
if (uint8_t codeSeen = code_seen('C'), value = code_value_uint8(); codeSeen && value >= 1 && value <= 10)
nProbeRetryCount = value;
Expand Down Expand Up @@ -2766,8 +2771,11 @@ static void gcode_G80()
st_synchronize();
static uint8_t g80_fail_cnt = 0;
if (mesh_point != MESH_NUM_X_POINTS * MESH_NUM_Y_POINTS) {
if (g80_fail_cnt++ >= 2) {
kill(_T(MSG_MBL_FAILED_Z_CAL));
if (g80_fail_cnt++ >= 1) {
print_stop();
lcd_show_fullscreen_message_and_wait_P(_T(MSG_MBL_FAILED));
lcd_z_calibration_prompt(false);
goto exit;
}
Sound_MakeSound(e_SOUND_TYPE_StandardAlert);
bool bState;
Expand Down Expand Up @@ -2812,44 +2820,47 @@ static void gcode_G80()
#endif
babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated.

// Apply the bed level correction to the mesh
bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
auto bedCorrectHelper = [eeprom_bed_correction_valid] (char code, uint8_t *eep_address) -> int8_t {
if (code_seen(code)) {
// Verify value is within allowed range
int16_t temp = code_value_short();
if (abs(temp) > BED_ADJUSTMENT_UM_MAX) {
printf_P(PSTR("%SExcessive bed leveling correction: %i microns\n"), errormagic, temp);
} else {
return (int8_t)temp; // Value is valid, use it
{ // Apply the bed level correction to the mesh
bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
auto bedCorrectHelper = [eeprom_bed_correction_valid] (char code, uint8_t *eep_address) -> int8_t {
if (code_seen(code)) {
// Verify value is within allowed range
int16_t temp = code_value_short();
if (abs(temp) > BED_ADJUSTMENT_UM_MAX) {
printf_P(PSTR("%SExcessive bed leveling correction: %i microns\n"), errormagic, temp);
} else {
return (int8_t)temp; // Value is valid, use it
}
} else if (eeprom_bed_correction_valid) {
return (int8_t)eeprom_read_byte(eep_address);
}
return 0;
};
const int8_t correction[4] = {
bedCorrectHelper('L', (uint8_t*)EEPROM_BED_CORRECTION_LEFT),
bedCorrectHelper('R', (uint8_t*)EEPROM_BED_CORRECTION_RIGHT),
bedCorrectHelper('F', (uint8_t*)EEPROM_BED_CORRECTION_FRONT),
bedCorrectHelper('B', (uint8_t*)EEPROM_BED_CORRECTION_REAR),
};
for (uint8_t row = 0; row < MESH_NUM_Y_POINTS; row++) {
for (uint8_t col = 0; col < MESH_NUM_X_POINTS; col++) {
constexpr float scaler = 0.001f / (MESH_NUM_X_POINTS - 1);
mbl.z_values[row][col] += scaler * (
+ correction[0] * (MESH_NUM_X_POINTS - 1 - col)
+ correction[1] * col
+ correction[2] * (MESH_NUM_Y_POINTS - 1 - row)
+ correction[3] * row);
}
} else if (eeprom_bed_correction_valid) {
return (int8_t)eeprom_read_byte(eep_address);
}
return 0;
};
const int8_t correction[4] = {
bedCorrectHelper('L', (uint8_t*)EEPROM_BED_CORRECTION_LEFT),
bedCorrectHelper('R', (uint8_t*)EEPROM_BED_CORRECTION_RIGHT),
bedCorrectHelper('F', (uint8_t*)EEPROM_BED_CORRECTION_FRONT),
bedCorrectHelper('B', (uint8_t*)EEPROM_BED_CORRECTION_REAR),
};
for (uint8_t row = 0; row < MESH_NUM_Y_POINTS; row++) {
for (uint8_t col = 0; col < MESH_NUM_X_POINTS; col++) {
constexpr float scaler = 0.001f / (MESH_NUM_X_POINTS - 1);
mbl.z_values[row][col] += scaler * (
+ correction[0] * (MESH_NUM_X_POINTS - 1 - col)
+ correction[1] * col
+ correction[2] * (MESH_NUM_Y_POINTS - 1 - row)
+ correction[3] * row);
}
}

mbl.upsample_3x3(); //interpolation from 3x3 to 7x7 points using largrangian polynomials while using the same array z_values[iy][ix] for storing (just coppying measured data to new destination and interpolating between them)

uint8_t useMagnetCompensation = code_seen('M') ? code_value_uint8() : eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION);
if (nMeasPoints == 7 && useMagnetCompensation) {
mbl_magnet_elimination();
{ // apply magnet compensation
uint8_t useMagnetCompensation = code_seen('M') ? code_value_uint8() : eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION);
if (nMeasPoints == 7 && useMagnetCompensation) {
mbl_magnet_elimination();
}
}

mbl.active = 1; //activate mesh bed leveling
Expand All @@ -2869,6 +2880,7 @@ static void gcode_G80()
plan_buffer_line_curposXYZE(400);
}
#endif // !PINDA_THERMISTOR
exit:
KEEPALIVE_STATE(NOT_BUSY);
// Restore custom message state
lcd_setstatuspgm(MSG_WELCOME);
Expand Down Expand Up @@ -2945,9 +2957,9 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
if (lcd_calibrate_z_end_stop_manual(onlyZ))
{
#endif //TMC2130

lcd_show_fullscreen_message_and_wait_P(_T(MSG_CONFIRM_NOZZLE_CLEAN));
if(onlyZ){
prompt_steel_sheet_on_bed(true);
lcd_display_message_fullscreen_P(_T(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1));
lcd_puts_at_P(0,3,_n("1/9"));
}else{
Expand All @@ -2966,12 +2978,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
if(!onlyZ)
{
KEEPALIVE_STATE(PAUSED_FOR_USER);
#ifdef STEEL_SHEET
uint8_t result = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false);
if(result == LCD_LEFT_BUTTON_CHOICE) {
lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET));
}
#endif //STEEL_SHEET
prompt_steel_sheet_on_bed(false);
lcd_show_fullscreen_message_and_wait_P(_T(MSG_PAPER));
KEEPALIVE_STATE(IN_HANDLER);
lcd_display_message_fullscreen_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1));
Expand Down
3 changes: 2 additions & 1 deletion Firmware/messages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ const char MSG_SILENT[] PROGMEM_I1 = ISTR("Silent"); ////MSG_SILENT c=7
const char MSG_NORMAL[] PROGMEM_I1 = ISTR("Normal"); ////MSG_NORMAL c=7
const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////MSG_STEALTH c=7
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////MSG_STEEL_SHEET_CHECK c=20 r=3
const char MSG_Z_CALIBRATION_PROMPT[] PROGMEM_I1 = ISTR("Z calibration recommended. Run it now?"); ////MSG_Z_CALIBRATION_PROMPT c=20 r=3
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////MSG_STOP_PRINT c=18
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED."); ////MSG_STOPPED c=20
const char MSG_PINDA_CALIBRATION[] PROGMEM_I1 = ISTR("PINDA cal."); ////MSG_PINDA_CALIBRATION c=13
Expand Down Expand Up @@ -211,7 +212,7 @@ extern const char MSG_CHANGED_PRINTER [] PROGMEM_I1 = ISTR("Warning: printer typ
extern const char MSG_CHANGED_BOTH [] PROGMEM_I1 = ISTR("Warning: both printer type and motherboard type changed."); ////MSG_CHANGED_BOTH c=20 r=4
extern const char MSG_DEFAULT_SETTINGS_LOADED [] PROGMEM_I1 = ISTR("Old settings found. Default PID, Esteps etc. will be set."); ////MSG_DEFAULT_SETTINGS_LOADED c=20 r=6
extern const char MSG_FORCE_SELFTEST [] PROGMEM_I1 = ISTR("Selftest will be run to calibrate accurate sensorless rehoming."); ////MSG_FORCE_SELFTEST c=20 r=8
extern const char MSG_MBL_FAILED_Z_CAL [] PROGMEM_I1 = ISTR("Mesh bed leveling failed. Please run Z calibration."); ////MSG_MBL_FAILED_Z_CAL c=20 r=4
extern const char MSG_MBL_FAILED [] PROGMEM_I1 = ISTR("Mesh bed leveling failed. Print canceled."); ////MSG_MBL_FAILED c=20 r=4
extern const char MSG_ZLEVELING_ENFORCED [] PROGMEM_I1 = ISTR("Some problem encountered, Z-leveling enforced ..."); ////MSG_ZLEVELING_ENFORCED c=20 r=4
extern const char MSG_UNLOAD_SUCCESSFUL [] PROGMEM_I1 = ISTR("Was filament unload successful?"); ////MSG_UNLOAD_SUCCESSFUL c=20 r=3
extern const char MSG_CHECK_IDLER [] PROGMEM_I1 = ISTR("Please open idler and remove filament manually."); ////MSG_CHECK_IDLER c=20 r=4
Expand Down
3 changes: 2 additions & 1 deletion Firmware/messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ extern const char MSG_SILENT[];
extern const char MSG_NORMAL[];
extern const char MSG_STEALTH[];
extern const char MSG_STEEL_SHEET_CHECK[];
extern const char MSG_Z_CALIBRATION_PROMPT[];
extern const char MSG_STOP_PRINT[];
extern const char MSG_STOPPED[];
extern const char MSG_PINDA_CALIBRATION[];
Expand Down Expand Up @@ -210,7 +211,7 @@ extern const char MSG_CHANGED_PRINTER [];
extern const char MSG_CHANGED_BOTH [];
extern const char MSG_DEFAULT_SETTINGS_LOADED [];
extern const char MSG_FORCE_SELFTEST [];
extern const char MSG_MBL_FAILED_Z_CAL [];
extern const char MSG_MBL_FAILED [];
extern const char MSG_ZLEVELING_ENFORCED [];
extern const char MSG_UNLOAD_SUCCESSFUL [];
extern const char MSG_CHECK_IDLER [];
Expand Down
28 changes: 23 additions & 5 deletions Firmware/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3748,6 +3748,22 @@ static void wizard_lay1cal_message(bool cold)
_T(MSG_WIZARD_V2_CAL_2));
}

void lcd_z_calibration_prompt(bool allowTimeouting) {
uint8_t result = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_Z_CALIBRATION_PROMPT), allowTimeouting, 0);
if (result == LCD_LEFT_BUTTON_CHOICE) {
lcd_mesh_calibration_z();
}
}

void prompt_steel_sheet_on_bed(bool wantedState) {
#ifdef STEEL_SHEET
bool sheetIsOnBed = !lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, !wantedState);
if (sheetIsOnBed != wantedState) {
lcd_show_fullscreen_message_and_wait_P(_T(wantedState ? MSG_PLACE_STEEL_SHEET : MSG_REMOVE_STEEL_SHEET));
}
#endif //STEEL_SHEET
}

//! @brief Printer first run wizard (Selftest and calibration)
//!
//!
Expand Down Expand Up @@ -3865,10 +3881,6 @@ void lcd_wizard(WizState state)
case S::Z:
lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_SHIPPING_HELPERS));
lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_TEST_PRINT));
wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false);
if (wizard_event == LCD_MIDDLE_BUTTON_CHOICE) {
lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET));
}
lcd_show_fullscreen_message_and_wait_P(_T(MSG_WIZARD_Z_CAL));
wizard_event = gcode_M45(true, 0);
if (!wizard_event) {
Expand Down Expand Up @@ -5533,10 +5545,16 @@ static void lcd_mesh_bed_leveling_settings()

bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0);
uint8_t points_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_POINTS_NR);
uint8_t mbl_z_probe_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_PROBE_NR);
uint8_t mbl_z_probe_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_PROBE_NR);
char sToggle[4]; //enough for nxn format

MENU_BEGIN();
ON_MENU_LEAVE(
// Prompt user to run Z calibration for best results with region MBL.
if (points_nr == 7) {
lcd_z_calibration_prompt(true);
}
);
MENU_ITEM_BACK_P(_T(MSG_SETTINGS));
sToggle[0] = points_nr + '0';
sToggle[1] = 'x';
Expand Down
3 changes: 3 additions & 0 deletions Firmware/ultralcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,9 @@ void lcd_temp_calibration_set();
void lcd_language();
#endif

void lcd_z_calibration_prompt(bool allowTimeouting);
void prompt_steel_sheet_on_bed(bool wantedState);

void lcd_wizard();

//! @brief Wizard state
Expand Down
9 changes: 7 additions & 2 deletions lang/po/Firmware.pot
Original file line number Diff line number Diff line change
Expand Up @@ -1203,9 +1203,9 @@ msgstr ""
msgid "Mesh Bed Leveling"
msgstr ""

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgid "Mesh bed leveling failed. Print canceled."
msgstr ""

#. MSG_MODE c=6
Expand Down Expand Up @@ -2452,6 +2452,11 @@ msgstr ""
msgid "You can always resume the Wizard from Calibration -> Wizard."
msgstr ""

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr ""

#. MSG_Z_CORRECTION c=13
#: ../../Firmware/messages.cpp:306 ../../Firmware/ultralcd.cpp:3988
msgid "Z-correct"
Expand Down
11 changes: 8 additions & 3 deletions lang/po/Firmware_cs.po
Original file line number Diff line number Diff line change
Expand Up @@ -2551,10 +2551,10 @@ msgstr "Výměna filamentu M600. Vložte nový filament nebo vysuňte starý."
msgid "Sensitivity"
msgstr "Citlivost"

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Mesh Bed Leveling selhal. Spusťte kalibraci osy Z."
msgid "Mesh bed leveling failed. Print canceled."
msgstr "Mesh Bed Leveling selhal. Tisk zrušen."

#. MSG_SET_READY c=18
#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:5265
Expand Down Expand Up @@ -2602,6 +2602,11 @@ msgstr "Není vložen filament. Pokračovat?"
msgid "There is no filament loaded. Print cancelled."
msgstr "Není vložen filament. Tisk zrušen."

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr "Doporučujeme kalibraci osy Z. Spustit nyní?"

#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."

Expand Down
11 changes: 8 additions & 3 deletions lang/po/Firmware_de.po
Original file line number Diff line number Diff line change
Expand Up @@ -2579,10 +2579,10 @@ msgstr ""
msgid "Sensitivity"
msgstr "Sensitivität"

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "MeshBett Ausgleich fehlgeschlagen. Z Kalibrierung ausführen."
msgid "Mesh bed leveling failed. Print canceled."
msgstr "MeshBett Ausgleich fehlgeschlagen. Druck abgebrochen."

#. MSG_SET_READY c=18
#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:5265
Expand Down Expand Up @@ -2630,6 +2630,11 @@ msgstr "Kein Filament geladen. Fortfahren?"
msgid "There is no filament loaded. Print cancelled."
msgstr "Kein Filament geladen. Druck abgebrochen."

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr "Z-Kalibrierung empfohlen. Jetzt ausführen?"

#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Entferne das alte Fil. und drücke den Knopf, um das neue zu laden."

Expand Down
11 changes: 8 additions & 3 deletions lang/po/Firmware_es.po
Original file line number Diff line number Diff line change
Expand Up @@ -2574,10 +2574,10 @@ msgstr ""
msgid "Sensitivity"
msgstr "Sensibilidad"

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Nivelación fallida. Ejecute la calibración Z."
msgid "Mesh bed leveling failed. Print canceled."
msgstr "Nivelación fallida. Impresión cancelada."

#. MSG_SET_READY c=18
#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:5265
Expand Down Expand Up @@ -2625,6 +2625,11 @@ msgstr "No hay ningún filamento cargado. ¿Continuar?"
msgid "There is no filament loaded. Print cancelled."
msgstr "No hay ningún filamento cargado. Impresión cancelada."

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr "Se recomienda calibrar Z. ¿Ejecutarlo ahora?"

#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr ""
#~ "Retira el fil. viejo y presiona el dial para comenzar a cargar el nuevo."
Expand Down
11 changes: 8 additions & 3 deletions lang/po/Firmware_fr.po
Original file line number Diff line number Diff line change
Expand Up @@ -2586,10 +2586,10 @@ msgstr ""
msgid "Sensitivity"
msgstr "Sensibilité"

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Mesh bed leveling a échoué. Veuillez procéder à l'étalonnage Z."
msgid "Mesh bed leveling failed. Print canceled."
msgstr "Mesh bed leveling a échoué. Impression annulée."

#. MSG_SET_READY c=18
#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:5265
Expand Down Expand Up @@ -2637,6 +2637,11 @@ msgstr "Il n'y a pas de filament chargé. Continuer?"
msgid "There is no filament loaded. Print cancelled."
msgstr "Il n'y a pas de filament chargé. Impression annulée."

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr "Calibrage Z recommandé. Exécuter maintenant?"

#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr ""
#~ "Retirez l'ancien fil. puis appuyez sur le bouton pour charger le nouveau."
Expand Down
11 changes: 8 additions & 3 deletions lang/po/Firmware_hr.po
Original file line number Diff line number Diff line change
Expand Up @@ -2568,10 +2568,10 @@ msgstr "Promjena filamenta M600. Stavite novu nit ili izbacite staru."
msgid "Sensitivity"
msgstr "Osjetljivost"

#. MSG_MBL_FAILED_Z_CAL c=20 r=4
#. MSG_MBL_FAILED c=20 r=4
#: ../../Firmware/Marlin_main.cpp:3038 ../../Firmware/messages.cpp:203
msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Niveliranje podloge nije uspijelo. Pokrenite Z kalibraciju."
msgid "Mesh bed leveling failed. Print canceled."
msgstr "Niveliranje podloge nije uspijelo. Print je otkazan."

#. MSG_SET_READY c=18
#: ../../Firmware/messages.cpp:105 ../../Firmware/ultralcd.cpp:5265
Expand Down Expand Up @@ -2619,6 +2619,11 @@ msgstr "Nema umetnute niti. Nastavite?"
msgid "There is no filament loaded. Print cancelled."
msgstr "Nema umetnute niti. Print je otkazan."

#. MSG_Z_CALIBRATION_PROMPT c=20 r=3
#: ../../Firmware/messages.cpp:128 ../../Firmware/ultralcd.cpp:3752
msgid "Z calibration recommended. Run it now?"
msgstr "Preporuča se Z kalibracija. Pokrenuti ga sada?"

#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Uklonite stari fil. i pritisnite gumb za pocetak stavljanja novog."

Expand Down
Loading

0 comments on commit 6ea4796

Please sign in to comment.