diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index 7535d77c..7c900bd4 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -275,8 +275,8 @@ void Config_RetrieveSettings() EEPROM_READ_VAR(i,minsegmenttime); EEPROM_READ_VAR(i,max_jerk[X_AXIS]); EEPROM_READ_VAR(i,max_jerk[Y_AXIS]); - EEPROM_READ_VAR(i,max_jerk[Z_AXIS]); - EEPROM_READ_VAR(i,max_jerk[E_AXIS]); + EEPROM_READ_VAR(i,max_jerk[Z_AXIS]); + EEPROM_READ_VAR(i,max_jerk[E_AXIS]); EEPROM_READ_VAR(i,add_homing); #ifndef ULTIPANEL int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4d666109..fde5e639 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5078,7 +5078,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp st_synchronize(); if (!farm_mode && loading_flag) { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN); + bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); while (!clean) { lcd_update_enable(true); @@ -5086,7 +5086,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp current_position[E_AXIS] += 40; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence st_synchronize(); - clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN); + clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); } } lcd_update_enable(true); @@ -5100,15 +5100,17 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp break; case 702: { - /*custom_message = true; + custom_message = true; custom_message_type = 2; - lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); //need to be tranlated to other languages - */ + lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); //need to be tranlated to spanish language + current_position[E_AXIS] -= 80; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 7000 / 60, active_extruder); - /*custom_message = false; + st_synchronize(); + lcd_setstatuspgm(WELCOME_MSG); + custom_message = false; custom_message_type = 0; - */ + } break; diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 3f1c5b5f..e94a3dd3 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -197,7 +197,7 @@ const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; -const char MSG_BED_HEATING_IT[] PROGMEM = "Piatto riscaldam."; +const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto"; const char MSG_BED_HEATING_ES[] PROGMEM = "Base Calentando"; const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -465,7 +465,7 @@ const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; -const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambia. riuscito!"; +const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!"; const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambiar bien!"; const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -478,7 +478,7 @@ const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; -const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Mutevole fil.!"; +const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando fil.!"; const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -633,11 +633,12 @@ const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; +const char MSG_ERROR_IT[] PROGMEM = "ERRORE:"; const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_ERROR_EN, MSG_ERROR_CZ, - MSG_ERROR_EN, + MSG_ERROR_IT, MSG_ERROR_EN, MSG_ERROR_PL }; @@ -947,7 +948,7 @@ const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; -const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscaldamento fatto."; +const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo"; const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentando listo."; const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -1090,7 +1091,7 @@ const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; -const char MSG_LOADING_COLOR_IT[] PROGMEM = "Cargando color"; +const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore"; const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cargando color"; const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -1103,7 +1104,7 @@ const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; -const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Cargando fil."; +const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Cargando fil."; const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -1199,7 +1200,7 @@ const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; -const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu. Potvrdte tlacitkem."; +const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."; const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; @@ -1418,7 +1419,7 @@ const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; -const char MSG_NOT_COLOR_IT[] PROGMEM = "Color no claro"; +const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro"; const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no claro"; const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -1431,7 +1432,7 @@ const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; -const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. no cargado"; +const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato"; const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no cargado"; const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -1583,10 +1584,10 @@ const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PREHEAT_NOZZLE_PL }; -const char MSG_PRESS_EN[] PROGMEM = "And press the knob"; -const char MSG_PRESS_CZ[] PROGMEM = "A stisknete tlacitko"; -const char MSG_PRESS_IT[] PROGMEM = "Y pulse el mando"; -const char MSG_PRESS_ES[] PROGMEM = "Y pulse el mando"; +const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; +const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; +const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; +const char MSG_PRESS_ES[] PROGMEM = "y pulse el mando"; const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PRESS_EN, @@ -2161,7 +2162,7 @@ const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; -const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [prestante]"; +const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]"; const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [mas fuerza]"; const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { @@ -2404,6 +2405,19 @@ const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = { MSG_UNKNOWN_COMMAND_EN }; +const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament"; +const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament"; +const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento"; +const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento"; +const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament"; +const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOADING_FILAMENT_EN, + MSG_UNLOADING_FILAMENT_CZ, + MSG_UNLOADING_FILAMENT_IT, + MSG_UNLOADING_FILAMENT_ES, + MSG_UNLOADING_FILAMENT_PL +}; + const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index c09f6395..cae53a98 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -518,6 +518,8 @@ extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM]; #define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; #define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) +extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index f9f7cca5..4759b172 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -88,7 +88,7 @@ #define MSG_PLEASE_WAIT "Prosim cekejte" #define MSG_LOADING_COLOR "Cisteni barvy" #define MSG_CHANGE_SUCCESS "Zmena uspesna!" -#define MSG_PRESS "A stisknete tlacitko" +#define MSG_PRESS "a stisknete tlacitko" #define MSG_INSERT_FILAMENT "Vlozte filament" #define MSG_CHANGING_FILAMENT "Vymena filamentu!" @@ -258,7 +258,8 @@ #define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem." #define MSG_CALIBRATE_E "Kalibrovat E" #define MSG_E_CAL_KNOB "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem." -#define MSG_MARK_FIL "Oznacte filament 100 mm od tela extruderu. Potvrdte tlacitkem." +#define MSG_MARK_FIL "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem." #define MSG_CLEAN_NOZZLE_E "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem." #define MSG_WAITING_TEMP "Cekani na zchladnuti trysky a podlozky." -#define MSG_FILAMENT_CLEAN "Je barva cista?" \ No newline at end of file +#define MSG_FILAMENT_CLEAN "Je barva cista?" +#define MSG_UNLOADING_FILAMENT "Vysouvam filament" \ No newline at end of file diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 12fd99b1..3d1649fa 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -85,7 +85,7 @@ #define(length=20) MSG_PLEASE_WAIT "Please wait" #define MSG_LOADING_COLOR "Loading color" #define MSG_CHANGE_SUCCESS "Change success!" -#define(length=20) MSG_PRESS "And press the knob" +#define(length=20) MSG_PRESS "and press the knob" #define(length=20) MSG_INSERT_FILAMENT "Insert filament" #define(length=20) MSG_CHANGING_FILAMENT "Changing filament!" @@ -250,7 +250,7 @@ #define(length=20, lines=8) MSG_CLEAN_NOZZLE_E "E calibration finished. Please clean the nozzle. Click when done." #define(length=20, lines=3) MSG_WAITING_TEMP "Waiting for heater and bed cooling" #define(length=20, lines=2) MSG_FILAMENT_CLEAN "Is color clear?" -//#define(lenght=20, lines=1) MSG_UNLOADING_FILAMENT "Unloading filament" +#define(lenght=20, lines=1) MSG_UNLOADING_FILAMENT "Unloading filament" #define MSG_BED_CORRECTION_MENU "Bed level correct" #define MSG_BED_CORRECTION_LEFT "Left side um" diff --git a/Firmware/language_es.h b/Firmware/language_es.h index 61085bbf..cd593172 100644 --- a/Firmware/language_es.h +++ b/Firmware/language_es.h @@ -59,7 +59,7 @@ #define MSG_PLEASE_WAIT "Espera" #define MSG_LOADING_COLOR "Cargando color" #define MSG_CHANGE_SUCCESS "Cambiar bien!" -#define MSG_PRESS "Y pulse el mando" +#define MSG_PRESS "y pulse el mando" #define MSG_INSERT_FILAMENT "Inserta filamento" #define MSG_CHANGING_FILAMENT "Cambiando fil.!" #define MSG_SILENT_MODE_ON "Modo [silencio]" @@ -252,3 +252,4 @@ #define MSG_CLEAN_NOZZLE_E "E calibrado. Limpiar la boquilla. Haga clic una vez terminado." #define MSG_WAITING_TEMP "Esperando enfriamiento de la cama y del extrusor." #define MSG_FILAMENT_CLEAN "Es el nuevo color nitido?" +#define MSG_UNLOADING_FILAMENT "Soltando filamento" \ No newline at end of file diff --git a/Firmware/language_it.h b/Firmware/language_it.h index 9e3e9c92..7940819c 100644 --- a/Firmware/language_it.h +++ b/Firmware/language_it.h @@ -64,27 +64,27 @@ #define MSG_SUPPORT "Support" #define MSG_YES "Si" #define MSG_NO "No" -#define MSG_NOT_LOADED "Fil. no cargado" -#define MSG_NOT_COLOR "Color no claro" -#define MSG_LOADING_COLOR "Cargando color" -#define MSG_CHANGE_SUCCESS "Cambia. riuscito!" -#define MSG_PRESS "Y pulse el mando" +#define MSG_NOT_LOADED "Fil. non caricato" +#define MSG_NOT_COLOR "Colore non puro" +#define MSG_LOADING_COLOR "Caricando colore" +#define MSG_CHANGE_SUCCESS "Cambio riuscito!" +#define MSG_PRESS "e cliccare manopola" #define MSG_INSERT_FILAMENT "Inserire filamento" -#define MSG_CHANGING_FILAMENT "Mutevole fil.!" +#define MSG_CHANGING_FILAMENT "Cambiando filam." #define MSG_PLEASE_WAIT "Aspetta" #define MSG_PREHEAT_NOZZLE "Preris. ugello!" -#define MSG_HEATING_COMPLETE "Riscaldamento fatto." -#define MSG_BED_HEATING "Piatto riscaldam." +#define MSG_HEATING_COMPLETE "Riscald. completo" +#define MSG_BED_HEATING "Riscald. letto" #define MSG_BED_DONE "Piatto fatto." -#define MSG_ERROR "ERROR:" +#define MSG_ERROR "ERRORE:" #define MSG_CORRECTLY "Cambiato corr.?" -#define MSG_LOADING_FILAMENT "Cargando fil." +#define MSG_LOADING_FILAMENT "Caricando filam." #define MSG_UNLOAD_FILAMENT "Scarica filamento" #define MSG_LOAD_FILAMENT "Carica filamento" #define MSG_SILENT_MODE_ON "Modo [silenzioso]" -#define MSG_SILENT_MODE_OFF "Mode [prestante]" +#define MSG_SILENT_MODE_OFF "Mode [forte]" #define MSG_REBOOT "Riavvia stampante" #define MSG_TAKE_EFFECT " per attualizzare" @@ -247,3 +247,4 @@ #define MSG_CLEAN_NOZZLE_E "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare." #define MSG_WAITING_TEMP "In attesa del raffreddamento della testina e del piatto." #define MSG_FILAMENT_CLEAN "Il colore e' nitido?" +#define MSG_UNLOADING_FILAMENT "Rilasc. filamento" \ No newline at end of file diff --git a/Firmware/language_pl.h b/Firmware/language_pl.h index c471c076..24476d45 100644 --- a/Firmware/language_pl.h +++ b/Firmware/language_pl.h @@ -257,4 +257,5 @@ #define MSG_MARK_FIL "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem." #define MSG_CLEAN_NOZZLE_E "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. " #define MSG_WAITING_TEMP "Oczekiwanie na wychlodzenie dyszy i podkladki." -#define MSG_FILAMENT_CLEAN "Czy kolor jest czysty?" \ No newline at end of file +#define MSG_FILAMENT_CLEAN "Czy kolor jest czysty?" +#define MSG_UNLOADING_FILAMENT "Wysuwam filament" \ No newline at end of file diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 431343d5..9f045812 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1712,49 +1712,58 @@ void lcd_wait_for_click() } } -int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting) +int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) { - lcd_display_message_fullscreen_P(msg); - lcd.setCursor(1, 2); - lcd_printPGM(MSG_YES); - lcd.setCursor(0, 3); - lcd_printPGM(PSTR(">")); - lcd_printPGM(MSG_NO); - bool yes = false; + lcd_display_message_fullscreen_P(msg); + + if (default_yes) { + lcd.setCursor(0, 2); + lcd_printPGM(PSTR(">")); + lcd_printPGM(MSG_YES); + lcd.setCursor(1, 3); + lcd_printPGM(MSG_NO); + } + else { + lcd.setCursor(1, 2); + lcd_printPGM(MSG_YES); + lcd.setCursor(0, 3); + lcd_printPGM(PSTR(">")); + lcd_printPGM(MSG_NO); + } + bool yes = default_yes ? true : false; - // Wait for user confirmation or a timeout. - unsigned long previous_millis_cmd = millis(); - int8_t enc_dif = encoderDiff; - for (;;) { - if (allow_timeouting && millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) - return -1; - manage_heater(); - manage_inactivity(true); - if (abs((enc_dif - encoderDiff)) > 4) { - if (abs(enc_dif - encoderDiff) > 1) { - lcd.setCursor(0, 2); - if (enc_dif > encoderDiff && yes) { - lcd_printPGM((PSTR(" "))); - lcd.setCursor(0, 3); - lcd_printPGM((PSTR(">"))); - yes = false; - } else if (enc_dif < encoderDiff && ! yes) { - lcd_printPGM((PSTR(">"))); - lcd.setCursor(0, 3); - lcd_printPGM((PSTR(" "))); - yes = true; - } - enc_dif = encoderDiff; - } - } - if (lcd_clicked()) { - while (lcd_clicked()) ; - delay(10); - while (lcd_clicked()) ; - return yes; - } - } + // Wait for user confirmation or a timeout. + unsigned long previous_millis_cmd = millis(); + int8_t enc_dif = encoderDiff; + for (;;) { + if (allow_timeouting && millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) + return -1; + manage_heater(); + manage_inactivity(true); + if (abs(enc_dif - encoderDiff) > 4) { + lcd.setCursor(0, 2); + if (enc_dif > encoderDiff && yes) { + lcd_printPGM((PSTR(" "))); + lcd.setCursor(0, 3); + lcd_printPGM((PSTR(">"))); + yes = false; + } + else if (enc_dif < encoderDiff && !yes) { + lcd_printPGM((PSTR(">"))); + lcd.setCursor(0, 3); + lcd_printPGM((PSTR(" "))); + yes = true; + } + enc_dif = encoderDiff; + } + if (lcd_clicked()) { + while (lcd_clicked()); + delay(10); + while (lcd_clicked()); + return yes; + } + } } void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask) @@ -2209,14 +2218,15 @@ void lcd_mesh_calibration_z() void lcd_calibrate_extruder() { if (degHotend0() > EXTRUDE_MINTEMP) { - current_position[E_AXIS] = 0; + current_position[E_AXIS] = 0; //set initial position to zero plan_set_e_position(current_position[E_AXIS]); - - long steps_start = current_position[E_AXIS]*axis_steps_per_unit[E_AXIS]; + + //long steps_start = st_get_position(E_AXIS); + long steps_final; float e_steps_per_unit; - float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 5; - float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; + float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 3; //initial automatic extrusion feedrate (depends on current value of axis_steps_per_unit to avoid too fast extrusion) + float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; //length of initial automatic extrusion sequence const char *msg_e_cal_knob = MSG_E_CAL_KNOB; const char *msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_e_cal_knob); const bool multi_screen = msg_next_e_cal_knob != NULL; @@ -2243,7 +2253,7 @@ void lcd_calibrate_extruder() { //manage_inactivity(true); manage_heater(); - if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { + if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { //adjusting mark by knob rotation delay_keep_alive(50); //previous_millis_cmd = millis(); encoderPosition += (encoderDiff / ENCODER_PULSES_PER_STEP); @@ -2258,9 +2268,10 @@ void lcd_calibrate_extruder() { } steps_final = current_position[E_AXIS] * axis_steps_per_unit[E_AXIS]; + //steps_final = st_get_position(E_AXIS); lcdDrawUpdate = 1; - e_steps_per_unit = ((float)(steps_final - steps_start)) / 100.f; - if (e_steps_per_unit < MIN_E_STEPS_PER_UNIT) e_steps_per_unit = MIN_E_STEPS_PER_UNIT; + e_steps_per_unit = ((float)(steps_final)) / 100.0f; + if (e_steps_per_unit < MIN_E_STEPS_PER_UNIT) e_steps_per_unit = MIN_E_STEPS_PER_UNIT; if (e_steps_per_unit > MAX_E_STEPS_PER_UNIT) e_steps_per_unit = MAX_E_STEPS_PER_UNIT; lcd_implementation_clear(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 02b40e77..e2396a35 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -49,7 +49,7 @@ void lcd_mylang(); extern void lcd_wait_for_click(); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); // 0: no, 1: yes, -1: timeouted - extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true); + extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false); // Ask the user to move the Z axis up to the end stoppers and let // the user confirm that it has been done.