瀏覽代碼

Merge pull request #35 from PavelSindler/MK2

Added message translations, improved homing, change display when waiting for cooling in xyz calibration, added multiscreen messages for E cal., reset xyz cal. resets live adjust also, Z calibration don't set preheat values to zero, improved allert messages in selftest, reset bed level correction only for xyz calibration
PavelSindler 8 年之前
父節點
當前提交
65dafe0587
共有 9 個文件被更改,包括 339 次插入155 次删除
  1. 18 9
      Firmware/Marlin_main.cpp
  2. 179 40
      Firmware/language_all.cpp
  3. 32 32
      Firmware/language_all.h
  4. 19 2
      Firmware/language_cz.h
  5. 5 5
      Firmware/language_en.h
  6. 19 2
      Firmware/language_es.h
  7. 19 2
      Firmware/language_it.h
  8. 19 2
      Firmware/language_pl.h
  9. 29 61
      Firmware/ultralcd.cpp

+ 18 - 9
Firmware/Marlin_main.cpp

@@ -2520,6 +2520,7 @@ void process_commands()
 	else
 		{
 			st_synchronize();
+			homing_flag = false;
 			// Push the commands to the front of the message queue in the reverse order!
 			// There shall be always enough space reserved for these commands.
 			// enquecommand_front_P((PSTR("G80")));
@@ -3288,6 +3289,11 @@ void process_commands()
      break;
 
     case 44: // M44: Prusa3D: Reset the bed skew and offset calibration.
+
+		// Reset the baby step value and the baby step applied flag.
+		calibration_status_store(CALIBRATION_STATUS_ASSEMBLED);
+		eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0);
+
         // Reset the skew and offset in both RAM and EEPROM.
         reset_bed_offset_and_skew();
         // Reset world2machine_rotation_and_skew and world2machine_shift, therefore
@@ -3298,12 +3304,17 @@ void process_commands()
 
     case 45: // M45: Prusa3D: bed skew and offset with manual Z up
     {
-		setTargetBed(0);
-		setTargetHotend(0, 0);
-		setTargetHotend(0, 1);
-		setTargetHotend(0, 2);
-				
-		adjust_bed_reset(); //reset bed level correction
+		// Only Z calibration?
+		bool onlyZ = code_seen('Z');
+
+		if (!onlyZ) {
+			setTargetBed(0);
+			setTargetHotend(0, 0);
+			setTargetHotend(0, 1);
+			setTargetHotend(0, 2);
+			adjust_bed_reset(); //reset bed level correction
+		}
+		
         // Disable the default update procedure of the display. We will do a modal dialog.
         lcd_update_enable(false);
         // Let the planner use the uncorrected coordinates.
@@ -3316,9 +3327,7 @@ void process_commands()
         babystep_reset();
         // Mark all axes as in a need for homing.
         memset(axis_known_position, 0, sizeof(axis_known_position));
-        // Only Z calibration?
-        bool onlyZ = code_seen('Z');
-        
+                
         // Let the user move the Z axes up to the end stoppers.
         if (lcd_calibrate_z_end_stop_manual( onlyZ )) {
             refresh_cmd_timeout();

+ 179 - 40
Firmware/language_all.cpp

@@ -326,10 +326,10 @@ const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG
 };
 
 const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "X/Y skewed severly. Skew will be corrected automatically.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "X/Y osy jsou silne zkosene. Zkoseni bude automaticky vyrovnano pri tisku.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "X/Y fortemente distorto. La distorsione verra' corretta automaticamente.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "X/Y muy distorsionado. La distorsion sera corregida automaticamente.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Osie X/Y sa mocno skosne. Skos bedzie aut. wyrownany przy druku.";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ[] PROGMEM = "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku.";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT[] PROGMEM = "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata.";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES[] PROGMEM = "Calibracion XYZ correcta. La inclinacion se corregira automaticamente.";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku.";
 const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN,
 	MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ,
@@ -339,10 +339,10 @@ const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NU
 };
 
 const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazione XYZ compiuta. Gli assi X/Y sono leggermente distorti.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ conseguida. Ejes X/Y un poco torcidos.";
-const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ w porzadku. Osie X/Y lekko skosne.";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT[] PROGMEM = "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES[] PROGMEM = "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!";
+const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL[] PROGMEM = "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!";
 const char * const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN,
 	MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ,
@@ -425,8 +425,16 @@ const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E";
-const char * const MSG_CALIBRATE_E_LANG_TABLE[1] PROGMEM = {
-	MSG_CALIBRATE_E_EN
+const char MSG_CALIBRATE_E_CZ[] PROGMEM = "Kalibrovat E";
+const char MSG_CALIBRATE_E_IT[] PROGMEM = "Calibra E";
+const char MSG_CALIBRATE_E_ES[] PROGMEM = "Calibrar E";
+const char MSG_CALIBRATE_E_PL[] PROGMEM = "Kalibruj E";
+const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_CALIBRATE_E_EN,
+	MSG_CALIBRATE_E_CZ,
+	MSG_CALIBRATE_E_IT,
+	MSG_CALIBRATE_E_ES,
+	MSG_CALIBRATE_E_PL
 };
 
 const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD";
@@ -443,9 +451,18 @@ const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder";
-const char * const MSG_CHANGE_EXTR_LANG_TABLE[1] PROGMEM = {
-	MSG_CHANGE_EXTR_EN
+const char MSG_CHANGE_EXTR_CZ[] PROGMEM = "Zmenit extruder";
+const char MSG_CHANGE_EXTR_IT[] PROGMEM = "Cambio estrusore.";
+const char MSG_CHANGE_EXTR_ES[] PROGMEM = "Cambiar extrusor.";
+const char MSG_CHANGE_EXTR_PL[] PROGMEM = "Zmienic ekstruder";
+const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_CHANGE_EXTR_EN,
+	MSG_CHANGE_EXTR_CZ,
+	MSG_CHANGE_EXTR_IT,
+	MSG_CHANGE_EXTR_ES,
+	MSG_CHANGE_EXTR_PL
 };
+
 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!";
@@ -473,9 +490,18 @@ const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done.";
-const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[1] PROGMEM = {
-	MSG_CLEAN_NOZZLE_E_EN
+const char MSG_CLEAN_NOZZLE_E_CZ[] PROGMEM = "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem.";
+const char MSG_CLEAN_NOZZLE_E_IT[] PROGMEM = "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare.";
+const char MSG_CLEAN_NOZZLE_E_ES[] PROGMEM = "E calibrado. Limpiar la boquilla. Haga clic una vez terminado.";
+const char MSG_CLEAN_NOZZLE_E_PL[] PROGMEM = "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. ";
+const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_CLEAN_NOZZLE_E_EN,
+	MSG_CLEAN_NOZZLE_E_CZ,
+	MSG_CLEAN_NOZZLE_E_IT,
+	MSG_CLEAN_NOZZLE_E_ES,
+	MSG_CLEAN_NOZZLE_E_PL
 };
+
 const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card";
 const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = {
 	MSG_CNG_SDCARD_EN
@@ -513,8 +539,16 @@ const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN[] PROGMEM = "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done.";
-const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[1] PROGMEM = {
-	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN
+const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem.";
+const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare.";
+const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado.";
+const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem.";
+const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN,
+	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ,
+	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT,
+	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES,
+	MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL
 };
 
 const char MSG_CONTROL_EN[] PROGMEM = "Control";
@@ -659,9 +693,18 @@ const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = {
 };
 
 const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done.";
-const char * const MSG_E_CAL_KNOB_LANG_TABLE[1] PROGMEM = {
-	MSG_E_CAL_KNOB_EN
+const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem.";
+const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare.";
+const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado.";
+const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem.";
+const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_E_CAL_KNOB_EN,
+	MSG_E_CAL_KNOB_CZ,
+	MSG_E_CAL_KNOB_IT,
+	MSG_E_CAL_KNOB_ES,
+	MSG_E_CAL_KNOB_PL
 };
+
 const char MSG_Enqueing_EN[] PROGMEM = "enqueing \"";
 const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = {
 	MSG_Enqueing_EN
@@ -689,6 +732,7 @@ const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print";
 const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = {
 	MSG_FARM_CARD_MENU_EN
 };
+
 const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament";
 const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament";
 const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento";
@@ -703,28 +747,70 @@ const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?";
-const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[1] PROGMEM = {
-	MSG_FILAMENT_CLEAN_EN
+const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?";
+const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?";
+const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?";
+const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?";
+const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_CLEAN_EN,
+	MSG_FILAMENT_CLEAN_CZ,
+	MSG_FILAMENT_CLEAN_IT,
+	MSG_FILAMENT_CLEAN_ES,
+	MSG_FILAMENT_CLEAN_PL
 };
+
 const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done.";
-const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[1] PROGMEM = {
-	MSG_FILAMENT_LOADING_T0_EN
+const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 1. Potvrdte tlacitkem.";
+const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare.";
+const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado.";
+const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem.";
+const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_LOADING_T0_EN,
+	MSG_FILAMENT_LOADING_T0_CZ,
+	MSG_FILAMENT_LOADING_T0_IT,
+	MSG_FILAMENT_LOADING_T0_ES,
+	MSG_FILAMENT_LOADING_T0_PL
 };
 
 const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done.";
-const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[1] PROGMEM = {
-	MSG_FILAMENT_LOADING_T1_EN
+const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 2. Potvrdte tlacitkem.";
+const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare.";
+const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado.";
+const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem.";
+const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_LOADING_T1_EN,
+	MSG_FILAMENT_LOADING_T1_CZ,
+	MSG_FILAMENT_LOADING_T1_IT,
+	MSG_FILAMENT_LOADING_T1_ES,
+	MSG_FILAMENT_LOADING_T1_PL
 };
 
 const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done.";
-const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[1] PROGMEM = {
-	MSG_FILAMENT_LOADING_T2_EN
+const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 3. Potvrdte tlacitkem.";
+const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare.";
+const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado.";
+const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem.";
+const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_LOADING_T2_EN,
+	MSG_FILAMENT_LOADING_T2_CZ,
+	MSG_FILAMENT_LOADING_T2_IT,
+	MSG_FILAMENT_LOADING_T2_ES,
+	MSG_FILAMENT_LOADING_T2_PL
 };
 
 const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done.";
-const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[1] PROGMEM = {
-	MSG_FILAMENT_LOADING_T3_EN
+const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 4. Potvrdte tlacitkem.";
+const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare.";
+const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado.";
+const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem.";
+const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FILAMENT_LOADING_T3_EN,
+	MSG_FILAMENT_LOADING_T3_CZ,
+	MSG_FILAMENT_LOADING_T3_IT,
+	MSG_FILAMENT_LOADING_T3_ES,
+	MSG_FILAMENT_LOADING_T3_PL
 };
+
 const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file";
 const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = {
 	MSG_FILE_PRINTED_EN
@@ -736,18 +822,44 @@ const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = {
 };
 
 const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait.";
-const char * const MSG_FIL_ADJUSTING_LANG_TABLE[1] PROGMEM = {
-	MSG_FIL_ADJUSTING_EN
+const char MSG_FIL_ADJUSTING_CZ[] PROGMEM = "Probiha srovnani filamentu. Prosim cekejte.";
+const char MSG_FIL_ADJUSTING_IT[] PROGMEM = "Filamento in fase di regolazione. Attendere prego.";
+const char MSG_FIL_ADJUSTING_ES[] PROGMEM = "Ajustando filamentos. Esperar por favor.";
+const char MSG_FIL_ADJUSTING_PL[] PROGMEM = "Przebiega wyrownanie filamentow. Prosze czekac.";
+const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FIL_ADJUSTING_EN,
+	MSG_FIL_ADJUSTING_CZ,
+	MSG_FIL_ADJUSTING_IT,
+	MSG_FIL_ADJUSTING_ES,
+	MSG_FIL_ADJUSTING_PL
 };
+
 const char MSG_FIL_LOADED_CHECK_EN[] PROGMEM = "Is filament loaded?";
-const char * const MSG_FIL_LOADED_CHECK_LANG_TABLE[1] PROGMEM = {
-	MSG_FIL_LOADED_CHECK_EN
+const char MSG_FIL_LOADED_CHECK_CZ[] PROGMEM = "Je filament zaveden?";
+const char MSG_FIL_LOADED_CHECK_IT[] PROGMEM = "Filamento caricato?";
+const char MSG_FIL_LOADED_CHECK_ES[] PROGMEM = "Esta cargado el filamento?";
+const char MSG_FIL_LOADED_CHECK_PL[] PROGMEM = "Czy filament jest wprowadzony?";
+const char * const MSG_FIL_LOADED_CHECK_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FIL_LOADED_CHECK_EN,
+	MSG_FIL_LOADED_CHECK_CZ,
+	MSG_FIL_LOADED_CHECK_IT,
+	MSG_FIL_LOADED_CHECK_ES,
+	MSG_FIL_LOADED_CHECK_PL
 };
 
 const char MSG_FIL_TUNING_EN[] PROGMEM = "Rotate the knob to adjust filament.";
-const char * const MSG_FIL_TUNING_LANG_TABLE[1] PROGMEM = {
-	MSG_FIL_TUNING_EN
+const char MSG_FIL_TUNING_CZ[] PROGMEM = "Otacenim tlacitka doladte pozici filamentu.";
+const char MSG_FIL_TUNING_IT[] PROGMEM = "Girare la manopola per regolare il filamento";
+const char MSG_FIL_TUNING_ES[] PROGMEM = "Rotar el mando para ajustar el filamento.";
+const char MSG_FIL_TUNING_PL[] PROGMEM = "Obrotem przycisku dostroj pozycje filamentu.";
+const char * const MSG_FIL_TUNING_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_FIL_TUNING_EN,
+	MSG_FIL_TUNING_CZ,
+	MSG_FIL_TUNING_IT,
+	MSG_FIL_TUNING_ES,
+	MSG_FIL_TUNING_PL
 };
+
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Searching bed calibration point";
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Hledam kalibracni bod podlozky";
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Ricerca del letto punto di calibraz.";
@@ -1021,9 +1133,18 @@ const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
 };
 
 const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley";
-const char * const MSG_LOOSE_PULLEY_LANG_TABLE[1] PROGMEM = {
-	MSG_LOOSE_PULLEY_EN
+const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka";
+const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta";
+const char MSG_LOOSE_PULLEY_ES[] PROGMEM = "Polea suelta";
+const char MSG_LOOSE_PULLEY_PL[] PROGMEM = "Kolo pasowe";
+const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_LOOSE_PULLEY_EN,
+	MSG_LOOSE_PULLEY_CZ,
+	MSG_LOOSE_PULLEY_IT,
+	MSG_LOOSE_PULLEY_ES,
+	MSG_LOOSE_PULLEY_PL
 };
+
 const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder ";
 const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = {
 	MSG_M104_INVALID_EXTRUDER_EN
@@ -1078,9 +1199,18 @@ 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 * const MSG_MARK_FIL_LANG_TABLE[1] PROGMEM = {
-	MSG_MARK_FIL_EN
+const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu. 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.";
+const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_MARK_FIL_EN,
+	MSG_MARK_FIL_CZ,
+	MSG_MARK_FIL_IT,
+	MSG_MARK_FIL_ES,
+	MSG_MARK_FIL_PL
 };
+
 const char MSG_MAX_EN[] PROGMEM = " \002 Max";
 const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = {
 	MSG_MAX_EN
@@ -2332,9 +2462,18 @@ const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = {
 };
 
 const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for heater and bed cooling";
-const char * const MSG_WAITING_TEMP_LANG_TABLE[1] PROGMEM = {
-	MSG_WAITING_TEMP_EN
+const char MSG_WAITING_TEMP_CZ[] PROGMEM = "Cekani na zchladnuti trysky a podlozky.";
+const char MSG_WAITING_TEMP_IT[] PROGMEM = "In attesa del raffreddamento della testina e del piatto.";
+const char MSG_WAITING_TEMP_ES[] PROGMEM = "Esperando enfriamiento de la cama y del extrusor.";
+const char MSG_WAITING_TEMP_PL[] PROGMEM = "Oczekiwanie na wychlodzenie dyszy i podkladki.";
+const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_WAITING_TEMP_EN,
+	MSG_WAITING_TEMP_CZ,
+	MSG_WAITING_TEMP_IT,
+	MSG_WAITING_TEMP_ES,
+	MSG_WAITING_TEMP_PL
 };
+
 const char MSG_WATCH_EN[] PROGMEM = "Info screen";
 const char MSG_WATCH_CZ[] PROGMEM = "Informace";
 const char MSG_WATCH_IT[] PROGMEM = "Schermata info";

+ 32 - 32
Firmware/language_all.h

@@ -104,18 +104,18 @@ extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM];
 #define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE)
 extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM];
 #define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE)
-extern const char* const MSG_CALIBRATE_E_LANG_TABLE[1];
-#define MSG_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_E_LANG_TABLE, 0)
+extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM];
+#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE)
 extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM];
 #define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE)
-extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[1];
-#define MSG_CHANGE_EXTR LANG_TABLE_SELECT_EXPLICIT(MSG_CHANGE_EXTR_LANG_TABLE, 0)
+extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM];
+#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE)
 extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM];
 #define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE)
 extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM];
 #define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE)
-extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[1];
-#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT_EXPLICIT(MSG_CLEAN_NOZZLE_E_LANG_TABLE, 0)
+extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM];
+#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE)
 extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1];
 #define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0)
 extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1];
@@ -124,8 +124,8 @@ extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM];
 #define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE)
 extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM];
 #define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE)
-extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[1];
-#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE, 0)
+extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM];
+#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE)
 extern const char* const MSG_CONTROL_LANG_TABLE[1];
 #define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0)
 extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM];
@@ -168,8 +168,8 @@ extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1];
 #define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0)
 extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1];
 #define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0)
-extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[1];
-#define MSG_E_CAL_KNOB LANG_TABLE_SELECT_EXPLICIT(MSG_E_CAL_KNOB_LANG_TABLE, 0)
+extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM];
+#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE)
 extern const char* const MSG_Enqueing_LANG_TABLE[1];
 #define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0)
 extern const char* const MSG_FACTOR_LANG_TABLE[1];
@@ -180,26 +180,26 @@ extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1];
 #define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0)
 extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM];
 #define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE)
-extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[1];
-#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_CLEAN_LANG_TABLE, 0)
-extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[1];
-#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_LOADING_T0_LANG_TABLE, 0)
-extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[1];
-#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_LOADING_T1_LANG_TABLE, 0)
-extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[1];
-#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_LOADING_T2_LANG_TABLE, 0)
-extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[1];
-#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENT_LOADING_T3_LANG_TABLE, 0)
+extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE)
+extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE)
+extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE)
+extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE)
+extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM];
+#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE)
 extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1];
 #define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0)
 extern const char* const MSG_FILE_SAVED_LANG_TABLE[1];
 #define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0)
-extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[1];
-#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT_EXPLICIT(MSG_FIL_ADJUSTING_LANG_TABLE, 0)
-extern const char* const MSG_FIL_LOADED_CHECK_LANG_TABLE[1];
-#define MSG_FIL_LOADED_CHECK LANG_TABLE_SELECT_EXPLICIT(MSG_FIL_LOADED_CHECK_LANG_TABLE, 0)
-extern const char* const MSG_FIL_TUNING_LANG_TABLE[1];
-#define MSG_FIL_TUNING LANG_TABLE_SELECT_EXPLICIT(MSG_FIL_TUNING_LANG_TABLE, 0)
+extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM];
+#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE)
+extern const char* const MSG_FIL_LOADED_CHECK_LANG_TABLE[LANG_NUM];
+#define MSG_FIL_LOADED_CHECK LANG_TABLE_SELECT(MSG_FIL_LOADED_CHECK_LANG_TABLE)
+extern const char* const MSG_FIL_TUNING_LANG_TABLE[LANG_NUM];
+#define MSG_FIL_TUNING LANG_TABLE_SELECT(MSG_FIL_TUNING_LANG_TABLE)
 extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM];
 #define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE)
 extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM];
@@ -254,8 +254,8 @@ extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1];
 #define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0)
 extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM];
 #define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE)
-extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[1];
-#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT_EXPLICIT(MSG_LOOSE_PULLEY_LANG_TABLE, 0)
+extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM];
+#define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE)
 extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1];
 #define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0)
 extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1];
@@ -274,8 +274,8 @@ extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1];
 #define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0)
 extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM];
 #define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE)
-extern const char* const MSG_MARK_FIL_LANG_TABLE[1];
-#define MSG_MARK_FIL LANG_TABLE_SELECT_EXPLICIT(MSG_MARK_FIL_LANG_TABLE, 0)
+extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM];
+#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE)
 extern const char* const MSG_MAX_LANG_TABLE[1];
 #define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0)
 extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM];
@@ -532,8 +532,8 @@ extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1];
 #define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0)
 extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1];
 #define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0)
-extern const char* const MSG_WAITING_TEMP_LANG_TABLE[1];
-#define MSG_WAITING_TEMP LANG_TABLE_SELECT_EXPLICIT(MSG_WAITING_TEMP_LANG_TABLE, 0)
+extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM];
+#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE)
 extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM];
 #define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE)
 extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1];

+ 19 - 2
Firmware/language_cz.h

@@ -216,8 +216,8 @@
 #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND			"Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED			"Kalibrace XYZ selhala. Nahlednete do manualu."
 #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT					"Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD					"Kalibrace XYZ v poradku. X/Y osy mirne zkosene."
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME				"X/Y osy jsou silne zkosene. Zkoseni bude automaticky vyrovnano pri tisku."
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD					"Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME				"Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR		"Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR	"Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR		"Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
@@ -245,3 +245,20 @@
 #define MSG_MENU_CALIBRATION									"Kalibrace"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF					"SD card [normal]"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON					"SD card [FlshAir]"
+
+#define MSG_LOOSE_PULLEY								"Uvolnena remenicka"
+#define MSG_FILAMENT_LOADING_T0							"Vložte filament do extruderu 1. Potvrdte tlacitkem."
+#define MSG_FILAMENT_LOADING_T1							"Vložte filament do extruderu 2. Potvrdte tlacitkem."
+#define MSG_FILAMENT_LOADING_T2							"Vložte filament do extruderu 3. Potvrdte tlacitkem."
+#define MSG_FILAMENT_LOADING_T3							"Vložte filament do extruderu 4. Potvrdte tlacitkem."
+#define MSG_CHANGE_EXTR									"Zmenit extruder"
+#define MSG_FIL_LOADED_CHECK							"Je filament zaveden?"
+#define MSG_FIL_TUNING									"Otacenim tlacitka doladte pozici filamentu."
+#define MSG_FIL_ADJUSTING								"Probiha srovnani filamentu. Prosim cekejte."
+#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_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?" 

+ 5 - 5
Firmware/language_en.h

@@ -243,13 +243,13 @@
 #define(length=20,lines=8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ			"Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."
 #define(length=20, lines=4) MSG_STACK_ERROR						"Error - static memory has been overwritten"
 #define(length=20, lines=1) MSG_CALIBRATE_E						"Calibrate E"
-#define(length=20, lines=4) MSG_E_CAL_KNOB						"Rotate knob until mark reaches extruder body. Click when done."
+#define(length=20, lines=8) MSG_E_CAL_KNOB						"Rotate knob until mark reaches extruder body. Click when done."
 
 //#define(length=20, lines=1) MSG_FARM_CARD_MENU					"Farm mode print"
-#define(length=20, lines=4) MSG_MARK_FIL						"Mark filament 100mm from extruder body. Click when done."
-#define(length=20, lines=4) MSG_CLEAN_NOZZLE_E				"E calibration finished. Please clean the nozzle. Click when done."
-#define(length=20, lines=2) MSG_WAITING_TEMP				"Waiting for heater and bed cooling"
-#define(length=20, lines=1) MSG_FILAMENT_CLEAN				"Is color clear?"
+#define(length=20, lines=8) MSG_MARK_FIL						"Mark filament 100mm from extruder body. Click when done."
+#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 MSG_BED_CORRECTION_MENU									"Bed level correct"
 #define MSG_BED_CORRECTION_LEFT									"Left side  um"

+ 19 - 2
Firmware/language_es.h

@@ -209,8 +209,8 @@
 #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND           "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED            "Calibracion XYZ fallada. Consultar el manual por favor."
 #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT               "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD             "Calibracion XYZ conseguida. Ejes X/Y un poco torcidos."
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME          "X/Y muy distorsionado. La distorsion sera corregida automaticamente."
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD             "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME          "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR     "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR        "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR     "Calibracion XYZ fallad. Punto delanteros no alcanzables."
@@ -235,3 +235,20 @@
 #define MSG_MENU_CALIBRATION									"Calibracion"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF					"SD card [normal]"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON					"SD card [FlshAir]"
+
+#define MSG_LOOSE_PULLEY								"Polea suelta"
+#define MSG_FILAMENT_LOADING_T0							"Insertar filamento en el extrusor 1. Haga clic una vez terminado."
+#define MSG_FILAMENT_LOADING_T1							"Insertar filamento en el extrusor 2. Haga clic una vez terminado."
+#define MSG_FILAMENT_LOADING_T2							"Insertar filamento en el extrusor 3. Haga clic una vez terminado."
+#define MSG_FILAMENT_LOADING_T3							"Insertar filamento en el extrusor 4. Haga clic una vez terminado."
+#define MSG_CHANGE_EXTR									"Cambiar extrusor."
+#define MSG_FIL_LOADED_CHECK							"Esta cargado el filamento?"
+#define MSG_FIL_TUNING									"Rotar el mando para ajustar el filamento."
+#define MSG_FIL_ADJUSTING								"Ajustando filamentos. Esperar por favor."
+#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ				"Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."
+#define MSG_CALIBRATE_E									"Calibrar E"
+#define MSG_E_CAL_KNOB									"Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."
+#define MSG_MARK_FIL									"Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."
+#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?"

+ 19 - 2
Firmware/language_it.h

@@ -200,8 +200,8 @@
 #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND		"Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED		"Calibrazione XYZ fallita. Si prega di consultare il manuale."
 #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT			"Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD			"Calibrazione XYZ compiuta. Gli assi X/Y sono leggermente distorti."
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME		"X/Y fortemente distorto. La distorsione verra' corretta automaticamente."
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD			"Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME		"Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR	"Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR	"Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR	"Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
@@ -230,3 +230,20 @@
 #define MSG_MENU_CALIBRATION							"Calibrazione"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF					"SD card [normal]"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON					"SD card [FlshAir]"
+
+#define MSG_LOOSE_PULLEY								"Puleggia lenta"
+#define MSG_FILAMENT_LOADING_T0							"Inserire filamento nell'estrusore 1. Click per continuare."
+#define MSG_FILAMENT_LOADING_T1							"Inserire filamento nell'estrusore 2. Click per continuare."
+#define MSG_FILAMENT_LOADING_T2							"Inserire filamento nell'estrusore 3. Click per continuare."
+#define MSG_FILAMENT_LOADING_T3							"Inserire filamento nell'estrusore 4. Click per continuare."
+#define MSG_CHANGE_EXTR									"Cambio estrusore."
+#define MSG_FIL_LOADED_CHECK							"Filamento caricato?"
+#define MSG_FIL_TUNING									"Girare la manopola per regolare il filamento"
+#define MSG_FIL_ADJUSTING								"Filamento in fase di regolazione. Attendere prego."
+#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ				"I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."
+#define MSG_CALIBRATE_E									"Calibra E"
+#define MSG_E_CAL_KNOB									"Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."
+#define MSG_MARK_FIL									"Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."
+#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?"

+ 19 - 2
Firmware/language_pl.h

@@ -215,8 +215,8 @@
 #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND           "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED            "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."
 #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT                   "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD                 "Kalibracja XYZ w porzadku. Osie X/Y lekko skosne."
-#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME              "Osie X/Y sa mocno skosne. Skos bedzie aut. wyrownany przy druku."
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD                 "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
+#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME              "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR     "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR    "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."
 #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR     "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."
@@ -241,3 +241,20 @@
 #define MSG_MENU_CALIBRATION									"Kalibracja"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF					"karta SD [normal]"
 #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON					"karta SD[FlshAir]"
+
+#define MSG_LOOSE_PULLEY										"Kolo pasowe"
+#define MSG_FILAMENT_LOADING_T0									"Wloz filament do ekstrudera 1. Potwierdz przyciskiem."
+#define MSG_FILAMENT_LOADING_T1									"Wloz filament do ekstrudera 2. Potwierdz przyciskiem."
+#define MSG_FILAMENT_LOADING_T2									"Wloz filament do ekstrudera 3. Potwierdz przyciskiem."
+#define MSG_FILAMENT_LOADING_T3									"Wloz filament do ekstrudera 4. Potwierdz przyciskiem."
+#define MSG_CHANGE_EXTR											"Zmienic ekstruder"
+#define MSG_FIL_LOADED_CHECK									"Czy filament jest wprowadzony?"
+#define MSG_FIL_TUNING											"Obrotem przycisku dostroj pozycje filamentu."
+#define MSG_FIL_ADJUSTING										"Przebiega wyrownanie filamentow. Prosze czekac."
+#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ						"Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."
+#define MSG_CALIBRATE_E											"Kalibruj E"
+#define MSG_E_CAL_KNOB											"Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."
+#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?"

+ 29 - 61
Firmware/ultralcd.cpp

@@ -1355,6 +1355,7 @@ static void _lcd_babystep(int axis, const char *msg)
 
   if (encoderPosition != 0) 
   {
+	if (homing_flag) encoderPosition = 0;
     CRITICAL_SECTION_START
     babystepsTodo[axis] += (int)encoderPosition;
     CRITICAL_SECTION_END
@@ -1549,13 +1550,13 @@ void lcd_wait_for_cool_down() {
 	while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) {
 		lcd_display_message_fullscreen_P(MSG_WAITING_TEMP);
 
-		lcd.setCursor(0, 2);
+		lcd.setCursor(0, 4);
 		lcd.print(LCD_STR_THERMOMETER[0]);
 		lcd.print(ftostr3(degHotend(0)));
 		lcd.print("/0");		
 		lcd.print(LCD_STR_DEGREE);
 
-		lcd.setCursor(0, 3);
+		lcd.setCursor(9, 4);
 		lcd.print(LCD_STR_BEDTEMP[0]);
 		lcd.print(ftostr3(degBed()));
 		lcd.print("/0");		
@@ -2271,6 +2272,10 @@ void lcd_calibrate_extruder() {
 		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;
+		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;
+		unsigned long msg_millis;
 
 		lcd_show_fullscreen_message_and_wait_P(MSG_MARK_FIL);
 		lcd_implementation_clear();
@@ -2281,8 +2286,16 @@ void lcd_calibrate_extruder() {
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);
 		st_synchronize();
 
-		lcd_display_message_fullscreen_P(MSG_E_CAL_KNOB);
+		lcd_display_message_fullscreen_P(msg_e_cal_knob);
+		msg_millis = millis();
 		while (!LCD_CLICKED) {
+			if (multi_screen && millis() - msg_millis > 5000) {
+				if (msg_next_e_cal_knob == NULL)
+					msg_next_e_cal_knob = msg_e_cal_knob;
+					msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_next_e_cal_knob);
+					msg_millis = millis();
+			}
+
 			//manage_inactivity(true);
 			manage_heater();
 			if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) {
@@ -3107,7 +3120,7 @@ static void lcd_main_menu()
     
     
     
-  if ( ( IS_SD_PRINTING || is_usb_printing ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) ) 
+  if ( ( IS_SD_PRINTING || is_usb_printing ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag) 
   {
 	MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);//8
   }
@@ -3636,44 +3649,21 @@ static void lcd_selftest()
 	{
 		_progress = lcd_selftest_screen(7, _progress, 3, true, 5000);
 	}
-
+	lcd_reset_alert_level();
+	enquecommand_P(PSTR("M84"));
 	lcd_implementation_clear();
 	lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL;
 
 	if (_result)
 	{
-		LCD_ALERTMESSAGERPGM(MSG_SELFTEST_OK);
+		LCD_ALERTMESSAGERPGM(MSG_SELFTEST_OK);				
 	}
 	else
 	{
 		LCD_ALERTMESSAGERPGM(MSG_SELFTEST_FAILED);
 	}
 }
-/*static bool lcd_selfcheck_endstops()
-{
-	bool _result = true;
 
-	if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1 || READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1 || READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1)
-	{
-		current_position[0] = (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? current_position[0] = current_position[0] + 10 : current_position[0];
-		current_position[1] = (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? current_position[1] = current_position[1] + 10 : current_position[1];
-		current_position[2] = (READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) ? current_position[2] = current_position[2] + 10 : current_position[2];
-	}
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[0] / 60, active_extruder);
-	delay(500);
-
-	if (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1 || READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1 || READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1)
-	{
-		_result = false;
-		String  _error = String((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) ? "X" : "") +
-			String((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) ? "Y" : "") +
-			String((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1) ? "Z" : "");
-		lcd_selftest_error(3, _error.c_str(), "");
-	}
-	manage_heater();
-	manage_inactivity();
-	return _result;
-}*/
 static bool lcd_selfcheck_axis(int _axis, int _travel)
 {
 	bool _stepdone = false;
@@ -3778,55 +3768,33 @@ static bool lcd_selfcheck_pulleys(int axis)
 	bool endstop_triggered = false;
 	bool result = true;
 	int i;
-	unsigned long timeout_counter;// = 20000 + millis();
+	unsigned long timeout_counter;
 	refresh_cmd_timeout();
 
 
-	if (axis == 0) move = 50; //230;
-		else move = 50; //190
-
+	if (axis == 0) move = 50; //X_AXIS 
+		else move = 50; //Y_AXIS
 
-		
-		/*while (!endstop_triggered) {
-			if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) || (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1)) {
-				endstop_triggered = true;*/
-				current_position_init = current_position[axis];
-				timeout_counter = millis() + 2500; 
-			/*}
-			else {
-				current_position[axis] -= 1;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
-				st_synchronize();
-				if (millis() > timeout_counter) return(false);
-			}
-		}*/
+		current_position_init = current_position[axis];
+				
 		current_position[axis] += 2;
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
 		for (i = 0; i < 5; i++) {
 			refresh_cmd_timeout();
 			current_position[axis] = current_position[axis] + move;
-			digipot_current(axis, 850); //set motor current higher
-			//max_jerk[X_AXIS] = 20;
+			digipot_current(0, 850); //set motor current higher
 			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 200, active_extruder);
-			//max_jerk[X_AXIS] = DEFAULT_XJERK;
-			//digipot_current(axis, tmp_motor_loud[0]);
-			/*if (SilentMode == 1) digipot_current(2, tmp_motor[2]); //set back to normal operation currents
-			else */digipot_current(2, tmp_motor_loud[2]); //set motor current back			
+			if (SilentModeMenu == 1) digipot_current(0, tmp_motor[0]); //set back to normal operation currents
+			else digipot_current(0, tmp_motor_loud[0]); //set motor current back			
 			current_position[axis] = current_position[axis] - move;
 			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
 			st_synchronize();
 			if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1) || (READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1)) {
-				//current_position[axis] += 15;
-				//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
 				lcd_selftest_error(8, (axis == 0) ? "X" : "Y", "");
 				return(false);
 			}
-			if (millis() > timeout_counter) {
-				lcd_selftest_error(8, (axis == 0) ? "X" : "Y", "");
-				return(false);
-			}else timeout_counter = millis() + 2500;
 		}
-		
+		timeout_counter = millis() + 2500;
 		endstop_triggered = false;
 		
 		while (!endstop_triggered) {