From 2e68770e621dd5665dd8b297fa40bd74f5174c83 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 7 Nov 2017 16:49:04 +0100 Subject: [PATCH 1/7] initial version - messages missing (will not compile) --- Firmware/Configuration.h | 4 +- Firmware/Configuration_prusa.h | 2 +- Firmware/Marlin.h | 4 +- Firmware/Marlin_main.cpp | 376 +-- Firmware/cmdqueue.cpp | 5 + Firmware/cmdqueue.h | 1 + Firmware/language_all.cpp | 2627 +++++++++++++++-- Firmware/language_all.h | 863 +++--- Firmware/language_en.h | 23 + Firmware/ultralcd.cpp | 804 ++++- Firmware/ultralcd.h | 10 +- .../ultralcd_implementation_hitachi_HD44780.h | 11 + 12 files changed, 3809 insertions(+), 921 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 30cc5045..26da599a 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -79,6 +79,8 @@ #define EEPROM_XYZ_CAL_SKEW (EEPROM_POWER_COUNT - 4) //float for skew backup +#define EEPROM_WIZARD_ACTIVE (EEPROM_XYZ_CAL_SKEW - 1) + // Currently running firmware, each digit stored as uint16_t. // The flavor differentiates a dev, alpha, beta, release candidate or a release version. #define EEPROM_FIRMWARE_VERSION_END (FW_PRUSA3D_MAGIC_LEN+8) @@ -747,7 +749,7 @@ enum CalibrationStatus CALIBRATION_STATUS_ASSEMBLED = 255, // For the wizard: self test has been performed, now the XYZ calibration is needed. - // CALIBRATION_STATUS_XYZ_CALIBRATION = 250, + CALIBRATION_STATUS_XYZ_CALIBRATION = 250, // For the wizard: factory assembled, needs to run Z calibration. CALIBRATION_STATUS_Z_CALIBRATION = 240, diff --git a/Firmware/Configuration_prusa.h b/Firmware/Configuration_prusa.h index 21b3200c..882e931b 100644 --- a/Firmware/Configuration_prusa.h +++ b/Firmware/Configuration_prusa.h @@ -93,7 +93,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o //#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored //#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored //#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored -#define DEBUG_DISABLE_STARTMSGS //no startup messages +//#define DEBUG_DISABLE_STARTMSGS //no startup messages //#define DEBUG_DISABLE_MINTEMP //mintemp error ignored //#define DEBUG_DISABLE_SWLIMITS //sw limits ignored //#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index f5c59b25..469081dd 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -234,7 +234,6 @@ void cmdqueue_reset(); void prepare_arc_move(char isclockwise); void clamp_to_software_endstops(float target[3]); - void refresh_cmd_timeout(void); #ifdef FAST_PWM_FAN @@ -382,5 +381,8 @@ extern void print_world_coordinates(); extern void print_physical_coordinates(); extern void print_mesh_bed_leveling_table(); +// G-codes +bool gcode_M45(bool onlyZ); +void gcode_M701(); #define UVLO !(PINE & (1<<4)) \ No newline at end of file diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 71a816d8..b5dd2996 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -271,7 +271,7 @@ int extruder_multiply[EXTRUDERS] = {100 #endif }; -int bowden_length[4]; +int bowden_length[4] = {385, 385, 385, 385}; bool is_usb_printing = false; bool homing_flag = false; @@ -960,6 +960,7 @@ void setup() // EEPROM_LANG to number lower than 0x0ff. // 1) Set a high power mode. eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0); + eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard } #ifdef SNMM if (eeprom_read_dword((uint32_t*)EEPROM_BOWDEN_LENGTH) == 0x0ffffffff) { //bowden length used for SNMM @@ -992,29 +993,36 @@ void setup() setup_uvlo_interrupt(); setup_fan_interrupt(); fsensor_setup_interrupt(); - + for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); #ifndef DEBUG_DISABLE_STARTMSGS - - if (calibration_status() == CALIBRATION_STATUS_ASSEMBLED || - calibration_status() == CALIBRATION_STATUS_UNKNOWN) { - // Reset the babystepping values, so the printer will not move the Z axis up when the babystepping is enabled. - eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0); - // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); - } else if (calibration_status() == CALIBRATION_STATUS_LIVE_ADJUST) { - // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); - lcd_update_enable(true); - } else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) { - lcd_show_fullscreen_message_and_wait_P(MSG_PINDA_NOT_CALIBRATED); - lcd_update_enable(true); - } else if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) { - // Show the message. - lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { + lcd_wizard(0); } + else if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 0) { //dont show calibration status messages if wizard is currently active + if (calibration_status() == CALIBRATION_STATUS_ASSEMBLED || + calibration_status() == CALIBRATION_STATUS_UNKNOWN) { + // Reset the babystepping values, so the printer will not move the Z axis up when the babystepping is enabled. + eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0); + // Show the message. + lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); + } + else if (calibration_status() == CALIBRATION_STATUS_LIVE_ADJUST) { + // Show the message. + lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); + lcd_update_enable(true); + } + else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) { + lcd_show_fullscreen_message_and_wait_P(MSG_PINDA_NOT_CALIBRATED); + lcd_update_enable(true); + } + else if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) { + // Show the message. + lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); + } + } + #endif //DEBUG_DISABLE_STARTMSGS - for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); lcd_update_enable(true); lcd_implementation_clear(); lcd_update(2); @@ -1416,7 +1424,6 @@ static float probe_pt(float x, float y, float z_before) { #endif // #ifdef ENABLE_AUTO_BED_LEVELING - #ifdef LIN_ADVANCE /** * M900: Set and/or Get advance K factor and WH/D ratio @@ -1734,6 +1741,175 @@ void ramming() { } } */ + +bool gcode_M45(bool onlyZ) { + bool final_result = false; + // Only Z calibration? + + + 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. + mbl.reset(); + // Reset world2machine_rotation_and_skew and world2machine_shift, therefore + // the planner will not perform any adjustments in the XY plane. + // Wait for the motors to stop and update the current position with the absolute values. + world2machine_revert_to_uncorrected(); + // Reset the baby step value applied without moving the axes. + babystep_reset(); + // Mark all axes as in a need for homing. + memset(axis_known_position, 0, sizeof(axis_known_position)); + + // Home in the XY plane. + //set_destination_to_current(); + setup_for_endstop_move(); + lcd_display_message_fullscreen_P(MSG_AUTO_HOME); + home_xy(); + + // Let the user move the Z axes up to the end stoppers. +#ifdef TMC2130 + if (calibrate_z_auto()) { +#else //TMC2130 + if (lcd_calibrate_z_end_stop_manual(onlyZ)) { +#endif //TMC2130 + refresh_cmd_timeout(); + if (((degHotend(0) > MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) && (!onlyZ)) { + lcd_wait_for_cool_down(); + lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); + lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1); + lcd_implementation_print_at(0, 2, 1); + lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); + } + + // Move the print head close to the bed. + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder); + st_synchronize(); + + + //#ifdef TMC2130 + // tmc2130_home_enter(X_AXIS_MASK | Y_AXIS_MASK); + //#endif + + int8_t verbosity_level = 0; + if (code_seen('V')) { + // Just 'V' without a number counts as V1. + char c = strchr_pointer[1]; + verbosity_level = (c == ' ' || c == '\t' || c == 0) ? 1 : code_value_short(); + } + + if (onlyZ) { + clean_up_after_endstop_move(); + // Z only calibration. + // Load the machine correction matrix + world2machine_initialize(); + // and correct the current_position to match the transformed coordinate system. + world2machine_update_current(); + //FIXME + bool result = sample_mesh_and_store_reference(); + if (result) { + if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) + // Shipped, the nozzle height has been set already. The user can start printing now. + calibration_status_store(CALIBRATION_STATUS_CALIBRATED); + // babystep_apply(); + } + } + else { + // 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); + // Complete XYZ calibration. + uint8_t point_too_far_mask = 0; + BedSkewOffsetDetectionResultType result = find_bed_offset_and_skew(verbosity_level, point_too_far_mask); + clean_up_after_endstop_move(); + // Print head up. + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder); + st_synchronize(); + if (result >= 0) { + point_too_far_mask = 0; + // Second half: The fine adjustment. + // Let the planner use the uncorrected coordinates. + mbl.reset(); + world2machine_reset(); + // Home in the XY plane. + setup_for_endstop_move(); + home_xy(); + result = improve_bed_offset_and_skew(1, verbosity_level, point_too_far_mask); + clean_up_after_endstop_move(); + // Print head up. + current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder); + st_synchronize(); + // if (result >= 0) babystep_apply(); + } + lcd_bed_calibration_show_result(result, point_too_far_mask); + if (result >= 0) { + // Calibration valid, the machine should be able to print. Advise the user to run the V2Calibration.gcode. + calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); + final_result = true; + } + } +#ifdef TMC2130 + tmc2130_home_exit(); +#endif + } + else { + // Timeouted. + } + lcd_update_enable(true); + return final_result; + } + +void gcode_M701() { +#ifdef SNMM + extr_adj(snmm_extruder);//loads current extruder +#else + enable_z(); + custom_message = true; + custom_message_type = 2; + + lcd_setstatuspgm(MSG_LOADING_FILAMENT); + current_position[E_AXIS] += 70; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence + + current_position[E_AXIS] += 25; + 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(); + + if (!farm_mode && loading_flag) { + bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); + + while (!clean) { + lcd_update_enable(true); + lcd_update(2); + current_position[E_AXIS] += 25; + 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, false, true); + + } + + } + lcd_update_enable(true); + lcd_update(2); + lcd_setstatuspgm(WELCOME_MSG); + disable_z(); + loading_flag = false; + custom_message = false; + custom_message_type = 0; +#endif +} + void process_commands() { #ifdef FILAMENT_RUNOUT_SUPPORT @@ -3586,130 +3762,10 @@ void process_commands() case 45: // M45: Prusa3D: bed skew and offset with manual Z up { - // 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. - mbl.reset(); - // Reset world2machine_rotation_and_skew and world2machine_shift, therefore - // the planner will not perform any adjustments in the XY plane. - // Wait for the motors to stop and update the current position with the absolute values. - world2machine_revert_to_uncorrected(); - // Reset the baby step value applied without moving the axes. - babystep_reset(); - // Mark all axes as in a need for homing. - memset(axis_known_position, 0, sizeof(axis_known_position)); - - // Home in the XY plane. - //set_destination_to_current(); - setup_for_endstop_move(); - lcd_display_message_fullscreen_P(MSG_AUTO_HOME); - home_xy(); - - // Let the user move the Z axes up to the end stoppers. -#ifdef TMC2130 - if (calibrate_z_auto()) { -#else //TMC2130 - if (lcd_calibrate_z_end_stop_manual( onlyZ )) { -#endif //TMC2130 - refresh_cmd_timeout(); - if (((degHotend(0) > MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) && (!onlyZ)) { - lcd_wait_for_cool_down(); - lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); - lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1); - lcd_implementation_print_at(0, 2, 1); - lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); - } - - // Move the print head close to the bed. - current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS],current_position[Z_AXIS] , current_position[E_AXIS], homing_feedrate[Z_AXIS]/40, active_extruder); - st_synchronize(); - - -//#ifdef TMC2130 -// tmc2130_home_enter(X_AXIS_MASK | Y_AXIS_MASK); -//#endif - - int8_t verbosity_level = 0; - if (code_seen('V')) { - // Just 'V' without a number counts as V1. - char c = strchr_pointer[1]; - verbosity_level = (c == ' ' || c == '\t' || c == 0) ? 1 : code_value_short(); - } - - if (onlyZ) { - clean_up_after_endstop_move(); - // Z only calibration. - // Load the machine correction matrix - world2machine_initialize(); - // and correct the current_position to match the transformed coordinate system. - world2machine_update_current(); - //FIXME - bool result = sample_mesh_and_store_reference(); - if (result) { - if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) - // Shipped, the nozzle height has been set already. The user can start printing now. - calibration_status_store(CALIBRATION_STATUS_CALIBRATED); - // babystep_apply(); - } - } else { - // 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); - // Complete XYZ calibration. - uint8_t point_too_far_mask = 0; - BedSkewOffsetDetectionResultType result = find_bed_offset_and_skew(verbosity_level, point_too_far_mask); - clean_up_after_endstop_move(); - // Print head up. - current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS],current_position[Z_AXIS] , current_position[E_AXIS], homing_feedrate[Z_AXIS]/40, active_extruder); - st_synchronize(); - if (result >= 0) { - point_too_far_mask = 0; - // Second half: The fine adjustment. - // Let the planner use the uncorrected coordinates. - mbl.reset(); - world2machine_reset(); - // Home in the XY plane. - setup_for_endstop_move(); - home_xy(); - result = improve_bed_offset_and_skew(1, verbosity_level, point_too_far_mask); - clean_up_after_endstop_move(); - // Print head up. - current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS],current_position[Z_AXIS] , current_position[E_AXIS], homing_feedrate[Z_AXIS]/40, active_extruder); - st_synchronize(); - // if (result >= 0) babystep_apply(); - } - lcd_bed_calibration_show_result(result, point_too_far_mask); - if (result >= 0) { - // Calibration valid, the machine should be able to print. Advise the user to run the V2Calibration.gcode. - calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); - lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); - } - } -#ifdef TMC2130 - tmc2130_home_exit(); -#endif - } else { - // Timeouted. - } - - - lcd_update_enable(true); - break; + bool only_Z = code_seen('Z'); + gcode_M45(only_Z); } + break; /* case 46: @@ -5539,37 +5595,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp break; case 701: //M701: load filament { - enable_z(); - custom_message = true; - custom_message_type = 2; - - lcd_setstatuspgm(MSG_LOADING_FILAMENT); - current_position[E_AXIS] += 70; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence - - current_position[E_AXIS] += 25; - 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(); - - if (!farm_mode && loading_flag) { - bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); - - while (!clean) { - lcd_update_enable(true); - lcd_update(2); - current_position[E_AXIS] += 25; - 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, false, true); - } - } - lcd_update_enable(true); - lcd_update(2); - lcd_setstatuspgm(WELCOME_MSG); - disable_z(); - loading_flag = false; - custom_message = false; - custom_message_type = 0; + gcode_M701(); } break; case 702: diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index ab304295..2819d610 100644 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -310,6 +310,11 @@ void enquecommand(const char *cmd, bool from_progmem) } } +bool cmd_buffer_empty() +{ + return (buflen == 0); +} + void enquecommand_front(const char *cmd, bool from_progmem) { int len = from_progmem ? strlen_P(cmd) : strlen(cmd); diff --git a/Firmware/cmdqueue.h b/Firmware/cmdqueue.h index 5ee58a59..2c6f93b7 100644 --- a/Firmware/cmdqueue.h +++ b/Firmware/cmdqueue.h @@ -59,6 +59,7 @@ extern bool cmdqueue_could_enqueue_back(int len_asked, bool atomic_update = fals extern void cmdqueue_dump_to_serial_single_line(int nr, const char *p); extern void cmdqueue_dump_to_serial(); #endif /* CMDBUFFER_DEBUG */ +extern bool cmd_buffer_empty(); extern void enquecommand(const char *cmd, bool from_progmem); extern void enquecommand_front(const char *cmd, bool from_progmem); extern void repeatcommand_front(); diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 7b88ea68..a5195b53 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -6,1598 +6,3575 @@ extern unsigned char lang_selected; const char MSG_ACTIVE_EXTRUDER_EN[] PROGMEM = "Active Extruder: "; -const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_ACTIVE_EXTRUDER_EN }; const char MSG_ADJUSTZ_EN[] PROGMEM = "Auto adjust Z?"; +const char MSG_ADJUSTZ_CZ[] PROGMEM = "Auto doladit Z ?"; +const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; +const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; +const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; +const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ADJUSTZ_EN + MSG_ADJUSTZ_EN, + MSG_ADJUSTZ_CZ, + MSG_ADJUSTZ_IT, + MSG_ADJUSTZ_ES, + MSG_ADJUSTZ_PL, + MSG_ADJUSTZ_DE }; const char MSG_ALL_EN[] PROGMEM = "All"; +const char MSG_ALL_CZ[] PROGMEM = "Vse"; +const char MSG_ALL_IT[] PROGMEM = "Tutti"; +const char MSG_ALL_ES[] PROGMEM = "Todos"; +const char MSG_ALL_PL[] PROGMEM = "Wszystko"; +const char MSG_ALL_DE[] PROGMEM = "Alle"; const char * const MSG_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ALL_EN + MSG_ALL_EN, + MSG_ALL_CZ, + MSG_ALL_IT, + MSG_ALL_ES, + MSG_ALL_PL, + MSG_ALL_DE }; const char MSG_AMAX_EN[] PROGMEM = "Amax "; -const char * const MSG_AMAX_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_AMAX_LANG_TABLE[1] PROGMEM = { MSG_AMAX_EN }; const char MSG_AUTHOR_EN[] PROGMEM = " | Author: "; -const char * const MSG_AUTHOR_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_AUTHOR_LANG_TABLE[1] PROGMEM = { MSG_AUTHOR_EN }; const char MSG_AUTO_HOME_EN[] PROGMEM = "Auto home"; +const char MSG_AUTO_HOME_IT[] PROGMEM = "Trova origine"; +const char MSG_AUTO_HOME_ES[] PROGMEM = "Llevar al origen"; +const char MSG_AUTO_HOME_DE[] PROGMEM = "Startposition"; const char * const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_AUTO_HOME_EN + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_IT, + MSG_AUTO_HOME_ES, + MSG_AUTO_HOME_EN, + MSG_AUTO_HOME_DE }; const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; -const char * const MSG_A_RETRACT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_A_RETRACT_LANG_TABLE[1] PROGMEM = { MSG_A_RETRACT_EN }; const char MSG_BABYSTEPPING_X_EN[] PROGMEM = "Babystepping X"; -const char * const MSG_BABYSTEPPING_X_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BABYSTEPPING_X_LANG_TABLE[1] PROGMEM = { MSG_BABYSTEPPING_X_EN }; const char MSG_BABYSTEPPING_Y_EN[] PROGMEM = "Babystepping Y"; -const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BABYSTEPPING_Y_LANG_TABLE[1] PROGMEM = { MSG_BABYSTEPPING_Y_EN }; const char MSG_BABYSTEPPING_Z_EN[] PROGMEM = "Adjusting Z"; -const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BABYSTEPPING_Z_LANG_TABLE[1] PROGMEM = { MSG_BABYSTEPPING_Z_EN }; const char MSG_BABYSTEP_X_EN[] PROGMEM = "Babystep X"; -const char * const MSG_BABYSTEP_X_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BABYSTEP_X_LANG_TABLE[1] PROGMEM = { MSG_BABYSTEP_X_EN }; const char MSG_BABYSTEP_Y_EN[] PROGMEM = "Babystep Y"; -const char * const MSG_BABYSTEP_Y_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BABYSTEP_Y_LANG_TABLE[1] PROGMEM = { MSG_BABYSTEP_Y_EN }; const char MSG_BABYSTEP_Z_EN[] PROGMEM = "Live adjust Z"; +const char MSG_BABYSTEP_Z_CZ[] PROGMEM = "Doladeni osy Z"; +const char MSG_BABYSTEP_Z_IT[] PROGMEM = "Compensazione Z"; +const char MSG_BABYSTEP_Z_ES[] PROGMEM = "Micropaso Eje Z"; +const char MSG_BABYSTEP_Z_PL[] PROGMEM = "Dostrojenie osy Z"; +const char MSG_BABYSTEP_Z_DE[] PROGMEM = "Z einstellen"; const char * const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_EN + MSG_BABYSTEP_Z_EN, + MSG_BABYSTEP_Z_CZ, + MSG_BABYSTEP_Z_IT, + MSG_BABYSTEP_Z_ES, + MSG_BABYSTEP_Z_PL, + MSG_BABYSTEP_Z_DE }; const char MSG_BABYSTEP_Z_NOT_SET_EN[] PROGMEM = "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_CZ[] PROGMEM = "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."; +const char MSG_BABYSTEP_Z_NOT_SET_IT[] PROGMEM = "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_ES[] PROGMEM = "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."; +const char MSG_BABYSTEP_Z_NOT_SET_PL[] PROGMEM = "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."; +const char MSG_BABYSTEP_Z_NOT_SET_DE[] PROGMEM = "Der Abstand zwischen der Spitze der Duese und der Bed ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration."; const char * const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BABYSTEP_Z_NOT_SET_EN + MSG_BABYSTEP_Z_NOT_SET_EN, + MSG_BABYSTEP_Z_NOT_SET_CZ, + MSG_BABYSTEP_Z_NOT_SET_IT, + MSG_BABYSTEP_Z_NOT_SET_ES, + MSG_BABYSTEP_Z_NOT_SET_PL, + MSG_BABYSTEP_Z_NOT_SET_DE }; const char MSG_BED_EN[] PROGMEM = "Bed"; +const char MSG_BED_IT[] PROGMEM = "Letto"; +const char MSG_BED_ES[] PROGMEM = "Base"; +const char MSG_BED_PL[] PROGMEM = "Stolik"; const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_EN, + MSG_BED_EN, + MSG_BED_IT, + MSG_BED_ES, + MSG_BED_PL, MSG_BED_EN }; const char MSG_BED_CORRECTION_FRONT_EN[] PROGMEM = "Front side[um]"; +const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; +const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Fronte [um]"; +const char MSG_BED_CORRECTION_FRONT_ES[] PROGMEM = "Adelante [um]"; +const char MSG_BED_CORRECTION_FRONT_PL[] PROGMEM = "Do przodu [um]"; +const char MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_FRONT_EN + MSG_BED_CORRECTION_FRONT_EN, + MSG_BED_CORRECTION_FRONT_CZ, + MSG_BED_CORRECTION_FRONT_IT, + MSG_BED_CORRECTION_FRONT_ES, + MSG_BED_CORRECTION_FRONT_PL, + MSG_BED_CORRECTION_FRONT_DE }; const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]"; +const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]"; +const char MSG_BED_CORRECTION_LEFT_IT[] PROGMEM = "Sinistra [um]"; +const char MSG_BED_CORRECTION_LEFT_ES[] PROGMEM = "Izquierda [um]"; +const char MSG_BED_CORRECTION_LEFT_PL[] PROGMEM = "W lewo [um]"; +const char MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_LEFT_EN + MSG_BED_CORRECTION_LEFT_EN, + MSG_BED_CORRECTION_LEFT_CZ, + MSG_BED_CORRECTION_LEFT_IT, + MSG_BED_CORRECTION_LEFT_ES, + MSG_BED_CORRECTION_LEFT_PL, + MSG_BED_CORRECTION_LEFT_DE }; const char MSG_BED_CORRECTION_MENU_EN[] PROGMEM = "Bed level correct"; +const char MSG_BED_CORRECTION_MENU_CZ[] PROGMEM = "Korekce podlozky"; +const char MSG_BED_CORRECTION_MENU_IT[] PROGMEM = "Correz. liv.letto"; +const char MSG_BED_CORRECTION_MENU_ES[] PROGMEM = "Corr. de la cama"; +const char MSG_BED_CORRECTION_MENU_PL[] PROGMEM = "Korekta podkladki"; +const char MSG_BED_CORRECTION_MENU_DE[] PROGMEM = "Bed level Korrekt"; const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_MENU_EN + MSG_BED_CORRECTION_MENU_EN, + MSG_BED_CORRECTION_MENU_CZ, + MSG_BED_CORRECTION_MENU_IT, + MSG_BED_CORRECTION_MENU_ES, + MSG_BED_CORRECTION_MENU_PL, + MSG_BED_CORRECTION_MENU_DE }; const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]"; +const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]"; +const char MSG_BED_CORRECTION_REAR_IT[] PROGMEM = "Retro [um]"; +const char MSG_BED_CORRECTION_REAR_ES[] PROGMEM = "Atras [um]"; +const char MSG_BED_CORRECTION_REAR_PL[] PROGMEM = "Do tylu [um]"; +const char MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_REAR_EN + MSG_BED_CORRECTION_REAR_EN, + MSG_BED_CORRECTION_REAR_CZ, + MSG_BED_CORRECTION_REAR_IT, + MSG_BED_CORRECTION_REAR_ES, + MSG_BED_CORRECTION_REAR_PL, + MSG_BED_CORRECTION_REAR_DE }; const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; +const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Ruecksetzen"; const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RESET_EN + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_DE }; const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side[um]"; +const char MSG_BED_CORRECTION_RIGHT_CZ[] PROGMEM = "Vpravo [um]"; +const char MSG_BED_CORRECTION_RIGHT_IT[] PROGMEM = "Destra [um]"; +const char MSG_BED_CORRECTION_RIGHT_ES[] PROGMEM = "Derecha [um]"; +const char MSG_BED_CORRECTION_RIGHT_PL[] PROGMEM = "W prawo [um]"; +const char MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_CORRECTION_RIGHT_EN + MSG_BED_CORRECTION_RIGHT_EN, + MSG_BED_CORRECTION_RIGHT_CZ, + MSG_BED_CORRECTION_RIGHT_IT, + MSG_BED_CORRECTION_RIGHT_ES, + MSG_BED_CORRECTION_RIGHT_PL, + MSG_BED_CORRECTION_RIGHT_DE }; const char MSG_BED_DONE_EN[] PROGMEM = "Bed done"; +const char MSG_BED_DONE_CZ[] PROGMEM = "Bed OK."; +const char MSG_BED_DONE_IT[] PROGMEM = "Piatto fatto."; +const char MSG_BED_DONE_ES[] PROGMEM = "Base preparada"; +const char MSG_BED_DONE_PL[] PROGMEM = "Stolik OK."; +const char MSG_BED_DONE_DE[] PROGMEM = "Bed OK"; const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_DONE_EN + MSG_BED_DONE_EN, + MSG_BED_DONE_CZ, + MSG_BED_DONE_IT, + MSG_BED_DONE_ES, + MSG_BED_DONE_PL, + MSG_BED_DONE_DE }; 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 = "Riscald. letto"; +const char MSG_BED_HEATING_ES[] PROGMEM = "Calentando Base"; +const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; +const char MSG_BED_HEATING_DE[] PROGMEM = "Bed aufwaermen"; const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_HEATING_EN + MSG_BED_HEATING_EN, + MSG_BED_HEATING_CZ, + MSG_BED_HEATING_IT, + MSG_BED_HEATING_ES, + MSG_BED_HEATING_PL, + MSG_BED_HEATING_DE }; const char MSG_BED_LEVELING_FAILED_POINT_HIGH_EN[] PROGMEM = "Bed leveling failed. Sensor triggered too high. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_IT[] PROGMEM = "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_ES[] PROGMEM = "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_PL[] PROGMEM = "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_HIGH_DE[] PROGMEM = "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset."; const char * const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_HIGH_EN + MSG_BED_LEVELING_FAILED_POINT_HIGH_EN, + MSG_BED_LEVELING_FAILED_POINT_HIGH_CZ, + MSG_BED_LEVELING_FAILED_POINT_HIGH_IT, + MSG_BED_LEVELING_FAILED_POINT_HIGH_ES, + MSG_BED_LEVELING_FAILED_POINT_HIGH_PL, + MSG_BED_LEVELING_FAILED_POINT_HIGH_DE }; const char MSG_BED_LEVELING_FAILED_POINT_LOW_EN[] PROGMEM = "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_IT[] PROGMEM = "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_ES[] PROGMEM = "Nivelacion fallada. Sensor no funciona. Escombros en Boqui.? Esperando reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_PL[] PROGMEM = "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_POINT_LOW_DE[] PROGMEM = "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset"; const char * const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_POINT_LOW_EN + MSG_BED_LEVELING_FAILED_POINT_LOW_EN, + MSG_BED_LEVELING_FAILED_POINT_LOW_CZ, + MSG_BED_LEVELING_FAILED_POINT_LOW_IT, + MSG_BED_LEVELING_FAILED_POINT_LOW_ES, + MSG_BED_LEVELING_FAILED_POINT_LOW_PL, + MSG_BED_LEVELING_FAILED_POINT_LOW_DE }; const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN[] PROGMEM = "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ[] PROGMEM = "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT[] PROGMEM = "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES[] PROGMEM = "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL[] PROGMEM = "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."; +const char MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE[] PROGMEM = "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset."; const char * const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_EN, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_CZ, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_IT, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_ES, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_PL, + MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration failed. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration failed. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration failed. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN[] PROGMEM = "XYZ calibration failed. Please consult the manual."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ[] PROGMEM = "Kalibrace XYZ selhala. Nahlednete do manualu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT[] PROGMEM = "Calibrazione XYZ fallita. Si prega di consultare il manuale."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES[] PROGMEM = "Calibracion XYZ fallada. Consultar el manual por favor."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL[] PROGMEM = "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."; +const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_EN, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_IT, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_ES, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_PL, + MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN[] PROGMEM = "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL, + MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN[] PROGMEM = "XYZ calibration failed. Bed calibration point was not found."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ[] PROGMEM = "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT[] PROGMEM = "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES[] PROGMEM = "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL[] PROGMEM = "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."; +const char MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE[] PROGMEM = "XYZ-Kalibrierung fehlgeschlagen. Bed-Kalibrierpunkt nicht gefunden."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_EN, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_IT, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_ES, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_PL, + MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_EN[] PROGMEM = "XYZ calibration all right. Skew will be corrected automatically."; +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 MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE[] PROGMEM = "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert."; 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_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_EN[] PROGMEM = "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"; +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 MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE[] PROGMEM = "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief."; 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_EN, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_IT, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_ES, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_PL, + MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN[] PROGMEM = "XYZ calibration compromised. Front calibration points not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Left front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE }; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN[] PROGMEM = "XYZ calibration compromised. Right front calibration point not reachable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL, + MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE }; const char MSG_BEGIN_FILE_LIST_EN[] PROGMEM = "Begin file list"; -const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BEGIN_FILE_LIST_LANG_TABLE[1] PROGMEM = { MSG_BEGIN_FILE_LIST_EN }; const char MSG_BROWNOUT_RESET_EN[] PROGMEM = " Brown out Reset"; -const char * const MSG_BROWNOUT_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_BROWNOUT_RESET_LANG_TABLE[1] PROGMEM = { MSG_BROWNOUT_RESET_EN }; const char MSG_CALIBRATE_BED_EN[] PROGMEM = "Calibrate XYZ"; +const char MSG_CALIBRATE_BED_CZ[] PROGMEM = "Kalibrace XYZ"; +const char MSG_CALIBRATE_BED_IT[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_ES[] PROGMEM = "Calibra XYZ"; +const char MSG_CALIBRATE_BED_PL[] PROGMEM = "Kalibracja XYZ"; +const char MSG_CALIBRATE_BED_DE[] PROGMEM = "Kalibrierung XYZ"; const char * const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_EN + MSG_CALIBRATE_BED_EN, + MSG_CALIBRATE_BED_CZ, + MSG_CALIBRATE_BED_IT, + MSG_CALIBRATE_BED_ES, + MSG_CALIBRATE_BED_PL, + MSG_CALIBRATE_BED_DE }; const char MSG_CALIBRATE_BED_RESET_EN[] PROGMEM = "Reset XYZ calibr."; +const char MSG_CALIBRATE_BED_RESET_CZ[] PROGMEM = "Reset XYZ kalibr."; +const char MSG_CALIBRATE_BED_RESET_PL[] PROGMEM = "Reset kalibr. XYZ"; +const char MSG_CALIBRATE_BED_RESET_DE[] PROGMEM = "Reset XYZ Kalibr."; const char * const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_BED_RESET_EN + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_CZ, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_EN, + MSG_CALIBRATE_BED_RESET_PL, + MSG_CALIBRATE_BED_RESET_DE }; const char MSG_CALIBRATE_E_EN[] PROGMEM = "Calibrate E"; +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 MSG_CALIBRATE_E_DE[] PROGMEM = "Kalibriere E"; const char * const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_E_EN + MSG_CALIBRATE_E_EN, + MSG_CALIBRATE_E_CZ, + MSG_CALIBRATE_E_IT, + MSG_CALIBRATE_E_ES, + MSG_CALIBRATE_E_PL, + MSG_CALIBRATE_E_DE }; const char MSG_CALIBRATE_PINDA_EN[] PROGMEM = "Calibrate"; +const char MSG_CALIBRATE_PINDA_CZ[] PROGMEM = "Zkalibrovat"; +const char MSG_CALIBRATE_PINDA_IT[] PROGMEM = "Calibrare"; +const char MSG_CALIBRATE_PINDA_ES[] PROGMEM = "Calibrar"; +const char MSG_CALIBRATE_PINDA_PL[] PROGMEM = "Skalibrowac"; +const char MSG_CALIBRATE_PINDA_DE[] PROGMEM = "Kalibrieren"; const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_PINDA_EN -}; - -const char MSG_CALIBRATE_Z_AUTO_EN[] PROGMEM = "Calibrating Z..."; -const char * const MSG_CALIBRATE_Z_AUTO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATE_Z_AUTO_EN + MSG_CALIBRATE_PINDA_EN, + MSG_CALIBRATE_PINDA_CZ, + MSG_CALIBRATE_PINDA_IT, + MSG_CALIBRATE_PINDA_ES, + MSG_CALIBRATE_PINDA_PL, + MSG_CALIBRATE_PINDA_DE }; const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; +const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; +const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; +const char MSG_CALIBRATION_PINDA_MENU_ES[] PROGMEM = "Calibracion temp."; +const char MSG_CALIBRATION_PINDA_MENU_PL[] PROGMEM = "Cieplna kalibr."; +const char MSG_CALIBRATION_PINDA_MENU_DE[] PROGMEM = "Temp. kalibrieren"; const char * const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CALIBRATION_PINDA_MENU_EN + MSG_CALIBRATION_PINDA_MENU_EN, + MSG_CALIBRATION_PINDA_MENU_CZ, + MSG_CALIBRATION_PINDA_MENU_IT, + MSG_CALIBRATION_PINDA_MENU_ES, + MSG_CALIBRATION_PINDA_MENU_PL, + MSG_CALIBRATION_PINDA_MENU_DE }; const char MSG_CARD_MENU_EN[] PROGMEM = "Print from SD"; +const char MSG_CARD_MENU_CZ[] PROGMEM = "Tisk z SD"; +const char MSG_CARD_MENU_IT[] PROGMEM = "Stampa da SD"; +const char MSG_CARD_MENU_ES[] PROGMEM = "Menu tarjeta SD"; +const char MSG_CARD_MENU_PL[] PROGMEM = "Druk z SD"; +const char MSG_CARD_MENU_DE[] PROGMEM = "Drucken von SD"; const char * const MSG_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CARD_MENU_EN + MSG_CARD_MENU_EN, + MSG_CARD_MENU_CZ, + MSG_CARD_MENU_IT, + MSG_CARD_MENU_ES, + MSG_CARD_MENU_PL, + MSG_CARD_MENU_DE }; const char MSG_CHANGE_EXTR_EN[] PROGMEM = "Change extruder"; +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 MSG_CHANGE_EXTR_DE[] PROGMEM = "Wechsel extruder"; const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_EXTR_EN + MSG_CHANGE_EXTR_EN, + MSG_CHANGE_EXTR_CZ, + MSG_CHANGE_EXTR_IT, + MSG_CHANGE_EXTR_ES, + MSG_CHANGE_EXTR_PL, + MSG_CHANGE_EXTR_DE }; 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 = "Cambio riuscito!"; +const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambio correcto"; +const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; +const char MSG_CHANGE_SUCCESS_DE[] PROGMEM = "Wechsel erfolgr.!"; const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGE_SUCCESS_EN + MSG_CHANGE_SUCCESS_EN, + MSG_CHANGE_SUCCESS_CZ, + MSG_CHANGE_SUCCESS_IT, + MSG_CHANGE_SUCCESS_ES, + MSG_CHANGE_SUCCESS_PL, + MSG_CHANGE_SUCCESS_DE }; 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 = "Cambiando filam."; +const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; +const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; +const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHANGING_FILAMENT_EN + MSG_CHANGING_FILAMENT_EN, + MSG_CHANGING_FILAMENT_CZ, + MSG_CHANGING_FILAMENT_IT, + MSG_CHANGING_FILAMENT_ES, + MSG_CHANGING_FILAMENT_PL, + MSG_CHANGING_FILAMENT_DE }; const char MSG_CHOOSE_EXTRUDER_EN[] PROGMEM = "Choose extruder:"; +const char MSG_CHOOSE_EXTRUDER_CZ[] PROGMEM = "Vyberte extruder:"; +const char MSG_CHOOSE_EXTRUDER_IT[] PROGMEM = "Seleziona estrusore:"; +const char MSG_CHOOSE_EXTRUDER_ES[] PROGMEM = "Elegir extrusor:"; +const char MSG_CHOOSE_EXTRUDER_PL[] PROGMEM = "Wybierz ekstruder"; +const char MSG_CHOOSE_EXTRUDER_DE[] PROGMEM = "Waehlen Sie Extruder"; const char * const MSG_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CHOOSE_EXTRUDER_EN + MSG_CHOOSE_EXTRUDER_EN, + MSG_CHOOSE_EXTRUDER_CZ, + MSG_CHOOSE_EXTRUDER_IT, + MSG_CHOOSE_EXTRUDER_ES, + MSG_CHOOSE_EXTRUDER_PL, + MSG_CHOOSE_EXTRUDER_DE }; const char MSG_CLEAN_NOZZLE_E_EN[] PROGMEM = "E calibration finished. Please clean the nozzle. Click when done."; +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 MSG_CLEAN_NOZZLE_E_DE[] PROGMEM = "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."; const char * const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CLEAN_NOZZLE_E_EN + 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, + MSG_CLEAN_NOZZLE_E_DE }; const char MSG_CNG_SDCARD_EN[] PROGMEM = "Change SD card"; -const char * const MSG_CNG_SDCARD_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_CNG_SDCARD_LANG_TABLE[1] PROGMEM = { MSG_CNG_SDCARD_EN }; const char MSG_CONFIGURATION_VER_EN[] PROGMEM = " Last Updated: "; -const char * const MSG_CONFIGURATION_VER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_CONFIGURATION_VER_LANG_TABLE[1] PROGMEM = { MSG_CONFIGURATION_VER_EN }; const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN[] PROGMEM = "Are left and right Z~carriages all up?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ[] PROGMEM = "Dojely oba Z voziky k~hornimu dorazu?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT[] PROGMEM = "I carrelli Z sin/des sono altezza max?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES[] PROGMEM = "Carros Z izq./der. estan arriba maximo?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL[] PROGMEM = "Oba wozki dojechaly do gornej ramy?"; +const char MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE[] PROGMEM = "Ist der Schlitten ganz oben?"; const char * const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_EN, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_CZ, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_IT, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_ES, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_PL, + MSG_CONFIRM_CARRIAGE_AT_THE_TOP_DE }; const char MSG_CONFIRM_NOZZLE_CLEAN_EN[] PROGMEM = "Please clean the nozzle for calibration. Click when done."; +const char MSG_CONFIRM_NOZZLE_CLEAN_CZ[] PROGMEM = "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_IT[] PROGMEM = "Pulire l'ugello per la calibrazione, poi fare click."; +const char MSG_CONFIRM_NOZZLE_CLEAN_ES[] PROGMEM = "Limpiar boquilla para calibracion. Click cuando acabes."; +const char MSG_CONFIRM_NOZZLE_CLEAN_PL[] PROGMEM = "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."; +const char MSG_CONFIRM_NOZZLE_CLEAN_DE[] PROGMEM = "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."; const char * const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CONFIRM_NOZZLE_CLEAN_EN + MSG_CONFIRM_NOZZLE_CLEAN_EN, + MSG_CONFIRM_NOZZLE_CLEAN_CZ, + MSG_CONFIRM_NOZZLE_CLEAN_IT, + MSG_CONFIRM_NOZZLE_CLEAN_ES, + MSG_CONFIRM_NOZZLE_CLEAN_PL, + MSG_CONFIRM_NOZZLE_CLEAN_DE }; 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 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 MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig."; 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_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, + MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE }; const char MSG_CONTROL_EN[] PROGMEM = "Control"; -const char * const MSG_CONTROL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_CONTROL_LANG_TABLE[1] PROGMEM = { MSG_CONTROL_EN }; const char MSG_COOLDOWN_EN[] PROGMEM = "Cooldown"; +const char MSG_COOLDOWN_CZ[] PROGMEM = "Zchladit"; +const char MSG_COOLDOWN_IT[] PROGMEM = "Raffredda"; +const char MSG_COOLDOWN_ES[] PROGMEM = "Enfriar"; +const char MSG_COOLDOWN_PL[] PROGMEM = "Wychlodzic"; +const char MSG_COOLDOWN_DE[] PROGMEM = "Abkuehlen"; const char * const MSG_COOLDOWN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_COOLDOWN_EN + MSG_COOLDOWN_EN, + MSG_COOLDOWN_CZ, + MSG_COOLDOWN_IT, + MSG_COOLDOWN_ES, + MSG_COOLDOWN_PL, + MSG_COOLDOWN_DE }; const char MSG_CORRECTLY_EN[] PROGMEM = "Changed correctly?"; +const char MSG_CORRECTLY_CZ[] PROGMEM = "Vymena ok?"; +const char MSG_CORRECTLY_IT[] PROGMEM = "Cambiato corr.?"; +const char MSG_CORRECTLY_ES[] PROGMEM = "Cambiado correct.?"; +const char MSG_CORRECTLY_PL[] PROGMEM = "Wymiana ok?"; +const char MSG_CORRECTLY_DE[] PROGMEM = "Wechsel ok?"; const char * const MSG_CORRECTLY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CORRECTLY_EN + MSG_CORRECTLY_EN, + MSG_CORRECTLY_CZ, + MSG_CORRECTLY_IT, + MSG_CORRECTLY_ES, + MSG_CORRECTLY_PL, + MSG_CORRECTLY_DE }; const char MSG_COUNT_X_EN[] PROGMEM = " Count X: "; -const char * const MSG_COUNT_X_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { MSG_COUNT_X_EN }; -const char MSG_CRASHDETECT_OFF_EN[] PROGMEM = "Crash det. [off]"; -const char * const MSG_CRASHDETECT_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CRASHDETECT_OFF_EN -}; - -const char MSG_CRASHDETECT_ON_EN[] PROGMEM = "Crash det. [on]"; -const char * const MSG_CRASHDETECT_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CRASHDETECT_ON_EN +const char MSG_CRASH_DETECTED_EN[] PROGMEM = "Crash detected. Continue printing?"; +const char * const MSG_CRASH_DETECTED_LANG_TABLE[1] PROGMEM = { + MSG_CRASH_DETECTED_EN }; const char MSG_CURRENT_EN[] PROGMEM = "Current"; +const char MSG_CURRENT_CZ[] PROGMEM = "Pouze aktualni"; +const char MSG_CURRENT_IT[] PROGMEM = "Attuale"; +const char MSG_CURRENT_ES[] PROGMEM = "Actual"; +const char MSG_CURRENT_PL[] PROGMEM = "Tylko aktualne"; +const char MSG_CURRENT_DE[] PROGMEM = "Aktuelles"; const char * const MSG_CURRENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CURRENT_EN + MSG_CURRENT_EN, + MSG_CURRENT_CZ, + MSG_CURRENT_IT, + MSG_CURRENT_ES, + MSG_CURRENT_PL, + MSG_CURRENT_DE }; const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers"; +const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory"; +const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori"; +const char MSG_DISABLE_STEPPERS_ES[] PROGMEM = "Apagar motores"; +const char MSG_DISABLE_STEPPERS_PL[] PROGMEM = "Wylaczyc silniki"; +const char MSG_DISABLE_STEPPERS_DE[] PROGMEM = "Motoren aus"; const char * const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DISABLE_STEPPERS_EN + MSG_DISABLE_STEPPERS_EN, + MSG_DISABLE_STEPPERS_CZ, + MSG_DISABLE_STEPPERS_IT, + MSG_DISABLE_STEPPERS_ES, + MSG_DISABLE_STEPPERS_PL, + MSG_DISABLE_STEPPERS_DE }; const char MSG_DWELL_EN[] PROGMEM = "Sleep..."; +const char MSG_DWELL_IT[] PROGMEM = "Sospensione..."; +const char MSG_DWELL_ES[] PROGMEM = "En espera"; +const char MSG_DWELL_DE[] PROGMEM = "Einen Moment bitte."; const char * const MSG_DWELL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_DWELL_EN + MSG_DWELL_EN, + MSG_DWELL_EN, + MSG_DWELL_IT, + MSG_DWELL_ES, + MSG_DWELL_EN, + MSG_DWELL_DE }; const char MSG_ENDSTOPS_HIT_EN[] PROGMEM = "endstops hit: "; -const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ENDSTOPS_HIT_LANG_TABLE[1] PROGMEM = { MSG_ENDSTOPS_HIT_EN }; const char MSG_ENDSTOP_HIT_EN[] PROGMEM = "TRIGGERED"; -const char * const MSG_ENDSTOP_HIT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ENDSTOP_HIT_LANG_TABLE[1] PROGMEM = { MSG_ENDSTOP_HIT_EN }; const char MSG_ENDSTOP_OPEN_EN[] PROGMEM = "open"; -const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ENDSTOP_OPEN_LANG_TABLE[1] PROGMEM = { MSG_ENDSTOP_OPEN_EN }; const char MSG_END_FILE_LIST_EN[] PROGMEM = "End file list"; -const char * const MSG_END_FILE_LIST_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = { MSG_END_FILE_LIST_EN }; 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 MSG_ERROR_DE[] PROGMEM = "FEHLER:"; const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_ERROR_EN + MSG_ERROR_EN, + MSG_ERROR_CZ, + MSG_ERROR_IT, + MSG_ERROR_EN, + MSG_ERROR_PL, + MSG_ERROR_DE }; const char MSG_ERR_CHECKSUM_MISMATCH_EN[] PROGMEM = "checksum mismatch, Last Line: "; -const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1] PROGMEM = { MSG_ERR_CHECKSUM_MISMATCH_EN }; const char MSG_ERR_COLD_EXTRUDE_STOP_EN[] PROGMEM = " cold extrusion prevented"; -const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { MSG_ERR_COLD_EXTRUDE_STOP_EN }; const char MSG_ERR_KILLED_EN[] PROGMEM = "Printer halted. kill() called!"; -const char * const MSG_ERR_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_KILLED_LANG_TABLE[1] PROGMEM = { MSG_ERR_KILLED_EN }; const char MSG_ERR_LINE_NO_EN[] PROGMEM = "Line Number is not Last Line Number+1, Last Line: "; -const char * const MSG_ERR_LINE_NO_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_LINE_NO_LANG_TABLE[1] PROGMEM = { MSG_ERR_LINE_NO_EN }; const char MSG_ERR_LONG_EXTRUDE_STOP_EN[] PROGMEM = " too long extrusion prevented"; -const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_LONG_EXTRUDE_STOP_LANG_TABLE[1] PROGMEM = { MSG_ERR_LONG_EXTRUDE_STOP_EN }; const char MSG_ERR_NO_CHECKSUM_EN[] PROGMEM = "No Checksum with line number, Last Line: "; -const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_NO_CHECKSUM_LANG_TABLE[1] PROGMEM = { MSG_ERR_NO_CHECKSUM_EN }; const char MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN[] PROGMEM = "No Line Number with checksum, Last Line: "; -const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_LANG_TABLE[1] PROGMEM = { MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM_EN }; const char MSG_ERR_NO_THERMISTORS_EN[] PROGMEM = "No thermistors - no temperature"; -const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_NO_THERMISTORS_LANG_TABLE[1] PROGMEM = { MSG_ERR_NO_THERMISTORS_EN }; const char MSG_ERR_STOPPED_EN[] PROGMEM = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; -const char * const MSG_ERR_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ERR_STOPPED_LANG_TABLE[1] PROGMEM = { MSG_ERR_STOPPED_EN }; const char MSG_EXTERNAL_RESET_EN[] PROGMEM = " External Reset"; -const char * const MSG_EXTERNAL_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_EXTERNAL_RESET_LANG_TABLE[1] PROGMEM = { MSG_EXTERNAL_RESET_EN }; const char MSG_EXTRUDER_EN[] PROGMEM = "Extruder"; +const char MSG_EXTRUDER_IT[] PROGMEM = "Estrusore"; +const char MSG_EXTRUDER_ES[] PROGMEM = "Extrusor"; +const char MSG_EXTRUDER_PL[] PROGMEM = "Ekstruder"; const char * const MSG_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_EN, + MSG_EXTRUDER_EN, + MSG_EXTRUDER_IT, + MSG_EXTRUDER_ES, + MSG_EXTRUDER_PL, MSG_EXTRUDER_EN }; const char MSG_EXTRUDER_1_EN[] PROGMEM = "Extruder 1"; +const char MSG_EXTRUDER_1_IT[] PROGMEM = "Estrusore 1"; +const char MSG_EXTRUDER_1_ES[] PROGMEM = "Extrusor 1"; +const char MSG_EXTRUDER_1_PL[] PROGMEM = "Ekstruder 1"; const char * const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_EN, + MSG_EXTRUDER_1_IT, + MSG_EXTRUDER_1_ES, + MSG_EXTRUDER_1_PL, MSG_EXTRUDER_1_EN }; const char MSG_EXTRUDER_2_EN[] PROGMEM = "Extruder 2"; +const char MSG_EXTRUDER_2_IT[] PROGMEM = "Estrusore 2"; +const char MSG_EXTRUDER_2_ES[] PROGMEM = "Extrusor 2"; +const char MSG_EXTRUDER_2_PL[] PROGMEM = "Ekstruder 2"; const char * const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_EN, + MSG_EXTRUDER_2_IT, + MSG_EXTRUDER_2_ES, + MSG_EXTRUDER_2_PL, MSG_EXTRUDER_2_EN }; const char MSG_EXTRUDER_3_EN[] PROGMEM = "Extruder 3"; +const char MSG_EXTRUDER_3_IT[] PROGMEM = "Estrusore 3"; +const char MSG_EXTRUDER_3_ES[] PROGMEM = "Extrusor 3"; +const char MSG_EXTRUDER_3_PL[] PROGMEM = "Ekstruder 3"; const char * const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_EN, + MSG_EXTRUDER_3_IT, + MSG_EXTRUDER_3_ES, + MSG_EXTRUDER_3_PL, MSG_EXTRUDER_3_EN }; const char MSG_EXTRUDER_4_EN[] PROGMEM = "Extruder 4"; +const char MSG_EXTRUDER_4_IT[] PROGMEM = "Estrusore 4"; +const char MSG_EXTRUDER_4_ES[] PROGMEM = "Extrusor 4"; +const char MSG_EXTRUDER_4_PL[] PROGMEM = "Ekstruder 4"; const char * const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_EN, + MSG_EXTRUDER_4_IT, + MSG_EXTRUDER_4_ES, + MSG_EXTRUDER_4_PL, MSG_EXTRUDER_4_EN }; const char MSG_E_CAL_KNOB_EN[] PROGMEM = "Rotate knob until mark reaches extruder body. Click when done."; +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 MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_E_CAL_KNOB_EN + 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, + MSG_E_CAL_KNOB_DE }; const char MSG_Enqueing_EN[] PROGMEM = "enqueing \""; -const char * const MSG_Enqueing_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_Enqueing_LANG_TABLE[1] PROGMEM = { MSG_Enqueing_EN }; const char MSG_FACTOR_EN[] PROGMEM = " \002 Fact"; -const char * const MSG_FACTOR_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FACTOR_LANG_TABLE[1] PROGMEM = { MSG_FACTOR_EN }; const char MSG_FAN_SPEED_EN[] PROGMEM = "Fan speed"; +const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; +const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; +const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; +const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; +const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FAN_SPEED_EN + MSG_FAN_SPEED_EN, + MSG_FAN_SPEED_CZ, + MSG_FAN_SPEED_IT, + MSG_FAN_SPEED_ES, + MSG_FAN_SPEED_PL, + MSG_FAN_SPEED_DE }; const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; -const char * const MSG_FARM_CARD_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { +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"; +const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; +const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; +const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENTCHANGE_EN + MSG_FILAMENTCHANGE_EN, + MSG_FILAMENTCHANGE_CZ, + MSG_FILAMENTCHANGE_IT, + MSG_FILAMENTCHANGE_ES, + MSG_FILAMENTCHANGE_PL, + MSG_FILAMENTCHANGE_DE }; const char MSG_FILAMENT_CLEAN_EN[] PROGMEM = "Is color clear?"; +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 MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_CLEAN_EN + MSG_FILAMENT_CLEAN_EN, + MSG_FILAMENT_CLEAN_CZ, + MSG_FILAMENT_CLEAN_IT, + MSG_FILAMENT_CLEAN_ES, + MSG_FILAMENT_CLEAN_PL, + MSG_FILAMENT_CLEAN_DE }; const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; +const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte 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 MSG_FILAMENT_LOADING_T0_DE[] PROGMEM = "Filament in extruder 1 einlegen. Klicken wenn fertig."; const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T0_EN + 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, + MSG_FILAMENT_LOADING_T0_DE }; const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; +const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte 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 MSG_FILAMENT_LOADING_T1_DE[] PROGMEM = "Filament in extruder 2 einlegen. Klicken wenn fertig."; const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T1_EN + 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, + MSG_FILAMENT_LOADING_T1_DE }; const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; +const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte 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 MSG_FILAMENT_LOADING_T2_DE[] PROGMEM = "Filament in extruder 3 einlegen. Klicken wenn fertig."; const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T2_EN + 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, + MSG_FILAMENT_LOADING_T2_DE }; const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; +const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte 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 MSG_FILAMENT_LOADING_T3_DE[] PROGMEM = "Filament in extruder 4 einlegen. Klicken wenn fertig."; const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FILAMENT_LOADING_T3_EN + 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, + MSG_FILAMENT_LOADING_T3_DE }; const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; -const char * const MSG_FILE_PRINTED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { MSG_FILE_PRINTED_EN }; const char MSG_FILE_SAVED_EN[] PROGMEM = "Done saving file."; -const char * const MSG_FILE_SAVED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FILE_SAVED_LANG_TABLE[1] PROGMEM = { MSG_FILE_SAVED_EN }; const char MSG_FIL_ADJUSTING_EN[] PROGMEM = "Adjusting filaments. Please wait."; +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 MSG_FIL_ADJUSTING_DE[] PROGMEM = "Filament positionieren. Bitte warten."; const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIL_ADJUSTING_EN + MSG_FIL_ADJUSTING_EN, + MSG_FIL_ADJUSTING_CZ, + MSG_FIL_ADJUSTING_IT, + MSG_FIL_ADJUSTING_ES, + MSG_FIL_ADJUSTING_PL, + MSG_FIL_ADJUSTING_DE }; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN }; 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."; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Buscando cama punto de calibracion"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Szukam punktu kalibracyjnego podkladki"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Suchen Bed Kalibrierpunkt"; const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_DE }; const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; +const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; const char * const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_DE }; const char MSG_FINISHING_MOVEMENTS_EN[] PROGMEM = "Finishing movements"; +const char MSG_FINISHING_MOVEMENTS_CZ[] PROGMEM = "Dokoncovani pohybu"; +const char MSG_FINISHING_MOVEMENTS_IT[] PROGMEM = "Arresto in corso"; +const char MSG_FINISHING_MOVEMENTS_ES[] PROGMEM = "Term. movimientos"; +const char MSG_FINISHING_MOVEMENTS_PL[] PROGMEM = "Konczenie druku"; +const char MSG_FINISHING_MOVEMENTS_DE[] PROGMEM = "Bewegung beenden"; const char * const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FINISHING_MOVEMENTS_EN + MSG_FINISHING_MOVEMENTS_EN, + MSG_FINISHING_MOVEMENTS_CZ, + MSG_FINISHING_MOVEMENTS_IT, + MSG_FINISHING_MOVEMENTS_ES, + MSG_FINISHING_MOVEMENTS_PL, + MSG_FINISHING_MOVEMENTS_DE }; const char MSG_FLOW_EN[] PROGMEM = "Flow"; +const char MSG_FLOW_CZ[] PROGMEM = "Prutok"; +const char MSG_FLOW_IT[] PROGMEM = "Flusso"; +const char MSG_FLOW_ES[] PROGMEM = "Flujo"; +const char MSG_FLOW_PL[] PROGMEM = "Przeplyw"; +const char MSG_FLOW_DE[] PROGMEM = "Durchfluss"; const char * const MSG_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FLOW_EN + MSG_FLOW_EN, + MSG_FLOW_CZ, + MSG_FLOW_IT, + MSG_FLOW_ES, + MSG_FLOW_PL, + MSG_FLOW_DE }; const char MSG_FLOW0_EN[] PROGMEM = "Flow 0"; -const char * const MSG_FLOW0_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FLOW0_LANG_TABLE[1] PROGMEM = { MSG_FLOW0_EN }; const char MSG_FLOW1_EN[] PROGMEM = "Flow 1"; -const char * const MSG_FLOW1_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FLOW1_LANG_TABLE[1] PROGMEM = { MSG_FLOW1_EN }; const char MSG_FLOW2_EN[] PROGMEM = "Flow 2"; -const char * const MSG_FLOW2_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FLOW2_LANG_TABLE[1] PROGMEM = { MSG_FLOW2_EN }; const char MSG_FOLLOW_CALIBRATION_FLOW_EN[] PROGMEM = "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_CZ[] PROGMEM = "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."; +const char MSG_FOLLOW_CALIBRATION_FLOW_IT[] PROGMEM = "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."; +const char MSG_FOLLOW_CALIBRATION_FLOW_ES[] PROGMEM = "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."; +const char MSG_FOLLOW_CALIBRATION_FLOW_PL[] PROGMEM = "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."; +const char MSG_FOLLOW_CALIBRATION_FLOW_DE[] PROGMEM = "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow."; const char * const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FOLLOW_CALIBRATION_FLOW_EN + MSG_FOLLOW_CALIBRATION_FLOW_EN, + MSG_FOLLOW_CALIBRATION_FLOW_CZ, + MSG_FOLLOW_CALIBRATION_FLOW_IT, + MSG_FOLLOW_CALIBRATION_FLOW_ES, + MSG_FOLLOW_CALIBRATION_FLOW_PL, + MSG_FOLLOW_CALIBRATION_FLOW_DE }; const char MSG_FREE_MEMORY_EN[] PROGMEM = " Free Memory: "; -const char * const MSG_FREE_MEMORY_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { MSG_FREE_MEMORY_EN }; -const char MSG_FSENSOR_OFF_EN[] PROGMEM = "Fil. sensor [off]"; -const char * const MSG_FSENSOR_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FSENSOR_OFF_EN -}; - -const char MSG_FSENSOR_ON_EN[] PROGMEM = "Fil. sensor [on]"; -const char * const MSG_FSENSOR_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_FSENSOR_ON_EN -}; - const char MSG_HEATING_EN[] PROGMEM = "Heating"; +const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; +const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; +const char MSG_HEATING_ES[] PROGMEM = "Calentando..."; +const char MSG_HEATING_PL[] PROGMEM = "Grzanie..."; +const char MSG_HEATING_DE[] PROGMEM = "Aufwaermen"; const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_EN + MSG_HEATING_EN, + MSG_HEATING_CZ, + MSG_HEATING_IT, + MSG_HEATING_ES, + MSG_HEATING_PL, + MSG_HEATING_DE }; 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 = "Riscald. completo"; +const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentamiento final."; +const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; +const char MSG_HEATING_COMPLETE_DE[] PROGMEM = "Aufwaermen OK"; const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HEATING_COMPLETE_EN + MSG_HEATING_COMPLETE_EN, + MSG_HEATING_COMPLETE_CZ, + MSG_HEATING_COMPLETE_IT, + MSG_HEATING_COMPLETE_ES, + MSG_HEATING_COMPLETE_PL, + MSG_HEATING_COMPLETE_DE }; const char MSG_HOMEYZ_EN[] PROGMEM = "Calibrate Z"; +const char MSG_HOMEYZ_CZ[] PROGMEM = "Kalibrovat Z"; +const char MSG_HOMEYZ_IT[] PROGMEM = "Calibra Z"; +const char MSG_HOMEYZ_ES[] PROGMEM = "Calibrar Z"; +const char MSG_HOMEYZ_PL[] PROGMEM = "Kalibruj Z"; +const char MSG_HOMEYZ_DE[] PROGMEM = "Kalibrieren Z"; const char * const MSG_HOMEYZ_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_EN + MSG_HOMEYZ_EN, + MSG_HOMEYZ_CZ, + MSG_HOMEYZ_IT, + MSG_HOMEYZ_ES, + MSG_HOMEYZ_PL, + MSG_HOMEYZ_DE }; const char MSG_HOMEYZ_DONE_EN[] PROGMEM = "Calibration done"; +const char MSG_HOMEYZ_DONE_CZ[] PROGMEM = "Kalibrace OK"; +const char MSG_HOMEYZ_DONE_IT[] PROGMEM = "Calibrazione OK"; +const char MSG_HOMEYZ_DONE_ES[] PROGMEM = "Calibracion OK"; +const char MSG_HOMEYZ_DONE_PL[] PROGMEM = "Kalibracja OK"; +const char MSG_HOMEYZ_DONE_DE[] PROGMEM = "Kalibrierung OK"; const char * const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_DONE_EN + MSG_HOMEYZ_DONE_EN, + MSG_HOMEYZ_DONE_CZ, + MSG_HOMEYZ_DONE_IT, + MSG_HOMEYZ_DONE_ES, + MSG_HOMEYZ_DONE_PL, + MSG_HOMEYZ_DONE_DE }; const char MSG_HOMEYZ_PROGRESS_EN[] PROGMEM = "Calibrating Z"; +const char MSG_HOMEYZ_PROGRESS_CZ[] PROGMEM = "Kalibruji Z"; +const char MSG_HOMEYZ_PROGRESS_IT[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_ES[] PROGMEM = "Calibrando Z"; +const char MSG_HOMEYZ_PROGRESS_PL[] PROGMEM = "Kalibruje Z"; +const char MSG_HOMEYZ_PROGRESS_DE[] PROGMEM = "Kalibriere Z"; const char * const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_HOMEYZ_PROGRESS_EN + MSG_HOMEYZ_PROGRESS_EN, + MSG_HOMEYZ_PROGRESS_CZ, + MSG_HOMEYZ_PROGRESS_IT, + MSG_HOMEYZ_PROGRESS_ES, + MSG_HOMEYZ_PROGRESS_PL, + MSG_HOMEYZ_PROGRESS_DE }; const char MSG_HOTEND_OFFSET_EN[] PROGMEM = "Hotend offsets:"; -const char * const MSG_HOTEND_OFFSET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_HOTEND_OFFSET_LANG_TABLE[1] PROGMEM = { MSG_HOTEND_OFFSET_EN }; const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN[] PROGMEM = "Improving bed calibration point"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ[] PROGMEM = "Zlepsuji presnost kalibracniho bodu"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT[] PROGMEM = "Perfezion. il letto punto di calibraz."; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES[] PROGMEM = "Mejorando cama punto de calibracion"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL[] PROGMEM = "Poprawiam precyzyjnosc punktu kalibracyjnego"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE[] PROGMEM = "Verbesserung Bed Kalibrierpunkt"; const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_DE }; -const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN[] PROGMEM = " of 4"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ[] PROGMEM = " z 4"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT[] PROGMEM = " su 4"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES[] PROGMEM = " de 4"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL[] PROGMEM = " z 4"; +const char MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE[] PROGMEM = " von 4"; const char * const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_EN, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_CZ, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_IT, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_ES, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_PL, + MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_DE }; const char MSG_INFO_EXTRUDER_EN[] PROGMEM = "Extruder info"; -const char * const MSG_INFO_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INFO_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_INFO_EXTRUDER_EN }; const char MSG_INFO_FILAMENT_XDIFF_EN[] PROGMEM = "Fil. Xd:"; -const char * const MSG_INFO_FILAMENT_XDIFF_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INFO_FILAMENT_XDIFF_LANG_TABLE[1] PROGMEM = { MSG_INFO_FILAMENT_XDIFF_EN }; const char MSG_INFO_FILAMENT_YDIFF_EN[] PROGMEM = "Fil. Ydiff:"; -const char * const MSG_INFO_FILAMENT_YDIFF_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INFO_FILAMENT_YDIFF_LANG_TABLE[1] PROGMEM = { MSG_INFO_FILAMENT_YDIFF_EN }; const char MSG_INFO_NOZZLE_FAN_EN[] PROGMEM = "Nozzle FAN:"; -const char * const MSG_INFO_NOZZLE_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INFO_NOZZLE_FAN_LANG_TABLE[1] PROGMEM = { MSG_INFO_NOZZLE_FAN_EN }; const char MSG_INFO_PRINT_FAN_EN[] PROGMEM = "Print FAN: "; -const char * const MSG_INFO_PRINT_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INFO_PRINT_FAN_LANG_TABLE[1] PROGMEM = { MSG_INFO_PRINT_FAN_EN }; const char MSG_INIT_SDCARD_EN[] PROGMEM = "Init. SD card"; -const char * const MSG_INIT_SDCARD_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INIT_SDCARD_LANG_TABLE[1] PROGMEM = { MSG_INIT_SDCARD_EN }; const char MSG_INSERT_FILAMENT_EN[] PROGMEM = "Insert filament"; +const char MSG_INSERT_FILAMENT_CZ[] PROGMEM = "Vlozte filament"; +const char MSG_INSERT_FILAMENT_IT[] PROGMEM = "Inserire filamento"; +const char MSG_INSERT_FILAMENT_ES[] PROGMEM = "Introducir filamento"; +const char MSG_INSERT_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_INSERT_FILAMENT_DE[] PROGMEM = "Filament einlegen"; const char * const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_INSERT_FILAMENT_EN + MSG_INSERT_FILAMENT_EN, + MSG_INSERT_FILAMENT_CZ, + MSG_INSERT_FILAMENT_IT, + MSG_INSERT_FILAMENT_ES, + MSG_INSERT_FILAMENT_PL, + MSG_INSERT_FILAMENT_DE }; const char MSG_INVALID_EXTRUDER_EN[] PROGMEM = "Invalid extruder"; -const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_INVALID_EXTRUDER_EN }; const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; +const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; +const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; +const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_KILLED_EN + MSG_KILLED_EN, + MSG_KILLED_EN, + MSG_KILLED_IT, + MSG_KILLED_ES, + MSG_KILLED_EN, + MSG_KILLED_DE }; const char MSG_LANGUAGE_NAME_EN[] PROGMEM = "English"; +const char MSG_LANGUAGE_NAME_CZ[] PROGMEM = "Cestina"; +const char MSG_LANGUAGE_NAME_IT[] PROGMEM = "Italiano"; +const char MSG_LANGUAGE_NAME_ES[] PROGMEM = "Espanol"; +const char MSG_LANGUAGE_NAME_PL[] PROGMEM = "Polski"; +const char MSG_LANGUAGE_NAME_DE[] PROGMEM = "Deutsch"; const char * const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_NAME_EN + MSG_LANGUAGE_NAME_EN, + MSG_LANGUAGE_NAME_CZ, + MSG_LANGUAGE_NAME_IT, + MSG_LANGUAGE_NAME_ES, + MSG_LANGUAGE_NAME_PL, + MSG_LANGUAGE_NAME_DE }; const char MSG_LANGUAGE_SELECT_EN[] PROGMEM = "Select language"; +const char MSG_LANGUAGE_SELECT_CZ[] PROGMEM = "Vyber jazyka"; +const char MSG_LANGUAGE_SELECT_IT[] PROGMEM = "Seleziona lingua"; +const char MSG_LANGUAGE_SELECT_ES[] PROGMEM = "Cambiae el idioma"; +const char MSG_LANGUAGE_SELECT_PL[] PROGMEM = "Wybor jezyka"; +const char MSG_LANGUAGE_SELECT_DE[] PROGMEM = "Waehle Sprache"; const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LANGUAGE_SELECT_EN + MSG_LANGUAGE_SELECT_EN, + MSG_LANGUAGE_SELECT_CZ, + MSG_LANGUAGE_SELECT_IT, + MSG_LANGUAGE_SELECT_ES, + MSG_LANGUAGE_SELECT_PL, + MSG_LANGUAGE_SELECT_DE }; 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 = "Caricando colore"; +const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cambiando color"; +const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; +const char MSG_LOADING_COLOR_DE[] PROGMEM = "Lade Farbe"; const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_COLOR_EN + MSG_LOADING_COLOR_EN, + MSG_LOADING_COLOR_CZ, + MSG_LOADING_COLOR_IT, + MSG_LOADING_COLOR_ES, + MSG_LOADING_COLOR_PL, + MSG_LOADING_COLOR_DE }; 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 = "Caricando filam."; +const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; +const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; +const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament leadt"; const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOADING_FILAMENT_EN + MSG_LOADING_FILAMENT_EN, + MSG_LOADING_FILAMENT_CZ, + MSG_LOADING_FILAMENT_IT, + MSG_LOADING_FILAMENT_ES, + MSG_LOADING_FILAMENT_PL, + MSG_LOADING_FILAMENT_DE }; const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; +const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; +const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; +const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; +const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; +const char MSG_LOAD_ALL_DE[] PROGMEM = "Alle laden"; const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_ALL_EN + MSG_LOAD_ALL_EN, + MSG_LOAD_ALL_CZ, + MSG_LOAD_ALL_IT, + MSG_LOAD_ALL_ES, + MSG_LOAD_ALL_PL, + MSG_LOAD_ALL_DE }; const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; -const char * const MSG_LOAD_EPROM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { MSG_LOAD_EPROM_EN }; const char MSG_LOAD_FILAMENT_EN[] PROGMEM = "Load filament"; +const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; +const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; +const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; +const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; +const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_EN + MSG_LOAD_FILAMENT_EN, + MSG_LOAD_FILAMENT_CZ, + MSG_LOAD_FILAMENT_IT, + MSG_LOAD_FILAMENT_ES, + MSG_LOAD_FILAMENT_PL, + MSG_LOAD_FILAMENT_DE }; const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; +const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; +const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; +const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; +const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; +const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Filament 1 laden"; const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_1_EN + MSG_LOAD_FILAMENT_1_EN, + MSG_LOAD_FILAMENT_1_CZ, + MSG_LOAD_FILAMENT_1_IT, + MSG_LOAD_FILAMENT_1_ES, + MSG_LOAD_FILAMENT_1_PL, + MSG_LOAD_FILAMENT_1_DE }; const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; +const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; +const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; +const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; +const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; +const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Filament 2 laden"; const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_2_EN + MSG_LOAD_FILAMENT_2_EN, + MSG_LOAD_FILAMENT_2_CZ, + MSG_LOAD_FILAMENT_2_IT, + MSG_LOAD_FILAMENT_2_ES, + MSG_LOAD_FILAMENT_2_PL, + MSG_LOAD_FILAMENT_2_DE }; const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; +const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; +const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; +const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; +const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; +const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Filament 3 laden"; const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_3_EN + MSG_LOAD_FILAMENT_3_EN, + MSG_LOAD_FILAMENT_3_CZ, + MSG_LOAD_FILAMENT_3_IT, + MSG_LOAD_FILAMENT_3_ES, + MSG_LOAD_FILAMENT_3_PL, + MSG_LOAD_FILAMENT_3_DE }; const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; +const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; +const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; +const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; +const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; +const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Filament 4 laden"; const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOAD_FILAMENT_4_EN + MSG_LOAD_FILAMENT_4_EN, + MSG_LOAD_FILAMENT_4_CZ, + MSG_LOAD_FILAMENT_4_IT, + MSG_LOAD_FILAMENT_4_ES, + MSG_LOAD_FILAMENT_4_PL, + MSG_LOAD_FILAMENT_4_DE }; const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; +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 MSG_LOOSE_PULLEY_DE[] PROGMEM = "Lose Riemenscheibe"; const char * const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_LOOSE_PULLEY_EN + MSG_LOOSE_PULLEY_EN, + MSG_LOOSE_PULLEY_CZ, + MSG_LOOSE_PULLEY_IT, + MSG_LOOSE_PULLEY_ES, + MSG_LOOSE_PULLEY_PL, + MSG_LOOSE_PULLEY_DE }; const char MSG_M104_INVALID_EXTRUDER_EN[] PROGMEM = "M104 Invalid extruder "; -const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M104_INVALID_EXTRUDER_EN }; const char MSG_M105_INVALID_EXTRUDER_EN[] PROGMEM = "M105 Invalid extruder "; -const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M105_INVALID_EXTRUDER_EN }; const char MSG_M109_INVALID_EXTRUDER_EN[] PROGMEM = "M109 Invalid extruder "; -const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M109_INVALID_EXTRUDER_EN }; const char MSG_M115_REPORT_EN[] PROGMEM = "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/prusa3d/Prusa-i3-Plus/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000\n"; -const char * const MSG_M115_REPORT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { MSG_M115_REPORT_EN }; const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; -const char * const MSG_M119_REPORT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { MSG_M119_REPORT_EN }; const char MSG_M200_INVALID_EXTRUDER_EN[] PROGMEM = "M200 Invalid extruder "; -const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M200_INVALID_EXTRUDER_EN }; const char MSG_M218_INVALID_EXTRUDER_EN[] PROGMEM = "M218 Invalid extruder "; -const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M218_INVALID_EXTRUDER_EN }; const char MSG_M221_INVALID_EXTRUDER_EN[] PROGMEM = "M221 Invalid extruder "; -const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { MSG_M221_INVALID_EXTRUDER_EN }; const char MSG_MAIN_EN[] PROGMEM = "Main"; +const char MSG_MAIN_CZ[] PROGMEM = "Hlavni nabidka"; +const char MSG_MAIN_IT[] PROGMEM = "Menu principale"; +const char MSG_MAIN_ES[] PROGMEM = "Menu principal"; +const char MSG_MAIN_PL[] PROGMEM = "Menu glowne"; +const char MSG_MAIN_DE[] PROGMEM = "Hauptmenue"; const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MAIN_EN + MSG_MAIN_EN, + MSG_MAIN_CZ, + MSG_MAIN_IT, + MSG_MAIN_ES, + MSG_MAIN_PL, + MSG_MAIN_DE }; 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 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."; +const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MARK_FIL_EN + MSG_MARK_FIL_EN, + MSG_MARK_FIL_CZ, + MSG_MARK_FIL_IT, + MSG_MARK_FIL_ES, + MSG_MARK_FIL_PL, + MSG_MARK_FIL_DE }; const char MSG_MAX_EN[] PROGMEM = " \002 Max"; -const char * const MSG_MAX_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MAX_LANG_TABLE[1] PROGMEM = { MSG_MAX_EN }; const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN[] PROGMEM = "Measuring reference height of calibration point"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ[] PROGMEM = "Merim referencni vysku kalibracniho bodu"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT[] PROGMEM = "Misurare l'altezza di riferimento del punto di calibrazione"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES[] PROGMEM = "Medir la altura del punto de la calibracion"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL[] PROGMEM = "Okreslam wysokosc odniesienia punktu kalibracyjnego"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE[] PROGMEM = "Messen der Referenzhoehe des Kalibrierpunktes"; const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_DE }; const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN[] PROGMEM = " of 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT[] PROGMEM = " su 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES[] PROGMEM = " de 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL[] PROGMEM = " z 9"; +const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE[] PROGMEM = " von 9"; const char * const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_EN, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_CZ, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_IT, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_ES, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_PL, + MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_DE }; const char MSG_MENU_CALIBRATION_EN[] PROGMEM = "Calibration"; +const char MSG_MENU_CALIBRATION_CZ[] PROGMEM = "Kalibrace"; +const char MSG_MENU_CALIBRATION_IT[] PROGMEM = "Calibrazione"; +const char MSG_MENU_CALIBRATION_ES[] PROGMEM = "Calibracion"; +const char MSG_MENU_CALIBRATION_PL[] PROGMEM = "Kalibracja"; +const char MSG_MENU_CALIBRATION_DE[] PROGMEM = "Kalibrierung"; const char * const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MENU_CALIBRATION_EN + MSG_MENU_CALIBRATION_EN, + MSG_MENU_CALIBRATION_CZ, + MSG_MENU_CALIBRATION_IT, + MSG_MENU_CALIBRATION_ES, + MSG_MENU_CALIBRATION_PL, + MSG_MENU_CALIBRATION_DE }; const char MSG_MESH_BED_LEVELING_EN[] PROGMEM = "Mesh Bed Leveling"; +const char MSG_MESH_BED_LEVELING_IT[] PROGMEM = "Mesh livel. letto"; const char * const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_IT, + MSG_MESH_BED_LEVELING_EN, + MSG_MESH_BED_LEVELING_EN, MSG_MESH_BED_LEVELING_EN }; const char MSG_MIN_EN[] PROGMEM = " \002 Min"; -const char * const MSG_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MIN_LANG_TABLE[1] PROGMEM = { MSG_MIN_EN }; const char MSG_MOTION_EN[] PROGMEM = "Motion"; -const char * const MSG_MOTION_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MOTION_LANG_TABLE[1] PROGMEM = { MSG_MOTION_EN }; const char MSG_MOVE_01MM_EN[] PROGMEM = "Move 0.1mm"; -const char * const MSG_MOVE_01MM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MOVE_01MM_LANG_TABLE[1] PROGMEM = { MSG_MOVE_01MM_EN }; const char MSG_MOVE_10MM_EN[] PROGMEM = "Move 10mm"; -const char * const MSG_MOVE_10MM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MOVE_10MM_LANG_TABLE[1] PROGMEM = { MSG_MOVE_10MM_EN }; const char MSG_MOVE_1MM_EN[] PROGMEM = "Move 1mm"; -const char * const MSG_MOVE_1MM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_MOVE_1MM_LANG_TABLE[1] PROGMEM = { MSG_MOVE_1MM_EN }; const char MSG_MOVE_AXIS_EN[] PROGMEM = "Move axis"; +const char MSG_MOVE_AXIS_CZ[] PROGMEM = "Posunout osu"; +const char MSG_MOVE_AXIS_IT[] PROGMEM = "Muovi asse"; +const char MSG_MOVE_AXIS_ES[] PROGMEM = "Mover ejes"; +const char MSG_MOVE_AXIS_PL[] PROGMEM = "Ruch osi"; +const char MSG_MOVE_AXIS_DE[] PROGMEM = "Achsbewegung"; const char * const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_AXIS_EN + MSG_MOVE_AXIS_EN, + MSG_MOVE_AXIS_CZ, + MSG_MOVE_AXIS_IT, + MSG_MOVE_AXIS_ES, + MSG_MOVE_AXIS_PL, + MSG_MOVE_AXIS_DE }; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_EN[] PROGMEM = "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben."; const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_EN + MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_DE }; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN[] PROGMEM = "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben."; const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL, + MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE }; const char MSG_MOVE_E_EN[] PROGMEM = "Extruder"; +const char MSG_MOVE_E_IT[] PROGMEM = "Muovi Estrusore"; +const char MSG_MOVE_E_ES[] PROGMEM = "Extruir"; const char * const MSG_MOVE_E_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_MOVE_E_EN, + MSG_MOVE_E_EN, + MSG_MOVE_E_IT, + MSG_MOVE_E_ES, + MSG_MOVE_E_EN, MSG_MOVE_E_EN }; const char MSG_MOVE_X_EN[] PROGMEM = "Move X"; +const char MSG_MOVE_X_CZ[] PROGMEM = "Posunout X"; +const char MSG_MOVE_X_IT[] PROGMEM = "Muovi X"; +const char MSG_MOVE_X_ES[] PROGMEM = "Mover X"; +const char MSG_MOVE_X_PL[] PROGMEM = "Przesunac X"; +const char MSG_MOVE_X_DE[] PROGMEM = "Bewege X"; const char * const MSG_MOVE_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_X_EN + MSG_MOVE_X_EN, + MSG_MOVE_X_CZ, + MSG_MOVE_X_IT, + MSG_MOVE_X_ES, + MSG_MOVE_X_PL, + MSG_MOVE_X_DE }; const char MSG_MOVE_Y_EN[] PROGMEM = "Move Y"; +const char MSG_MOVE_Y_CZ[] PROGMEM = "Posunout Y"; +const char MSG_MOVE_Y_IT[] PROGMEM = "Muovi Y"; +const char MSG_MOVE_Y_ES[] PROGMEM = "Mover Y"; +const char MSG_MOVE_Y_PL[] PROGMEM = "Przesunac Y"; +const char MSG_MOVE_Y_DE[] PROGMEM = "Bewege Y"; const char * const MSG_MOVE_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Y_EN + MSG_MOVE_Y_EN, + MSG_MOVE_Y_CZ, + MSG_MOVE_Y_IT, + MSG_MOVE_Y_ES, + MSG_MOVE_Y_PL, + MSG_MOVE_Y_DE }; const char MSG_MOVE_Z_EN[] PROGMEM = "Move Z"; +const char MSG_MOVE_Z_CZ[] PROGMEM = "Posunout Z"; +const char MSG_MOVE_Z_IT[] PROGMEM = "Muovi Z"; +const char MSG_MOVE_Z_ES[] PROGMEM = "Mover Z"; +const char MSG_MOVE_Z_PL[] PROGMEM = "Przesunac Z"; +const char MSG_MOVE_Z_DE[] PROGMEM = "Bewege Z"; const char * const MSG_MOVE_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_MOVE_Z_EN + MSG_MOVE_Z_EN, + MSG_MOVE_Z_CZ, + MSG_MOVE_Z_IT, + MSG_MOVE_Z_ES, + MSG_MOVE_Z_PL, + MSG_MOVE_Z_DE }; const char MSG_NEW_FIRMWARE_AVAILABLE_EN[] PROGMEM = "New firmware version available:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_CZ[] PROGMEM = "Vysla nova verze firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_IT[] PROGMEM = "Nuova versione del firmware disponibile"; +const char MSG_NEW_FIRMWARE_AVAILABLE_ES[] PROGMEM = "Nuevo firmware disponible:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_PL[] PROGMEM = "Wyszla nowa wersja firmware:"; +const char MSG_NEW_FIRMWARE_AVAILABLE_DE[] PROGMEM = "Neue Firmware Version verfuegbar:"; const char * const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_AVAILABLE_EN + MSG_NEW_FIRMWARE_AVAILABLE_EN, + MSG_NEW_FIRMWARE_AVAILABLE_CZ, + MSG_NEW_FIRMWARE_AVAILABLE_IT, + MSG_NEW_FIRMWARE_AVAILABLE_ES, + MSG_NEW_FIRMWARE_AVAILABLE_PL, + MSG_NEW_FIRMWARE_AVAILABLE_DE }; const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN[] PROGMEM = "Please upgrade."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ[] PROGMEM = "Prosim aktualizujte."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT[] PROGMEM = "Prega aggiorna."; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES[] PROGMEM = "Actualizar por favor"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL[] PROGMEM = "Prosze zaktualizowac"; +const char MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE[] PROGMEM = "Bitte aktualisieren."; const char * const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_EN, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_CZ, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_IT, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_ES, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_PL, + MSG_NEW_FIRMWARE_PLEASE_UPGRADE_DE }; const char MSG_NO_EN[] PROGMEM = "No"; +const char MSG_NO_CZ[] PROGMEM = "Ne"; +const char MSG_NO_PL[] PROGMEM = "Nie"; +const char MSG_NO_DE[] PROGMEM = "Nein"; const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_EN + MSG_NO_EN, + MSG_NO_CZ, + MSG_NO_EN, + MSG_NO_EN, + MSG_NO_PL, + MSG_NO_DE }; 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 = "Colore non puro"; +const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no homogeneo"; +const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; +const char MSG_NOT_COLOR_DE[] PROGMEM = "Farbe unklar"; const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_COLOR_EN + MSG_NOT_COLOR_EN, + MSG_NOT_COLOR_CZ, + MSG_NOT_COLOR_IT, + MSG_NOT_COLOR_ES, + MSG_NOT_COLOR_PL, + MSG_NOT_COLOR_DE }; 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. non caricato"; +const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no introducido"; +const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; +const char MSG_NOT_LOADED_DE[] PROGMEM = "Fil. nicht geladen"; const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOT_LOADED_EN + MSG_NOT_LOADED_EN, + MSG_NOT_LOADED_CZ, + MSG_NOT_LOADED_IT, + MSG_NOT_LOADED_ES, + MSG_NOT_LOADED_PL, + MSG_NOT_LOADED_DE }; const char MSG_NOZZLE_EN[] PROGMEM = "Nozzle"; +const char MSG_NOZZLE_CZ[] PROGMEM = "Tryska"; +const char MSG_NOZZLE_IT[] PROGMEM = "Ugello"; +const char MSG_NOZZLE_ES[] PROGMEM = "Boquilla"; +const char MSG_NOZZLE_PL[] PROGMEM = "Dysza"; +const char MSG_NOZZLE_DE[] PROGMEM = "Duese"; const char * const MSG_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NOZZLE_EN + MSG_NOZZLE_EN, + MSG_NOZZLE_CZ, + MSG_NOZZLE_IT, + MSG_NOZZLE_ES, + MSG_NOZZLE_PL, + MSG_NOZZLE_DE }; const char MSG_NOZZLE1_EN[] PROGMEM = "Nozzle2"; -const char * const MSG_NOZZLE1_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_NOZZLE1_LANG_TABLE[1] PROGMEM = { MSG_NOZZLE1_EN }; const char MSG_NOZZLE2_EN[] PROGMEM = "Nozzle3"; -const char * const MSG_NOZZLE2_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_NOZZLE2_LANG_TABLE[1] PROGMEM = { MSG_NOZZLE2_EN }; const char MSG_NO_CARD_EN[] PROGMEM = "No SD card"; +const char MSG_NO_CARD_CZ[] PROGMEM = "Zadna SD karta"; +const char MSG_NO_CARD_IT[] PROGMEM = "Nessuna SD"; +const char MSG_NO_CARD_ES[] PROGMEM = "No hay tarjeta SD"; +const char MSG_NO_CARD_PL[] PROGMEM = "Brak karty SD"; +const char MSG_NO_CARD_DE[] PROGMEM = "Keine SD Karte"; const char * const MSG_NO_CARD_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_CARD_EN + MSG_NO_CARD_EN, + MSG_NO_CARD_CZ, + MSG_NO_CARD_IT, + MSG_NO_CARD_ES, + MSG_NO_CARD_PL, + MSG_NO_CARD_DE }; const char MSG_NO_MOVE_EN[] PROGMEM = "No move."; +const char MSG_NO_MOVE_IT[] PROGMEM = "Nessun movimento."; +const char MSG_NO_MOVE_ES[] PROGMEM = "Sin movimiento"; +const char MSG_NO_MOVE_DE[] PROGMEM = "Keine Bewegung."; const char * const MSG_NO_MOVE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_NO_MOVE_EN + MSG_NO_MOVE_EN, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_IT, + MSG_NO_MOVE_ES, + MSG_NO_MOVE_EN, + MSG_NO_MOVE_DE }; const char MSG_OFF_EN[] PROGMEM = "Off"; -const char * const MSG_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_OFF_LANG_TABLE[1] PROGMEM = { MSG_OFF_EN }; const char MSG_OK_EN[] PROGMEM = "ok"; -const char * const MSG_OK_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_OK_LANG_TABLE[1] PROGMEM = { MSG_OK_EN }; const char MSG_ON_EN[] PROGMEM = "On "; -const char * const MSG_ON_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ON_LANG_TABLE[1] PROGMEM = { MSG_ON_EN }; const char MSG_PAPER_EN[] PROGMEM = "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."; +const char MSG_PAPER_CZ[] PROGMEM = "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."; +const char MSG_PAPER_IT[] PROGMEM = "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."; +const char MSG_PAPER_ES[] PROGMEM = "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."; +const char MSG_PAPER_PL[] PROGMEM = "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."; +const char MSG_PAPER_DE[] PROGMEM = "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten"; const char * const MSG_PAPER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAPER_EN + MSG_PAPER_EN, + MSG_PAPER_CZ, + MSG_PAPER_IT, + MSG_PAPER_ES, + MSG_PAPER_PL, + MSG_PAPER_DE }; const char MSG_PAUSE_PRINT_EN[] PROGMEM = "Pause print"; +const char MSG_PAUSE_PRINT_CZ[] PROGMEM = "Pozastavit tisk"; +const char MSG_PAUSE_PRINT_IT[] PROGMEM = "Metti in pausa"; +const char MSG_PAUSE_PRINT_ES[] PROGMEM = "Pausar impresion"; +const char MSG_PAUSE_PRINT_PL[] PROGMEM = "Przerwac druk"; +const char MSG_PAUSE_PRINT_DE[] PROGMEM = "Druck unterbrech."; const char * const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PAUSE_PRINT_EN + MSG_PAUSE_PRINT_EN, + MSG_PAUSE_PRINT_CZ, + MSG_PAUSE_PRINT_IT, + MSG_PAUSE_PRINT_ES, + MSG_PAUSE_PRINT_PL, + MSG_PAUSE_PRINT_DE }; const char MSG_PICK_Z_EN[] PROGMEM = "Pick print"; +const char MSG_PICK_Z_CZ[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_ES[] PROGMEM = "Esc. Modelo Adecuado"; +const char MSG_PICK_Z_PL[] PROGMEM = "Vyberte vytisk"; +const char MSG_PICK_Z_DE[] PROGMEM = "Waehle Abdruck"; const char * const MSG_PICK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PICK_Z_EN + MSG_PICK_Z_EN, + MSG_PICK_Z_CZ, + MSG_PICK_Z_EN, + MSG_PICK_Z_ES, + MSG_PICK_Z_PL, + MSG_PICK_Z_DE }; const char MSG_PID_EXTRUDER_EN[] PROGMEM = "PID calibration"; +const char MSG_PID_EXTRUDER_CZ[] PROGMEM = "PID kalibrace"; +const char MSG_PID_EXTRUDER_IT[] PROGMEM = "Calibrazione PID"; +const char MSG_PID_EXTRUDER_ES[] PROGMEM = "Calibracion PID"; +const char MSG_PID_EXTRUDER_PL[] PROGMEM = "Kalibracja PID"; +const char MSG_PID_EXTRUDER_DE[] PROGMEM = "PID Kalibrierung"; const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_EXTRUDER_EN + MSG_PID_EXTRUDER_EN, + MSG_PID_EXTRUDER_CZ, + MSG_PID_EXTRUDER_IT, + MSG_PID_EXTRUDER_ES, + MSG_PID_EXTRUDER_PL, + MSG_PID_EXTRUDER_DE }; const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished"; +const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; +const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; +const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; +const char MSG_PID_FINISHED_PL[] PROGMEM = "Kal. PID zakonczona"; +const char MSG_PID_FINISHED_DE[] PROGMEM = "PID Kalib. fertig"; const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_FINISHED_EN + MSG_PID_FINISHED_EN, + MSG_PID_FINISHED_CZ, + MSG_PID_FINISHED_IT, + MSG_PID_FINISHED_ES, + MSG_PID_FINISHED_PL, + MSG_PID_FINISHED_DE }; const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; +const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; +const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; +const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; +const char MSG_PID_RUNNING_PL[] PROGMEM = "Kal. PID"; +const char MSG_PID_RUNNING_DE[] PROGMEM = "PID Kalib."; const char * const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PID_RUNNING_EN + MSG_PID_RUNNING_EN, + MSG_PID_RUNNING_CZ, + MSG_PID_RUNNING_IT, + MSG_PID_RUNNING_ES, + MSG_PID_RUNNING_PL, + MSG_PID_RUNNING_DE }; const char MSG_PINDA_NOT_CALIBRATED_EN[] PROGMEM = "Temperature calibration has not been run yet"; +const char MSG_PINDA_NOT_CALIBRATED_CZ[] PROGMEM = "Tiskarna nebyla teplotne zkalibrovana"; +const char MSG_PINDA_NOT_CALIBRATED_IT[] PROGMEM = "Taratura della temperatura non ancora eseguita"; +const char MSG_PINDA_NOT_CALIBRATED_ES[] PROGMEM = "La temperatura de calibracion no ha sido ajustada"; +const char MSG_PINDA_NOT_CALIBRATED_PL[] PROGMEM = "Cieplna kalibracja nie byla przeprowadzona"; +const char MSG_PINDA_NOT_CALIBRATED_DE[] PROGMEM = "Temperatur wurde nicht kalibriert"; const char * const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_NOT_CALIBRATED_EN + MSG_PINDA_NOT_CALIBRATED_EN, + MSG_PINDA_NOT_CALIBRATED_CZ, + MSG_PINDA_NOT_CALIBRATED_IT, + MSG_PINDA_NOT_CALIBRATED_ES, + MSG_PINDA_NOT_CALIBRATED_PL, + MSG_PINDA_NOT_CALIBRATED_DE }; const char MSG_PINDA_PREHEAT_EN[] PROGMEM = "PINDA Heating"; +const char MSG_PINDA_PREHEAT_CZ[] PROGMEM = "Nahrivani PINDA"; +const char MSG_PINDA_PREHEAT_IT[] PROGMEM = "Riscald. PINDA"; +const char MSG_PINDA_PREHEAT_ES[] PROGMEM = "Calentando PINDA"; +const char MSG_PINDA_PREHEAT_PL[] PROGMEM = "Grzanie PINDA"; +const char MSG_PINDA_PREHEAT_DE[] PROGMEM = "PINDA erwaermen"; const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PINDA_PREHEAT_EN + MSG_PINDA_PREHEAT_EN, + MSG_PINDA_PREHEAT_CZ, + MSG_PINDA_PREHEAT_IT, + MSG_PINDA_PREHEAT_ES, + MSG_PINDA_PREHEAT_PL, + MSG_PINDA_PREHEAT_DE }; const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; -const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { MSG_PLANNER_BUFFER_BYTES_EN }; +const char MSG_PLA_FILAMENT_LOADED_EN[] PROGMEM = "Is PLA filament loaded?"; +const char * const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { + MSG_PLA_FILAMENT_LOADED_EN +}; + +const char MSG_PLEASE_LOAD_PLA_EN[] PROGMEM = "Please load PLA filament first."; +const char * const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1] PROGMEM = { + MSG_PLEASE_LOAD_PLA_EN +}; + const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; +const char MSG_PLEASE_WAIT_CZ[] PROGMEM = "Prosim cekejte"; +const char MSG_PLEASE_WAIT_IT[] PROGMEM = "Aspetta"; +const char MSG_PLEASE_WAIT_ES[] PROGMEM = "Por Favor Esperar"; +const char MSG_PLEASE_WAIT_PL[] PROGMEM = "Prosze czekac"; +const char MSG_PLEASE_WAIT_DE[] PROGMEM = "Bitte warten"; const char * const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PLEASE_WAIT_EN + MSG_PLEASE_WAIT_EN, + MSG_PLEASE_WAIT_CZ, + MSG_PLEASE_WAIT_IT, + MSG_PLEASE_WAIT_ES, + MSG_PLEASE_WAIT_PL, + MSG_PLEASE_WAIT_DE }; const char MSG_POSITION_UNKNOWN_EN[] PROGMEM = "Home X/Y before Z"; -const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_POSITION_UNKNOWN_LANG_TABLE[1] PROGMEM = { MSG_POSITION_UNKNOWN_EN }; const char MSG_POWERUP_EN[] PROGMEM = "PowerUp"; -const char * const MSG_POWERUP_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_POWERUP_LANG_TABLE[1] PROGMEM = { MSG_POWERUP_EN }; const char MSG_PREHEAT_EN[] PROGMEM = "Preheat"; +const char MSG_PREHEAT_CZ[] PROGMEM = "Predehrev"; +const char MSG_PREHEAT_IT[] PROGMEM = "Preriscalda"; +const char MSG_PREHEAT_ES[] PROGMEM = "Precalentar"; +const char MSG_PREHEAT_PL[] PROGMEM = "Grzanie"; +const char MSG_PREHEAT_DE[] PROGMEM = "Vorwaermen"; const char * const MSG_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_EN + MSG_PREHEAT_EN, + MSG_PREHEAT_CZ, + MSG_PREHEAT_IT, + MSG_PREHEAT_ES, + MSG_PREHEAT_PL, + MSG_PREHEAT_DE }; const char MSG_PREHEAT_NOZZLE_EN[] PROGMEM = "Preheat the nozzle!"; +const char MSG_PREHEAT_NOZZLE_CZ[] PROGMEM = "Predehrejte trysku!"; +const char MSG_PREHEAT_NOZZLE_IT[] PROGMEM = "Preris. ugello!"; +const char MSG_PREHEAT_NOZZLE_ES[] PROGMEM = "Precalentar extrusor"; +const char MSG_PREHEAT_NOZZLE_PL[] PROGMEM = "Nagrzej dysze!"; +const char MSG_PREHEAT_NOZZLE_DE[] PROGMEM = "Duese Vorwaermen"; const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREHEAT_NOZZLE_EN + MSG_PREHEAT_NOZZLE_EN, + MSG_PREHEAT_NOZZLE_CZ, + MSG_PREHEAT_NOZZLE_IT, + MSG_PREHEAT_NOZZLE_ES, + MSG_PREHEAT_NOZZLE_PL, + MSG_PREHEAT_NOZZLE_DE }; const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; +const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; +const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; +const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; +const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; +const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filam. bereithalten"; const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PREPARE_FILAMENT_EN + MSG_PREPARE_FILAMENT_EN, + MSG_PREPARE_FILAMENT_CZ, + MSG_PREPARE_FILAMENT_IT, + MSG_PREPARE_FILAMENT_ES, + MSG_PREPARE_FILAMENT_PL, + MSG_PREPARE_FILAMENT_DE }; 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 = "Pulsar el mando"; +const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; +const char MSG_PRESS_DE[] PROGMEM = "und Knopf druecken"; const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRESS_EN + MSG_PRESS_EN, + MSG_PRESS_CZ, + MSG_PRESS_IT, + MSG_PRESS_ES, + MSG_PRESS_PL, + MSG_PRESS_DE }; const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; -const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1] PROGMEM = { MSG_PRINTER_DISCONNECTED_EN }; const char MSG_PRINT_ABORTED_EN[] PROGMEM = "Print aborted"; +const char MSG_PRINT_ABORTED_CZ[] PROGMEM = "Tisk prerusen"; +const char MSG_PRINT_ABORTED_IT[] PROGMEM = "Stampa abortita"; +const char MSG_PRINT_ABORTED_ES[] PROGMEM = "Impresion cancelada"; +const char MSG_PRINT_ABORTED_PL[] PROGMEM = "Druk przerwany"; +const char MSG_PRINT_ABORTED_DE[] PROGMEM = "Druck abgebrochen"; const char * const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_ABORTED_EN + MSG_PRINT_ABORTED_EN, + MSG_PRINT_ABORTED_CZ, + MSG_PRINT_ABORTED_IT, + MSG_PRINT_ABORTED_ES, + MSG_PRINT_ABORTED_PL, + MSG_PRINT_ABORTED_DE }; const char MSG_PRINT_PAUSED_EN[] PROGMEM = "Print paused"; +const char MSG_PRINT_PAUSED_CZ[] PROGMEM = "Tisk pozastaven"; +const char MSG_PRINT_PAUSED_IT[] PROGMEM = "Stampa in pausa"; +const char MSG_PRINT_PAUSED_ES[] PROGMEM = "Impresion en pausa"; +const char MSG_PRINT_PAUSED_PL[] PROGMEM = "Druk zatrzymany"; +const char MSG_PRINT_PAUSED_DE[] PROGMEM = "Druck pausiert"; const char * const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_PRINT_PAUSED_EN + MSG_PRINT_PAUSED_EN, + MSG_PRINT_PAUSED_CZ, + MSG_PRINT_PAUSED_IT, + MSG_PRINT_PAUSED_ES, + MSG_PRINT_PAUSED_PL, + MSG_PRINT_PAUSED_DE }; const char MSG_PRUSA3D_EN[] PROGMEM = "prusa3d.com"; +const char MSG_PRUSA3D_CZ[] PROGMEM = "prusa3d.cz"; +const char MSG_PRUSA3D_PL[] PROGMEM = "prusa3d.cz"; const char * const MSG_PRUSA3D_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_EN, + MSG_PRUSA3D_CZ, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_EN, + MSG_PRUSA3D_PL, MSG_PRUSA3D_EN }; const char MSG_PRUSA3D_FORUM_EN[] PROGMEM = "forum.prusa3d.com"; +const char MSG_PRUSA3D_FORUM_CZ[] PROGMEM = "forum.prusa3d.cz"; +const char MSG_PRUSA3D_FORUM_PL[] PROGMEM = "forum.prusa3d.cz"; const char * const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_CZ, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_EN, + MSG_PRUSA3D_FORUM_PL, MSG_PRUSA3D_FORUM_EN }; const char MSG_PRUSA3D_HOWTO_EN[] PROGMEM = "howto.prusa3d.com"; +const char MSG_PRUSA3D_HOWTO_CZ[] PROGMEM = "howto.prusa3d.cz"; +const char MSG_PRUSA3D_HOWTO_PL[] PROGMEM = "howto.prusa3d.cz"; const char * const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_CZ, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_EN, + MSG_PRUSA3D_HOWTO_PL, MSG_PRUSA3D_HOWTO_EN }; const char MSG_REBOOT_EN[] PROGMEM = "Reboot the printer"; +const char MSG_REBOOT_CZ[] PROGMEM = "Restartujte tiskarnu"; +const char MSG_REBOOT_IT[] PROGMEM = "Riavvia stampante"; +const char MSG_REBOOT_ES[] PROGMEM = "Reiniciar impresora"; +const char MSG_REBOOT_PL[] PROGMEM = "Restart drukarki"; +const char MSG_REBOOT_DE[] PROGMEM = "Zum Uebernehmen "; const char * const MSG_REBOOT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_REBOOT_EN + MSG_REBOOT_EN, + MSG_REBOOT_CZ, + MSG_REBOOT_IT, + MSG_REBOOT_ES, + MSG_REBOOT_PL, + MSG_REBOOT_DE }; const char MSG_RECOVERING_PRINT_EN[] PROGMEM = "Recovering print "; -const char * const MSG_RECOVERING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RECOVERING_PRINT_LANG_TABLE[1] PROGMEM = { MSG_RECOVERING_PRINT_EN }; const char MSG_RECOVER_PRINT_EN[] PROGMEM = "Blackout occurred. Recover print?"; -const char * const MSG_RECOVER_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RECOVER_PRINT_LANG_TABLE[1] PROGMEM = { MSG_RECOVER_PRINT_EN }; -const char MSG_CRASH_DETECTED_EN[] PROGMEM = "Crash detected. Continue printing?"; -const char * const MSG_CRASH_DETECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_CRASH_DETECTED_EN -}; - const char MSG_RECTRACT_EN[] PROGMEM = "Rectract"; -const char * const MSG_RECTRACT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RECTRACT_LANG_TABLE[1] PROGMEM = { MSG_RECTRACT_EN }; const char MSG_REFRESH_EN[] PROGMEM = "\xF8" "Refresh"; -const char * const MSG_REFRESH_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { MSG_REFRESH_EN }; const char MSG_RESEND_EN[] PROGMEM = "Resend: "; -const char * const MSG_RESEND_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { MSG_RESEND_EN }; const char MSG_RESET_CALIBRATE_E_EN[] PROGMEM = "Reset E Cal."; -const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RESET_CALIBRATE_E_LANG_TABLE[1] PROGMEM = { MSG_RESET_CALIBRATE_E_EN }; const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; -const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { MSG_RESTORE_FAILSAFE_EN }; const char MSG_RESUME_PRINT_EN[] PROGMEM = "Resume print"; +const char MSG_RESUME_PRINT_CZ[] PROGMEM = "Pokracovat"; +const char MSG_RESUME_PRINT_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUME_PRINT_ES[] PROGMEM = "Reanudar impres."; +const char MSG_RESUME_PRINT_PL[] PROGMEM = "Kontynuowac"; +const char MSG_RESUME_PRINT_DE[] PROGMEM = "Fortsetzen"; const char * const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUME_PRINT_EN + MSG_RESUME_PRINT_EN, + MSG_RESUME_PRINT_CZ, + MSG_RESUME_PRINT_IT, + MSG_RESUME_PRINT_ES, + MSG_RESUME_PRINT_PL, + MSG_RESUME_PRINT_DE }; const char MSG_RESUMING_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_CZ[] PROGMEM = "Obnoveni tisku"; +const char MSG_RESUMING_IT[] PROGMEM = "Riprendi stampa"; +const char MSG_RESUMING_ES[] PROGMEM = "Resumiendo impresion"; +const char MSG_RESUMING_PL[] PROGMEM = "Wznowienie druku"; +const char MSG_RESUMING_DE[] PROGMEM = "Druck fortgesetzt"; const char * const MSG_RESUMING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_EN + MSG_RESUMING_EN, + MSG_RESUMING_CZ, + MSG_RESUMING_IT, + MSG_RESUMING_ES, + MSG_RESUMING_PL, + MSG_RESUMING_DE }; const char MSG_RESUMING_PRINT_EN[] PROGMEM = "Resuming print"; +const char MSG_RESUMING_PRINT_CZ[] PROGMEM = "Obnovovani tisku"; +const char MSG_RESUMING_PRINT_IT[] PROGMEM = "Stampa in ripresa"; +const char MSG_RESUMING_PRINT_ES[] PROGMEM = "Reanudar impresion"; +const char MSG_RESUMING_PRINT_PL[] PROGMEM = "Wznawianie druku"; +const char MSG_RESUMING_PRINT_DE[] PROGMEM = "Druck weitergehen"; const char * const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_RESUMING_PRINT_EN + MSG_RESUMING_PRINT_EN, + MSG_RESUMING_PRINT_CZ, + MSG_RESUMING_PRINT_IT, + MSG_RESUMING_PRINT_ES, + MSG_RESUMING_PRINT_PL, + MSG_RESUMING_PRINT_DE }; const char MSG_SD_CANT_ENTER_SUBDIR_EN[] PROGMEM = "Cannot enter subdir: "; -const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1] PROGMEM = { MSG_SD_CANT_ENTER_SUBDIR_EN }; const char MSG_SD_CANT_OPEN_SUBDIR_EN[] PROGMEM = "Cannot open subdir"; -const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1] PROGMEM = { MSG_SD_CANT_OPEN_SUBDIR_EN }; const char MSG_SD_CARD_OK_EN[] PROGMEM = "SD card ok"; -const char * const MSG_SD_CARD_OK_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_CARD_OK_LANG_TABLE[1] PROGMEM = { MSG_SD_CARD_OK_EN }; const char MSG_SD_ERR_WRITE_TO_FILE_EN[] PROGMEM = "error writing to file"; -const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_ERR_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { MSG_SD_ERR_WRITE_TO_FILE_EN }; const char MSG_SD_FILE_OPENED_EN[] PROGMEM = "File opened: "; -const char * const MSG_SD_FILE_OPENED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_FILE_OPENED_LANG_TABLE[1] PROGMEM = { MSG_SD_FILE_OPENED_EN }; const char MSG_SD_FILE_SELECTED_EN[] PROGMEM = "File selected"; -const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_FILE_SELECTED_LANG_TABLE[1] PROGMEM = { MSG_SD_FILE_SELECTED_EN }; const char MSG_SD_INIT_FAIL_EN[] PROGMEM = "SD init fail"; -const char * const MSG_SD_INIT_FAIL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_INIT_FAIL_LANG_TABLE[1] PROGMEM = { MSG_SD_INIT_FAIL_EN }; const char MSG_SD_INSERTED_EN[] PROGMEM = "Card inserted"; +const char MSG_SD_INSERTED_CZ[] PROGMEM = "Karta vlozena"; +const char MSG_SD_INSERTED_IT[] PROGMEM = "SD inserita"; +const char MSG_SD_INSERTED_ES[] PROGMEM = "Tarjeta insertada"; +const char MSG_SD_INSERTED_PL[] PROGMEM = "Karta wlozona"; +const char MSG_SD_INSERTED_DE[] PROGMEM = "SD eingesetzt"; const char * const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_INSERTED_EN + MSG_SD_INSERTED_EN, + MSG_SD_INSERTED_CZ, + MSG_SD_INSERTED_IT, + MSG_SD_INSERTED_ES, + MSG_SD_INSERTED_PL, + MSG_SD_INSERTED_DE }; const char MSG_SD_NOT_PRINTING_EN[] PROGMEM = "Not SD printing"; -const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_NOT_PRINTING_LANG_TABLE[1] PROGMEM = { MSG_SD_NOT_PRINTING_EN }; const char MSG_SD_OPENROOT_FAIL_EN[] PROGMEM = "openRoot failed"; -const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1] PROGMEM = { MSG_SD_OPENROOT_FAIL_EN }; const char MSG_SD_OPEN_FILE_FAIL_EN[] PROGMEM = "open failed, File: "; -const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1] PROGMEM = { MSG_SD_OPEN_FILE_FAIL_EN }; const char MSG_SD_PRINTING_BYTE_EN[] PROGMEM = "SD printing byte "; -const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_PRINTING_BYTE_LANG_TABLE[1] PROGMEM = { MSG_SD_PRINTING_BYTE_EN }; const char MSG_SD_REMOVED_EN[] PROGMEM = "Card removed"; +const char MSG_SD_REMOVED_CZ[] PROGMEM = "Karta vyjmuta"; +const char MSG_SD_REMOVED_IT[] PROGMEM = "SD rimossa"; +const char MSG_SD_REMOVED_ES[] PROGMEM = "Tarjeta retirada"; +const char MSG_SD_REMOVED_PL[] PROGMEM = "Karta wyjeta"; +const char MSG_SD_REMOVED_DE[] PROGMEM = "SD entfernt "; const char * const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SD_REMOVED_EN + MSG_SD_REMOVED_EN, + MSG_SD_REMOVED_CZ, + MSG_SD_REMOVED_IT, + MSG_SD_REMOVED_ES, + MSG_SD_REMOVED_PL, + MSG_SD_REMOVED_DE }; const char MSG_SD_SIZE_EN[] PROGMEM = " Size: "; -const char * const MSG_SD_SIZE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_SIZE_LANG_TABLE[1] PROGMEM = { MSG_SD_SIZE_EN }; const char MSG_SD_VOL_INIT_FAIL_EN[] PROGMEM = "volume.init failed"; -const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1] PROGMEM = { MSG_SD_VOL_INIT_FAIL_EN }; const char MSG_SD_WORKDIR_FAIL_EN[] PROGMEM = "workDir open failed"; -const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1] PROGMEM = { MSG_SD_WORKDIR_FAIL_EN }; const char MSG_SD_WRITE_TO_FILE_EN[] PROGMEM = "Writing to file: "; -const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = { MSG_SD_WRITE_TO_FILE_EN }; const char MSG_SELFTEST_EN[] PROGMEM = "Selftest "; +const char MSG_SELFTEST_IT[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_ES[] PROGMEM = "Autotest"; +const char MSG_SELFTEST_DE[] PROGMEM = "Selbsttest "; const char * const MSG_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EN + MSG_SELFTEST_EN, + MSG_SELFTEST_EN, + MSG_SELFTEST_IT, + MSG_SELFTEST_ES, + MSG_SELFTEST_EN, + MSG_SELFTEST_DE }; const char MSG_SELFTEST_AXIS_EN[] PROGMEM = "Axis"; -const char * const MSG_SELFTEST_AXIS_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SELFTEST_AXIS_LANG_TABLE[1] PROGMEM = { MSG_SELFTEST_AXIS_EN }; const char MSG_SELFTEST_AXIS_LENGTH_EN[] PROGMEM = "Axis length"; -const char * const MSG_SELFTEST_AXIS_LENGTH_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SELFTEST_AXIS_LENGTH_LANG_TABLE[1] PROGMEM = { MSG_SELFTEST_AXIS_LENGTH_EN }; const char MSG_SELFTEST_BEDHEATER_EN[] PROGMEM = "Bed / Heater"; +const char MSG_SELFTEST_BEDHEATER_IT[] PROGMEM = "Letto/Riscald."; +const char MSG_SELFTEST_BEDHEATER_ES[] PROGMEM = "Cama/Calentador"; const char * const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_EN, + MSG_SELFTEST_BEDHEATER_IT, + MSG_SELFTEST_BEDHEATER_ES, + MSG_SELFTEST_BEDHEATER_EN, MSG_SELFTEST_BEDHEATER_EN }; const char MSG_SELFTEST_CHECK_ALLCORRECT_EN[] PROGMEM = "All correct "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_CZ[] PROGMEM = "Vse OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_IT[] PROGMEM = "Nessun errore"; +const char MSG_SELFTEST_CHECK_ALLCORRECT_ES[] PROGMEM = "Todo bie "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_PL[] PROGMEM = "Wszystko OK "; +const char MSG_SELFTEST_CHECK_ALLCORRECT_DE[] PROGMEM = "Alles richtig "; const char * const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ALLCORRECT_EN + MSG_SELFTEST_CHECK_ALLCORRECT_EN, + MSG_SELFTEST_CHECK_ALLCORRECT_CZ, + MSG_SELFTEST_CHECK_ALLCORRECT_IT, + MSG_SELFTEST_CHECK_ALLCORRECT_ES, + MSG_SELFTEST_CHECK_ALLCORRECT_PL, + MSG_SELFTEST_CHECK_ALLCORRECT_DE }; const char MSG_SELFTEST_CHECK_BED_EN[] PROGMEM = "Checking bed "; +const char MSG_SELFTEST_CHECK_BED_CZ[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_IT[] PROGMEM = "Verifica letto"; +const char MSG_SELFTEST_CHECK_BED_ES[] PROGMEM = "Control de cama"; +const char MSG_SELFTEST_CHECK_BED_PL[] PROGMEM = "Kontrola bed "; +const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pr\x81fe Bed "; const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_BED_EN + MSG_SELFTEST_CHECK_BED_EN, + MSG_SELFTEST_CHECK_BED_CZ, + MSG_SELFTEST_CHECK_BED_IT, + MSG_SELFTEST_CHECK_BED_ES, + MSG_SELFTEST_CHECK_BED_PL, + MSG_SELFTEST_CHECK_BED_DE }; const char MSG_SELFTEST_CHECK_ENDSTOPS_EN[] PROGMEM = "Checking endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; +const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_ENDSTOPS_EN + MSG_SELFTEST_CHECK_ENDSTOPS_EN, + MSG_SELFTEST_CHECK_ENDSTOPS_CZ, + MSG_SELFTEST_CHECK_ENDSTOPS_IT, + MSG_SELFTEST_CHECK_ENDSTOPS_ES, + MSG_SELFTEST_CHECK_ENDSTOPS_PL, + MSG_SELFTEST_CHECK_ENDSTOPS_DE }; const char MSG_SELFTEST_CHECK_HOTEND_EN[] PROGMEM = "Checking hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_CZ[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_IT[] PROGMEM = "Verifica ugello"; +const char MSG_SELFTEST_CHECK_HOTEND_ES[] PROGMEM = "Control hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_PL[] PROGMEM = "Kontrola hotend "; +const char MSG_SELFTEST_CHECK_HOTEND_DE[] PROGMEM = "Pruefe Hotend"; const char * const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_HOTEND_EN + MSG_SELFTEST_CHECK_HOTEND_EN, + MSG_SELFTEST_CHECK_HOTEND_CZ, + MSG_SELFTEST_CHECK_HOTEND_IT, + MSG_SELFTEST_CHECK_HOTEND_ES, + MSG_SELFTEST_CHECK_HOTEND_PL, + MSG_SELFTEST_CHECK_HOTEND_DE }; const char MSG_SELFTEST_CHECK_X_EN[] PROGMEM = "Checking X axis "; +const char MSG_SELFTEST_CHECK_X_CZ[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_IT[] PROGMEM = "Verifica asse X"; +const char MSG_SELFTEST_CHECK_X_ES[] PROGMEM = "Control del eje X"; +const char MSG_SELFTEST_CHECK_X_PL[] PROGMEM = "Kontrola X axis "; +const char MSG_SELFTEST_CHECK_X_DE[] PROGMEM = "Pruefe X Achse "; const char * const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_X_EN + MSG_SELFTEST_CHECK_X_EN, + MSG_SELFTEST_CHECK_X_CZ, + MSG_SELFTEST_CHECK_X_IT, + MSG_SELFTEST_CHECK_X_ES, + MSG_SELFTEST_CHECK_X_PL, + MSG_SELFTEST_CHECK_X_DE }; const char MSG_SELFTEST_CHECK_Y_EN[] PROGMEM = "Checking Y axis "; +const char MSG_SELFTEST_CHECK_Y_CZ[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_IT[] PROGMEM = "Verifica asse Y"; +const char MSG_SELFTEST_CHECK_Y_ES[] PROGMEM = "Control del eje Y"; +const char MSG_SELFTEST_CHECK_Y_PL[] PROGMEM = "Kontrola Y axis "; +const char MSG_SELFTEST_CHECK_Y_DE[] PROGMEM = "Pruefe Y Achse "; const char * const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Y_EN + MSG_SELFTEST_CHECK_Y_EN, + MSG_SELFTEST_CHECK_Y_CZ, + MSG_SELFTEST_CHECK_Y_IT, + MSG_SELFTEST_CHECK_Y_ES, + MSG_SELFTEST_CHECK_Y_PL, + MSG_SELFTEST_CHECK_Y_DE }; const char MSG_SELFTEST_CHECK_Z_EN[] PROGMEM = "Checking Z axis "; +const char MSG_SELFTEST_CHECK_Z_CZ[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_IT[] PROGMEM = "Verifica asse Z"; +const char MSG_SELFTEST_CHECK_Z_ES[] PROGMEM = "Control del eje Z"; +const char MSG_SELFTEST_CHECK_Z_PL[] PROGMEM = "Kontrola Z axis "; +const char MSG_SELFTEST_CHECK_Z_DE[] PROGMEM = "Pruefe Z Achse "; const char * const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_CHECK_Z_EN + MSG_SELFTEST_CHECK_Z_EN, + MSG_SELFTEST_CHECK_Z_CZ, + MSG_SELFTEST_CHECK_Z_IT, + MSG_SELFTEST_CHECK_Z_ES, + MSG_SELFTEST_CHECK_Z_PL, + MSG_SELFTEST_CHECK_Z_DE }; const char MSG_SELFTEST_COOLING_FAN_EN[] PROGMEM = "Front print fan?";; +const char MSG_SELFTEST_COOLING_FAN_CZ[] PROGMEM = "Predni tiskovy vent?";; +const char MSG_SELFTEST_COOLING_FAN_IT[] PROGMEM = "Vent di stampa ant.?";; +const char MSG_SELFTEST_COOLING_FAN_ES[] PROGMEM = "Vent. al frente?";; +const char MSG_SELFTEST_COOLING_FAN_PL[] PROGMEM = "Przodni went. druku?";; +const char MSG_SELFTEST_COOLING_FAN_DE[] PROGMEM = "Vorderer Luefter?"; const char * const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_COOLING_FAN_EN + MSG_SELFTEST_COOLING_FAN_EN, + MSG_SELFTEST_COOLING_FAN_CZ, + MSG_SELFTEST_COOLING_FAN_IT, + MSG_SELFTEST_COOLING_FAN_ES, + MSG_SELFTEST_COOLING_FAN_PL, + MSG_SELFTEST_COOLING_FAN_DE }; const char MSG_SELFTEST_ENDSTOP_EN[] PROGMEM = "Endstop"; +const char MSG_SELFTEST_ENDSTOP_IT[] PROGMEM = "Finecorsa"; +const char MSG_SELFTEST_ENDSTOP_ES[] PROGMEM = "Tope final"; const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_EN, + MSG_SELFTEST_ENDSTOP_IT, + MSG_SELFTEST_ENDSTOP_ES, + MSG_SELFTEST_ENDSTOP_EN, MSG_SELFTEST_ENDSTOP_EN }; const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; +const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; +const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; +const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOPS_EN + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_IT, + MSG_SELFTEST_ENDSTOPS_ES, + MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_DE }; const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Ende nicht getrof."; const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ENDSTOP_NOTHIT_EN + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_IT, + MSG_SELFTEST_ENDSTOP_NOTHIT_ES, + MSG_SELFTEST_ENDSTOP_NOTHIT_EN, + MSG_SELFTEST_ENDSTOP_NOTHIT_DE }; const char MSG_SELFTEST_ERROR_EN[] PROGMEM = "Selftest error !"; +const char MSG_SELFTEST_ERROR_IT[] PROGMEM = "Autotest negativo"; +const char MSG_SELFTEST_ERROR_ES[] PROGMEM = "Autotest error!"; +const char MSG_SELFTEST_ERROR_DE[] PROGMEM = "Selbtest Fehler!"; const char * const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_ERROR_EN + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_IT, + MSG_SELFTEST_ERROR_ES, + MSG_SELFTEST_ERROR_EN, + MSG_SELFTEST_ERROR_DE }; const char MSG_SELFTEST_EXTRUDER_FAN_EN[] PROGMEM = "Left hotend fan?";; +const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; +const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; +const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; +const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; +const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?"; const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_EXTRUDER_FAN_EN + MSG_SELFTEST_EXTRUDER_FAN_EN, + MSG_SELFTEST_EXTRUDER_FAN_CZ, + MSG_SELFTEST_EXTRUDER_FAN_IT, + MSG_SELFTEST_EXTRUDER_FAN_ES, + MSG_SELFTEST_EXTRUDER_FAN_PL, + MSG_SELFTEST_EXTRUDER_FAN_DE }; const char MSG_SELFTEST_FAILED_EN[] PROGMEM = "Selftest failed "; +const char MSG_SELFTEST_FAILED_CZ[] PROGMEM = "Selftest selhal "; +const char MSG_SELFTEST_FAILED_IT[] PROGMEM = "Autotest fallito"; +const char MSG_SELFTEST_FAILED_ES[] PROGMEM = "Autotest fallado"; +const char MSG_SELFTEST_FAILED_PL[] PROGMEM = "Selftest nieudany"; +const char MSG_SELFTEST_FAILED_DE[] PROGMEM = "Selbsttest misslung."; const char * const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAILED_EN + MSG_SELFTEST_FAILED_EN, + MSG_SELFTEST_FAILED_CZ, + MSG_SELFTEST_FAILED_IT, + MSG_SELFTEST_FAILED_ES, + MSG_SELFTEST_FAILED_PL, + MSG_SELFTEST_FAILED_DE }; const char MSG_SELFTEST_FAN_EN[] PROGMEM = "Fan test";; +const char MSG_SELFTEST_FAN_CZ[] PROGMEM = "Test ventilatoru";; +const char MSG_SELFTEST_FAN_IT[] PROGMEM = "Prova del ventilator";; +const char MSG_SELFTEST_FAN_ES[] PROGMEM = "Test del ventilador";; +const char MSG_SELFTEST_FAN_PL[] PROGMEM = "Test wentylatora";; +const char MSG_SELFTEST_FAN_DE[] PROGMEM = "Lueftertest"; const char * const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_EN + MSG_SELFTEST_FAN_EN, + MSG_SELFTEST_FAN_CZ, + MSG_SELFTEST_FAN_IT, + MSG_SELFTEST_FAN_ES, + MSG_SELFTEST_FAN_PL, + MSG_SELFTEST_FAN_DE }; const char MSG_SELFTEST_FAN_NO_EN[] PROGMEM = "Not spinning";; +const char MSG_SELFTEST_FAN_NO_CZ[] PROGMEM = "Netoci se";; +const char MSG_SELFTEST_FAN_NO_IT[] PROGMEM = "Non si gira";; +const char MSG_SELFTEST_FAN_NO_ES[] PROGMEM = "Ventilador no gira";; +const char MSG_SELFTEST_FAN_NO_PL[] PROGMEM = "Nekreci sie";; +const char MSG_SELFTEST_FAN_NO_DE[] PROGMEM = "Dreht nicht"; const char * const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_NO_EN + MSG_SELFTEST_FAN_NO_EN, + MSG_SELFTEST_FAN_NO_CZ, + MSG_SELFTEST_FAN_NO_IT, + MSG_SELFTEST_FAN_NO_ES, + MSG_SELFTEST_FAN_NO_PL, + MSG_SELFTEST_FAN_NO_DE }; const char MSG_SELFTEST_FAN_YES_EN[] PROGMEM = "Spinning";; +const char MSG_SELFTEST_FAN_YES_CZ[] PROGMEM = "Toci se";; +const char MSG_SELFTEST_FAN_YES_IT[] PROGMEM = "Gira";; +const char MSG_SELFTEST_FAN_YES_ES[] PROGMEM = "Ventilador gira";; +const char MSG_SELFTEST_FAN_YES_PL[] PROGMEM = "Kreci sie";; +const char MSG_SELFTEST_FAN_YES_DE[] PROGMEM = "Dreht"; const char * const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_FAN_YES_EN + MSG_SELFTEST_FAN_YES_EN, + MSG_SELFTEST_FAN_YES_CZ, + MSG_SELFTEST_FAN_YES_IT, + MSG_SELFTEST_FAN_YES_ES, + MSG_SELFTEST_FAN_YES_PL, + MSG_SELFTEST_FAN_YES_DE }; const char MSG_SELFTEST_HEATERTHERMISTOR_EN[] PROGMEM = "Heater/Thermistor"; +const char MSG_SELFTEST_HEATERTHERMISTOR_IT[] PROGMEM = "Riscald./Termist."; +const char MSG_SELFTEST_HEATERTHERMISTOR_ES[] PROGMEM = "Calent./Termistor"; const char * const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_EN, + MSG_SELFTEST_HEATERTHERMISTOR_IT, + MSG_SELFTEST_HEATERTHERMISTOR_ES, + MSG_SELFTEST_HEATERTHERMISTOR_EN, MSG_SELFTEST_HEATERTHERMISTOR_EN }; const char MSG_SELFTEST_MOTOR_EN[] PROGMEM = "Motor"; +const char MSG_SELFTEST_MOTOR_IT[] PROGMEM = "Motore"; +const char MSG_SELFTEST_MOTOR_PL[] PROGMEM = "Silnik"; const char * const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_IT, + MSG_SELFTEST_MOTOR_EN, + MSG_SELFTEST_MOTOR_PL, MSG_SELFTEST_MOTOR_EN }; const char MSG_SELFTEST_NOTCONNECTED_EN[] PROGMEM = "Not connected"; +const char MSG_SELFTEST_NOTCONNECTED_CZ[] PROGMEM = "Nezapojeno "; +const char MSG_SELFTEST_NOTCONNECTED_IT[] PROGMEM = "Non connesso"; +const char MSG_SELFTEST_NOTCONNECTED_ES[] PROGMEM = "No hay conexion "; +const char MSG_SELFTEST_NOTCONNECTED_PL[] PROGMEM = "Nie podlaczono "; +const char MSG_SELFTEST_NOTCONNECTED_DE[] PROGMEM = "Nicht angeschlossen"; const char * const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_NOTCONNECTED_EN + MSG_SELFTEST_NOTCONNECTED_EN, + MSG_SELFTEST_NOTCONNECTED_CZ, + MSG_SELFTEST_NOTCONNECTED_IT, + MSG_SELFTEST_NOTCONNECTED_ES, + MSG_SELFTEST_NOTCONNECTED_PL, + MSG_SELFTEST_NOTCONNECTED_DE }; const char MSG_SELFTEST_OK_EN[] PROGMEM = "Self test OK"; +const char MSG_SELFTEST_OK_IT[] PROGMEM = "Autotest OK"; +const char MSG_SELFTEST_OK_DE[] PROGMEM = "Selbsttest OK"; const char * const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_OK_EN + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_IT, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_EN, + MSG_SELFTEST_OK_DE }; const char MSG_SELFTEST_PLEASECHECK_EN[] PROGMEM = "Please check :"; +const char MSG_SELFTEST_PLEASECHECK_CZ[] PROGMEM = "Zkontrolujte :"; +const char MSG_SELFTEST_PLEASECHECK_IT[] PROGMEM = "Verificare:"; +const char MSG_SELFTEST_PLEASECHECK_ES[] PROGMEM = "Controla :"; +const char MSG_SELFTEST_PLEASECHECK_PL[] PROGMEM = "Skontroluj :"; +const char MSG_SELFTEST_PLEASECHECK_DE[] PROGMEM = "Bitte pruefe:"; const char * const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_PLEASECHECK_EN + MSG_SELFTEST_PLEASECHECK_EN, + MSG_SELFTEST_PLEASECHECK_CZ, + MSG_SELFTEST_PLEASECHECK_IT, + MSG_SELFTEST_PLEASECHECK_ES, + MSG_SELFTEST_PLEASECHECK_PL, + MSG_SELFTEST_PLEASECHECK_DE }; const char MSG_SELFTEST_START_EN[] PROGMEM = "Self test start "; +const char MSG_SELFTEST_START_IT[] PROGMEM = "Avvia autotest"; +const char MSG_SELFTEST_START_ES[] PROGMEM = "Autotest salida"; +const char MSG_SELFTEST_START_DE[] PROGMEM = "Selbsttest start "; const char * const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_START_EN + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_IT, + MSG_SELFTEST_START_ES, + MSG_SELFTEST_START_EN, + MSG_SELFTEST_START_DE }; const char MSG_SELFTEST_WIRINGERROR_EN[] PROGMEM = "Wiring error"; +const char MSG_SELFTEST_WIRINGERROR_CZ[] PROGMEM = "Chyba zapojeni"; +const char MSG_SELFTEST_WIRINGERROR_IT[] PROGMEM = "Errore cablaggio"; +const char MSG_SELFTEST_WIRINGERROR_ES[] PROGMEM = "Error de conexion"; +const char MSG_SELFTEST_WIRINGERROR_PL[] PROGMEM = "Blad polaczenia"; +const char MSG_SELFTEST_WIRINGERROR_DE[] PROGMEM = "Verdrahtungfehler"; const char * const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SELFTEST_WIRINGERROR_EN + MSG_SELFTEST_WIRINGERROR_EN, + MSG_SELFTEST_WIRINGERROR_CZ, + MSG_SELFTEST_WIRINGERROR_IT, + MSG_SELFTEST_WIRINGERROR_ES, + MSG_SELFTEST_WIRINGERROR_PL, + MSG_SELFTEST_WIRINGERROR_DE }; const char MSG_SERIAL_ERROR_MENU_STRUCTURE_EN[] PROGMEM = "Error in menu structure"; -const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1] PROGMEM = { MSG_SERIAL_ERROR_MENU_STRUCTURE_EN }; const char MSG_SETTINGS_EN[] PROGMEM = "Settings"; +const char MSG_SETTINGS_CZ[] PROGMEM = "Nastaveni"; +const char MSG_SETTINGS_IT[] PROGMEM = "Impostazioni"; +const char MSG_SETTINGS_ES[] PROGMEM = "Configuracion"; +const char MSG_SETTINGS_PL[] PROGMEM = "Ustawienia"; +const char MSG_SETTINGS_DE[] PROGMEM = "Einstellungen"; const char * const MSG_SETTINGS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SETTINGS_EN + MSG_SETTINGS_EN, + MSG_SETTINGS_CZ, + MSG_SETTINGS_IT, + MSG_SETTINGS_ES, + MSG_SETTINGS_PL, + MSG_SETTINGS_DE }; const char MSG_SET_HOME_OFFSETS_EN[] PROGMEM = "Set home offsets"; -const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SET_HOME_OFFSETS_LANG_TABLE[1] PROGMEM = { MSG_SET_HOME_OFFSETS_EN }; const char MSG_SET_ORIGIN_EN[] PROGMEM = "Set origin"; -const char * const MSG_SET_ORIGIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SET_ORIGIN_LANG_TABLE[1] PROGMEM = { MSG_SET_ORIGIN_EN }; const char MSG_SET_TEMPERATURE_EN[] PROGMEM = "Set temperature:"; +const char MSG_SET_TEMPERATURE_CZ[] PROGMEM = "Nastavte teplotu:"; +const char MSG_SET_TEMPERATURE_IT[] PROGMEM = "Imposta temperatura"; +const char MSG_SET_TEMPERATURE_ES[] PROGMEM = "Establecer temp.:"; +const char MSG_SET_TEMPERATURE_PL[] PROGMEM = "Ustawic temperature"; +const char MSG_SET_TEMPERATURE_DE[] PROGMEM = "Temp. einsetzen"; const char * const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SET_TEMPERATURE_EN + MSG_SET_TEMPERATURE_EN, + MSG_SET_TEMPERATURE_CZ, + MSG_SET_TEMPERATURE_IT, + MSG_SET_TEMPERATURE_ES, + MSG_SET_TEMPERATURE_PL, + MSG_SET_TEMPERATURE_DE }; const char MSG_SHOW_END_STOPS_EN[] PROGMEM = "Show end stops"; +const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; +const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; +const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; +const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; +const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Endschalter Stat."; const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SHOW_END_STOPS_EN + MSG_SHOW_END_STOPS_EN, + MSG_SHOW_END_STOPS_CZ, + MSG_SHOW_END_STOPS_IT, + MSG_SHOW_END_STOPS_ES, + MSG_SHOW_END_STOPS_PL, + MSG_SHOW_END_STOPS_DE }; 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 [forte]"; +const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [rend.pleno]"; +const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; +const char MSG_SILENT_MODE_OFF_DE[] PROGMEM = "Mode [Hohe Leist]"; const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_OFF_EN + MSG_SILENT_MODE_OFF_EN, + MSG_SILENT_MODE_OFF_CZ, + MSG_SILENT_MODE_OFF_IT, + MSG_SILENT_MODE_OFF_ES, + MSG_SILENT_MODE_OFF_PL, + MSG_SILENT_MODE_OFF_DE }; const char MSG_SILENT_MODE_ON_EN[] PROGMEM = "Mode [silent]"; +const char MSG_SILENT_MODE_ON_CZ[] PROGMEM = "Mod [tichy]"; +const char MSG_SILENT_MODE_ON_IT[] PROGMEM = "Modo [silenzioso]"; +const char MSG_SILENT_MODE_ON_ES[] PROGMEM = "Modo [silencio]"; +const char MSG_SILENT_MODE_ON_PL[] PROGMEM = "Mod [cichy]"; +const char MSG_SILENT_MODE_ON_DE[] PROGMEM = "Mode [leise]"; const char * const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SILENT_MODE_ON_EN + MSG_SILENT_MODE_ON_EN, + MSG_SILENT_MODE_ON_CZ, + MSG_SILENT_MODE_ON_IT, + MSG_SILENT_MODE_ON_ES, + MSG_SILENT_MODE_ON_PL, + MSG_SILENT_MODE_ON_DE }; const char MSG_SOFTWARE_RESET_EN[] PROGMEM = " Software Reset"; -const char * const MSG_SOFTWARE_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_SOFTWARE_RESET_LANG_TABLE[1] PROGMEM = { MSG_SOFTWARE_RESET_EN }; const char MSG_SPEED_EN[] PROGMEM = "Speed"; +const char MSG_SPEED_CZ[] PROGMEM = "Rychlost"; +const char MSG_SPEED_IT[] PROGMEM = "Velocita"; +const char MSG_SPEED_ES[] PROGMEM = "Velocidad"; +const char MSG_SPEED_PL[] PROGMEM = "Predkosc"; +const char MSG_SPEED_DE[] PROGMEM = "Geschwindigkeit"; const char * const MSG_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SPEED_EN + MSG_SPEED_EN, + MSG_SPEED_CZ, + MSG_SPEED_IT, + MSG_SPEED_ES, + MSG_SPEED_PL, + MSG_SPEED_DE }; const char MSG_STACK_ERROR_EN[] PROGMEM = "Error - static memory has been overwritten"; -const char * const MSG_STACK_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_STACK_ERROR_LANG_TABLE[1] PROGMEM = { MSG_STACK_ERROR_EN }; const char MSG_STATISTICS_EN[] PROGMEM = "Statistics "; +const char MSG_STATISTICS_CZ[] PROGMEM = "Statistika "; +const char MSG_STATISTICS_IT[] PROGMEM = "Statistiche"; +const char MSG_STATISTICS_ES[] PROGMEM = "Estadistica "; +const char MSG_STATISTICS_PL[] PROGMEM = "Statystyka "; +const char MSG_STATISTICS_DE[] PROGMEM = "Statistiken "; const char * const MSG_STATISTICS_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATISTICS_EN + MSG_STATISTICS_EN, + MSG_STATISTICS_CZ, + MSG_STATISTICS_IT, + MSG_STATISTICS_ES, + MSG_STATISTICS_PL, + MSG_STATISTICS_DE }; const char MSG_STATS_FILAMENTUSED_EN[] PROGMEM = "Filament used: "; +const char MSG_STATS_FILAMENTUSED_CZ[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_IT[] PROGMEM = "Filamento usato:"; +const char MSG_STATS_FILAMENTUSED_ES[] PROGMEM = "Filamento : "; +const char MSG_STATS_FILAMENTUSED_PL[] PROGMEM = "Filament : "; +const char MSG_STATS_FILAMENTUSED_DE[] PROGMEM = "Filamentverbrauch:"; const char * const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_FILAMENTUSED_EN + MSG_STATS_FILAMENTUSED_EN, + MSG_STATS_FILAMENTUSED_CZ, + MSG_STATS_FILAMENTUSED_IT, + MSG_STATS_FILAMENTUSED_ES, + MSG_STATS_FILAMENTUSED_PL, + MSG_STATS_FILAMENTUSED_DE }; const char MSG_STATS_PRINTTIME_EN[] PROGMEM = "Print time: "; +const char MSG_STATS_PRINTTIME_CZ[] PROGMEM = "Cas tisku : "; +const char MSG_STATS_PRINTTIME_IT[] PROGMEM = "Tempo di stampa:"; +const char MSG_STATS_PRINTTIME_ES[] PROGMEM = "Tiempo de imp.:"; +const char MSG_STATS_PRINTTIME_PL[] PROGMEM = "Czas druku : "; +const char MSG_STATS_PRINTTIME_DE[] PROGMEM = "Druckzeit: "; const char * const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_PRINTTIME_EN + MSG_STATS_PRINTTIME_EN, + MSG_STATS_PRINTTIME_CZ, + MSG_STATS_PRINTTIME_IT, + MSG_STATS_PRINTTIME_ES, + MSG_STATS_PRINTTIME_PL, + MSG_STATS_PRINTTIME_DE }; const char MSG_STATS_TOTALFILAMENT_EN[] PROGMEM = "Total filament :"; +const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; +const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; +const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; +const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; +const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Gesamtfilament:"; const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALFILAMENT_EN + MSG_STATS_TOTALFILAMENT_EN, + MSG_STATS_TOTALFILAMENT_CZ, + MSG_STATS_TOTALFILAMENT_IT, + MSG_STATS_TOTALFILAMENT_ES, + MSG_STATS_TOTALFILAMENT_PL, + MSG_STATS_TOTALFILAMENT_DE }; const char MSG_STATS_TOTALPRINTTIME_EN[] PROGMEM = "Total print time :"; +const char MSG_STATS_TOTALPRINTTIME_CZ[] PROGMEM = "Celkovy cas :"; +const char MSG_STATS_TOTALPRINTTIME_IT[] PROGMEM = "Tempo stampa tot:"; +const char MSG_STATS_TOTALPRINTTIME_ES[] PROGMEM = "Tiempo total :"; +const char MSG_STATS_TOTALPRINTTIME_PL[] PROGMEM = "Czas calkowity :"; +const char MSG_STATS_TOTALPRINTTIME_DE[] PROGMEM = "Totale Druckzeit:"; const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STATS_TOTALPRINTTIME_EN + MSG_STATS_TOTALPRINTTIME_EN, + MSG_STATS_TOTALPRINTTIME_CZ, + MSG_STATS_TOTALPRINTTIME_IT, + MSG_STATS_TOTALPRINTTIME_ES, + MSG_STATS_TOTALPRINTTIME_PL, + MSG_STATS_TOTALPRINTTIME_DE }; const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; -const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { MSG_STEPPER_TOO_HIGH_EN }; const char MSG_STOPPED_EN[] PROGMEM = "STOPPED. "; +const char MSG_STOPPED_IT[] PROGMEM = "ARRESTATO."; +const char MSG_STOPPED_ES[] PROGMEM = "PARADA"; +const char MSG_STOPPED_DE[] PROGMEM = "GESTOPPT. "; const char * const MSG_STOPPED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOPPED_EN + MSG_STOPPED_EN, + MSG_STOPPED_EN, + MSG_STOPPED_IT, + MSG_STOPPED_ES, + MSG_STOPPED_EN, + MSG_STOPPED_DE }; const char MSG_STOP_PRINT_EN[] PROGMEM = "Stop print"; +const char MSG_STOP_PRINT_CZ[] PROGMEM = "Zastavit tisk"; +const char MSG_STOP_PRINT_IT[] PROGMEM = "Arresta stampa"; +const char MSG_STOP_PRINT_ES[] PROGMEM = "Detener impresion"; +const char MSG_STOP_PRINT_PL[] PROGMEM = "Zatrzymac druk"; +const char MSG_STOP_PRINT_DE[] PROGMEM = "Druck abbrechen"; const char * const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_STOP_PRINT_EN + MSG_STOP_PRINT_EN, + MSG_STOP_PRINT_CZ, + MSG_STOP_PRINT_IT, + MSG_STOP_PRINT_ES, + MSG_STOP_PRINT_PL, + MSG_STOP_PRINT_DE }; const char MSG_STORE_EPROM_EN[] PROGMEM = "Store memory"; -const char * const MSG_STORE_EPROM_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_STORE_EPROM_LANG_TABLE[1] PROGMEM = { MSG_STORE_EPROM_EN }; const char MSG_SUPPORT_EN[] PROGMEM = "Support"; +const char MSG_SUPPORT_CZ[] PROGMEM = "Podpora"; +const char MSG_SUPPORT_ES[] PROGMEM = "Soporte"; +const char MSG_SUPPORT_PL[] PROGMEM = "Pomoc"; const char * const MSG_SUPPORT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_SUPPORT_EN, + MSG_SUPPORT_CZ, + MSG_SUPPORT_EN, + MSG_SUPPORT_ES, + MSG_SUPPORT_PL, MSG_SUPPORT_EN }; const char MSG_SWITCH_PS_OFF_EN[] PROGMEM = "Switch power off"; +const char MSG_SWITCH_PS_OFF_CZ[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_PL[] PROGMEM = "Zapnout zdroj"; +const char MSG_SWITCH_PS_OFF_DE[] PROGMEM = "Netzteil AUS"; const char * const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_OFF_EN + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_CZ, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_EN, + MSG_SWITCH_PS_OFF_PL, + MSG_SWITCH_PS_OFF_DE }; const char MSG_SWITCH_PS_ON_EN[] PROGMEM = "Switch power on"; +const char MSG_SWITCH_PS_ON_CZ[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_PL[] PROGMEM = "Vypnout zdroj"; +const char MSG_SWITCH_PS_ON_DE[] PROGMEM = "Netzteil EIN"; const char * const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_SWITCH_PS_ON_EN + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_CZ, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_EN, + MSG_SWITCH_PS_ON_PL, + MSG_SWITCH_PS_ON_DE }; const char MSG_TAKE_EFFECT_EN[] PROGMEM = " for take effect"; +const char MSG_TAKE_EFFECT_CZ[] PROGMEM = " pro projeveni zmen"; +const char MSG_TAKE_EFFECT_IT[] PROGMEM = " per attualizzare"; +const char MSG_TAKE_EFFECT_ES[] PROGMEM = " para aplicar cambios"; +const char MSG_TAKE_EFFECT_PL[] PROGMEM = " wprow. zmian"; +const char MSG_TAKE_EFFECT_DE[] PROGMEM = "Drucker neu starten"; const char * const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TAKE_EFFECT_EN + MSG_TAKE_EFFECT_EN, + MSG_TAKE_EFFECT_CZ, + MSG_TAKE_EFFECT_IT, + MSG_TAKE_EFFECT_ES, + MSG_TAKE_EFFECT_PL, + MSG_TAKE_EFFECT_DE }; const char MSG_TEMPERATURE_EN[] PROGMEM = "Temperature"; +const char MSG_TEMPERATURE_CZ[] PROGMEM = "Teplota"; +const char MSG_TEMPERATURE_IT[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_ES[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_PL[] PROGMEM = "Temperatura"; +const char MSG_TEMPERATURE_DE[] PROGMEM = "Temperatur"; const char * const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMPERATURE_EN + MSG_TEMPERATURE_EN, + MSG_TEMPERATURE_CZ, + MSG_TEMPERATURE_IT, + MSG_TEMPERATURE_ES, + MSG_TEMPERATURE_PL, + MSG_TEMPERATURE_DE }; const char MSG_TEMP_CALIBRATION_EN[] PROGMEM = "Temp. cal. "; +const char MSG_TEMP_CALIBRATION_CZ[] PROGMEM = "Tepl. kal. "; +const char MSG_TEMP_CALIBRATION_IT[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_ES[] PROGMEM = "Cal. temp. "; +const char MSG_TEMP_CALIBRATION_PL[] PROGMEM = "Ciepl. kal. "; +const char MSG_TEMP_CALIBRATION_DE[] PROGMEM = "Temp Kalib. "; const char * const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_EN + MSG_TEMP_CALIBRATION_EN, + MSG_TEMP_CALIBRATION_CZ, + MSG_TEMP_CALIBRATION_IT, + MSG_TEMP_CALIBRATION_ES, + MSG_TEMP_CALIBRATION_PL, + MSG_TEMP_CALIBRATION_DE }; const char MSG_TEMP_CALIBRATION_DONE_EN[] PROGMEM = "Temperature calibration is finished. Click to continue."; +const char MSG_TEMP_CALIBRATION_DONE_CZ[] PROGMEM = "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka."; +const char MSG_TEMP_CALIBRATION_DONE_IT[] PROGMEM = "Taratura temperatura terminata. Fare click per continuare."; +const char MSG_TEMP_CALIBRATION_DONE_ES[] PROGMEM = "Calibracon temperatura terminada. Presionar para continuar."; +const char MSG_TEMP_CALIBRATION_DONE_PL[] PROGMEM = "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"; +const char MSG_TEMP_CALIBRATION_DONE_DE[] PROGMEM = "Temp. Kalibrierung fertig. Klicken um weiter zu gehen."; const char * const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_DONE_EN + MSG_TEMP_CALIBRATION_DONE_EN, + MSG_TEMP_CALIBRATION_DONE_CZ, + MSG_TEMP_CALIBRATION_DONE_IT, + MSG_TEMP_CALIBRATION_DONE_ES, + MSG_TEMP_CALIBRATION_DONE_PL, + MSG_TEMP_CALIBRATION_DONE_DE }; const char MSG_TEMP_CALIBRATION_OFF_EN[] PROGMEM = "Temp. cal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_CZ[] PROGMEM = "Tepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_IT[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_ES[] PROGMEM = "Cal. temp. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_PL[] PROGMEM = "Ciepl. kal. [OFF]"; +const char MSG_TEMP_CALIBRATION_OFF_DE[] PROGMEM = "Temp. Kal. [OFF]"; const char * const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_OFF_EN + MSG_TEMP_CALIBRATION_OFF_EN, + MSG_TEMP_CALIBRATION_OFF_CZ, + MSG_TEMP_CALIBRATION_OFF_IT, + MSG_TEMP_CALIBRATION_OFF_ES, + MSG_TEMP_CALIBRATION_OFF_PL, + MSG_TEMP_CALIBRATION_OFF_DE }; const char MSG_TEMP_CALIBRATION_ON_EN[] PROGMEM = "Temp. cal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_CZ[] PROGMEM = "Tepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_IT[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_ES[] PROGMEM = "Cal. temp. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_PL[] PROGMEM = "Ciepl. kal. [ON]"; +const char MSG_TEMP_CALIBRATION_ON_DE[] PROGMEM = "Temp. Kal. [ON]"; const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TEMP_CALIBRATION_ON_EN + MSG_TEMP_CALIBRATION_ON_EN, + MSG_TEMP_CALIBRATION_ON_CZ, + MSG_TEMP_CALIBRATION_ON_IT, + MSG_TEMP_CALIBRATION_ON_ES, + MSG_TEMP_CALIBRATION_ON_PL, + MSG_TEMP_CALIBRATION_ON_DE }; const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE }; const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlashAir]"; const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE }; const char MSG_TUNE_EN[] PROGMEM = "Tune"; +const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; +const char MSG_TUNE_IT[] PROGMEM = "Regola"; +const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; +const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; +const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_TUNE_EN + MSG_TUNE_EN, + MSG_TUNE_CZ, + MSG_TUNE_IT, + MSG_TUNE_ES, + MSG_TUNE_PL, + MSG_TUNE_DE }; const char MSG_UNKNOWN_COMMAND_EN[] PROGMEM = "Unknown command: \""; -const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[LANG_NUM] PROGMEM = { +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 MSG_UNLOADING_FILAMENT_DE[] PROGMEM = "Filament auswerfen"; const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOADING_FILAMENT_EN + MSG_UNLOADING_FILAMENT_EN, + MSG_UNLOADING_FILAMENT_CZ, + MSG_UNLOADING_FILAMENT_IT, + MSG_UNLOADING_FILAMENT_ES, + MSG_UNLOADING_FILAMENT_PL, + MSG_UNLOADING_FILAMENT_DE }; const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; +const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; +const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; +const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; +const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; +const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Alles entladen"; const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_ALL_EN + MSG_UNLOAD_ALL_EN, + MSG_UNLOAD_ALL_CZ, + MSG_UNLOAD_ALL_IT, + MSG_UNLOAD_ALL_ES, + MSG_UNLOAD_ALL_PL, + MSG_UNLOAD_ALL_DE }; 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"; +const char MSG_UNLOAD_FILAMENT_ES[] PROGMEM = "Soltar filamento"; +const char MSG_UNLOAD_FILAMENT_PL[] PROGMEM = "Wyjac filament"; +const char MSG_UNLOAD_FILAMENT_DE[] PROGMEM = "Filament entladen"; const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_EN + MSG_UNLOAD_FILAMENT_EN, + MSG_UNLOAD_FILAMENT_CZ, + MSG_UNLOAD_FILAMENT_IT, + MSG_UNLOAD_FILAMENT_ES, + MSG_UNLOAD_FILAMENT_PL, + MSG_UNLOAD_FILAMENT_DE }; const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; +const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; +const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; +const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Filam. 1 entladen"; const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_1_EN + MSG_UNLOAD_FILAMENT_1_EN, + MSG_UNLOAD_FILAMENT_1_CZ, + MSG_UNLOAD_FILAMENT_1_IT, + MSG_UNLOAD_FILAMENT_1_ES, + MSG_UNLOAD_FILAMENT_1_PL, + MSG_UNLOAD_FILAMENT_1_DE }; const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; +const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; +const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; +const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; +const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Filam. 2 entladen"; const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_2_EN + MSG_UNLOAD_FILAMENT_2_EN, + MSG_UNLOAD_FILAMENT_2_CZ, + MSG_UNLOAD_FILAMENT_2_IT, + MSG_UNLOAD_FILAMENT_2_ES, + MSG_UNLOAD_FILAMENT_2_PL, + MSG_UNLOAD_FILAMENT_2_DE }; const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; +const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; +const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; +const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; +const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Filam. 3 entladen"; const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_3_EN + MSG_UNLOAD_FILAMENT_3_EN, + MSG_UNLOAD_FILAMENT_3_CZ, + MSG_UNLOAD_FILAMENT_3_IT, + MSG_UNLOAD_FILAMENT_3_ES, + MSG_UNLOAD_FILAMENT_3_PL, + MSG_UNLOAD_FILAMENT_3_DE }; const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; +const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; +const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; +const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; +const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Filam. 4 entladen"; const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_UNLOAD_FILAMENT_4_EN + MSG_UNLOAD_FILAMENT_4_EN, + MSG_UNLOAD_FILAMENT_4_CZ, + MSG_UNLOAD_FILAMENT_4_IT, + MSG_UNLOAD_FILAMENT_4_ES, + MSG_UNLOAD_FILAMENT_4_PL, + MSG_UNLOAD_FILAMENT_4_DE }; const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; +const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; +const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; +const char MSG_USB_PRINTING_ES[] PROGMEM = "Impresion de USB "; +const char MSG_USB_PRINTING_PL[] PROGMEM = "Druk z USB "; +const char MSG_USB_PRINTING_DE[] PROGMEM = "Drucken ueber USB"; const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USB_PRINTING_EN + MSG_USB_PRINTING_EN, + MSG_USB_PRINTING_CZ, + MSG_USB_PRINTING_IT, + MSG_USB_PRINTING_ES, + MSG_USB_PRINTING_PL, + MSG_USB_PRINTING_DE }; const char MSG_USED_EN[] PROGMEM = "Used during print"; +const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku"; +const char MSG_USED_IT[] PROGMEM = "Usati nella stampa"; +const char MSG_USED_ES[] PROGMEM = "Usado en impresion"; +const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku"; +const char MSG_USED_DE[] PROGMEM = "Beim Druck benutzte"; const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USED_EN + MSG_USED_EN, + MSG_USED_CZ, + MSG_USED_IT, + MSG_USED_ES, + MSG_USED_PL, + MSG_USED_DE }; const char MSG_USERWAIT_EN[] PROGMEM = "Wait for user..."; +const char MSG_USERWAIT_IT[] PROGMEM = "Attendendo utente"; +const char MSG_USERWAIT_ES[] PROGMEM = "Esperando ordenes"; +const char MSG_USERWAIT_DE[] PROGMEM = "Warte auf user..."; const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_USERWAIT_EN + MSG_USERWAIT_EN, + MSG_USERWAIT_EN, + MSG_USERWAIT_IT, + MSG_USERWAIT_ES, + MSG_USERWAIT_EN, + MSG_USERWAIT_DE +}; + +const char MSG_V2_CALIBRATION_EN[] PROGMEM = "First layer cal."; +const char * const MSG_V2_CALIBRATION_LANG_TABLE[1] PROGMEM = { + MSG_V2_CALIBRATION_EN }; const char MSG_VMIN_EN[] PROGMEM = "Vmin"; -const char * const MSG_VMIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_VMIN_LANG_TABLE[1] PROGMEM = { MSG_VMIN_EN }; const char MSG_VOLUMETRIC_EN[] PROGMEM = "Filament"; -const char * const MSG_VOLUMETRIC_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_VOLUMETRIC_LANG_TABLE[1] PROGMEM = { MSG_VOLUMETRIC_EN }; const char MSG_VOLUMETRIC_ENABLED_EN[] PROGMEM = "E in mm3"; -const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1] PROGMEM = { MSG_VOLUMETRIC_ENABLED_EN }; const char MSG_VTRAV_MIN_EN[] PROGMEM = "VTrav min"; -const char * const MSG_VTRAV_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_VTRAV_MIN_LANG_TABLE[1] PROGMEM = { MSG_VTRAV_MIN_EN }; const char MSG_WAITING_TEMP_EN[] PROGMEM = "Waiting for nozzle and bed cooling"; +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 MSG_WAITING_TEMP_DE[] PROGMEM = "Warten auf Abkuehlung von Heater und Bed."; const char * const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WAITING_TEMP_EN + MSG_WAITING_TEMP_EN, + MSG_WAITING_TEMP_CZ, + MSG_WAITING_TEMP_IT, + MSG_WAITING_TEMP_ES, + MSG_WAITING_TEMP_PL, + MSG_WAITING_TEMP_DE }; const char MSG_WATCH_EN[] PROGMEM = "Info screen"; +const char MSG_WATCH_CZ[] PROGMEM = "Informace"; +const char MSG_WATCH_IT[] PROGMEM = "Schermata info"; +const char MSG_WATCH_ES[] PROGMEM = "Monitorizar"; +const char MSG_WATCH_PL[] PROGMEM = "Informacje"; +const char MSG_WATCH_DE[] PROGMEM = "Information"; const char * const MSG_WATCH_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_WATCH_EN + MSG_WATCH_EN, + MSG_WATCH_CZ, + MSG_WATCH_IT, + MSG_WATCH_ES, + MSG_WATCH_PL, + MSG_WATCH_DE }; const char MSG_WATCHDOG_RESET_EN[] PROGMEM = " Watchdog Reset"; -const char * const MSG_WATCHDOG_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = { MSG_WATCHDOG_RESET_EN }; +const char MSG_WIZARD_EN[] PROGMEM = "Wizard"; +const char * const MSG_WIZARD_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_EN +}; + +const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."; +const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_CALIBRATION_FAILED_EN +}; + +const char MSG_WIZARD_CLEAN_HEATBED_EN[] PROGMEM = "Please clean heatbed and then press the knob."; +const char * const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_CLEAN_HEATBED_EN +}; + +const char MSG_WIZARD_DONE_EN[] PROGMEM = "All is done. Happy printing!"; +const char * const MSG_WIZARD_DONE_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_DONE_EN +}; + +const char MSG_WIZARD_FILAMENT_LOADED_EN[] PROGMEM = "Is filament loaded?"; +const char * const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_FILAMENT_LOADED_EN +}; + +const char MSG_WIZARD_HEATING_EN[] PROGMEM = "Preheating nozzle. Please wait."; +const char * const MSG_WIZARD_HEATING_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_HEATING_EN +}; + +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN[] PROGMEM = "Please load PLA filament and then resume Wizard by rebooting the printer."; +const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN +}; + +const char MSG_WIZARD_LOAD_FILAMENT_EN[] PROGMEM = "Please insert PLA filament to the extruder, then press knob to load it."; +const char * const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_LOAD_FILAMENT_EN +}; + +const char MSG_WIZARD_PLA_FILAMENT_EN[] PROGMEM = "Is it PLA filament?"; +const char * const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_PLA_FILAMENT_EN +}; + +const char MSG_WIZARD_QUIT_EN[] PROGMEM = "You can always resume the Wizard from Calibration -> Wizard."; +const char * const MSG_WIZARD_QUIT_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_QUIT_EN +}; + +const char MSG_WIZARD_REPEAT_V2_CAL_EN[] PROGMEM = "Do you want to repeat last step to readjust distance between nozzle and heatbed?"; +const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_REPEAT_V2_CAL_EN +}; + +const char MSG_WIZARD_RERUN_EN[] PROGMEM = "Running Wizard will delete current calibration results and start from the beginning. Continue?"; +const char * const MSG_WIZARD_RERUN_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_RERUN_EN +}; + +const char MSG_WIZARD_SELFTEST_EN[] PROGMEM = "First, I will run the selftest to check most common assembly problems."; +const char * const MSG_WIZARD_SELFTEST_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_SELFTEST_EN +}; + +const char MSG_WIZARD_V2_CAL_EN[] PROGMEM = "Now I will calibrate distance between tip of the nozzle and heatbed surface."; +const char * const MSG_WIZARD_V2_CAL_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_V2_CAL_EN +}; + +const char MSG_WIZARD_V2_CAL_2_EN[] PROGMEM = "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."; +const char * const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_V2_CAL_2_EN +}; + +const char MSG_WIZARD_WELCOME_EN[] PROGMEM = "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"; +const char * const MSG_WIZARD_WELCOME_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_WELCOME_EN +}; + +const char MSG_WIZARD_WILL_PREHEAT_EN[] PROGMEM = "Now I will preheat nozzle for PLA."; +const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_WILL_PREHEAT_EN +}; + +const char MSG_WIZARD_XYZ_CAL_EN[] PROGMEM = "I will run xyz calibration now. It will take approx. 12 mins."; +const char * const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_XYZ_CAL_EN +}; + +const char MSG_WIZARD_Z_CAL_EN[] PROGMEM = "I will run z calibration now."; +const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[1] PROGMEM = { + MSG_WIZARD_Z_CAL_EN +}; + const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; -const char * const MSG_X_MAX_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_X_MAX_LANG_TABLE[1] PROGMEM = { MSG_X_MAX_EN }; const char MSG_X_MIN_EN[] PROGMEM = "x_min: "; -const char * const MSG_X_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_X_MIN_LANG_TABLE[1] PROGMEM = { MSG_X_MIN_EN }; const char MSG_YES_EN[] PROGMEM = "Yes"; +const char MSG_YES_CZ[] PROGMEM = "Ano"; +const char MSG_YES_IT[] PROGMEM = "Si"; +const char MSG_YES_ES[] PROGMEM = "Si"; +const char MSG_YES_PL[] PROGMEM = "Tak"; +const char MSG_YES_DE[] PROGMEM = "Ja"; const char * const MSG_YES_LANG_TABLE[LANG_NUM] PROGMEM = { - MSG_YES_EN + MSG_YES_EN, + MSG_YES_CZ, + MSG_YES_IT, + MSG_YES_ES, + MSG_YES_PL, + MSG_YES_DE }; const char MSG_Y_MAX_EN[] PROGMEM = "y_max: "; -const char * const MSG_Y_MAX_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_Y_MAX_LANG_TABLE[1] PROGMEM = { MSG_Y_MAX_EN }; const char MSG_Y_MIN_EN[] PROGMEM = "y_min: "; -const char * const MSG_Y_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_Y_MIN_LANG_TABLE[1] PROGMEM = { MSG_Y_MIN_EN }; const char MSG_ZPROBE_OUT_EN[] PROGMEM = "Z probe out. bed"; -const char * const MSG_ZPROBE_OUT_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ZPROBE_OUT_LANG_TABLE[1] PROGMEM = { MSG_ZPROBE_OUT_EN }; const char MSG_ZPROBE_ZOFFSET_EN[] PROGMEM = "Z Offset"; -const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_ZPROBE_ZOFFSET_LANG_TABLE[1] PROGMEM = { MSG_ZPROBE_ZOFFSET_EN }; const char MSG_Z_MAX_EN[] PROGMEM = "z_max: "; -const char * const MSG_Z_MAX_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_Z_MAX_LANG_TABLE[1] PROGMEM = { MSG_Z_MAX_EN }; const char MSG_Z_MIN_EN[] PROGMEM = "z_min: "; -const char * const MSG_Z_MIN_LANG_TABLE[LANG_NUM] PROGMEM = { +const char * const MSG_Z_MIN_LANG_TABLE[1] PROGMEM = { MSG_Z_MIN_EN }; const char WELCOME_MSG_EN[] PROGMEM = CUSTOM_MENDEL_NAME " ready."; +const char WELCOME_MSG_CZ[] PROGMEM = CUSTOM_MENDEL_NAME " ok"; +const char WELCOME_MSG_IT[] PROGMEM = CUSTOM_MENDEL_NAME " pronta."; +const char WELCOME_MSG_ES[] PROGMEM = CUSTOM_MENDEL_NAME " prep."; +const char WELCOME_MSG_PL[] PROGMEM = CUSTOM_MENDEL_NAME " gotowa"; +const char WELCOME_MSG_DE[] PROGMEM = CUSTOM_MENDEL_NAME " bereit."; const char * const WELCOME_MSG_LANG_TABLE[LANG_NUM] PROGMEM = { - WELCOME_MSG_EN + WELCOME_MSG_EN, + WELCOME_MSG_CZ, + WELCOME_MSG_IT, + WELCOME_MSG_ES, + WELCOME_MSG_PL, + WELCOME_MSG_DE }; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 2ac9b567..b7480f55 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -4,37 +4,40 @@ #include // Language indices into their particular symbol tables. #define LANG_ID_EN 0 +#define LANG_ID_CZ 1 +#define LANG_ID_IT 2 +#define LANG_ID_ES 3 +#define LANG_ID_PL 4 +#define LANG_ID_DE 5 // Language is not defined and it shall be selected from the menu. #define LANG_ID_FORCE_SELECTION 254 // Language is not defined on a virgin RAMBo board. #define LANG_ID_UNDEFINED 255 // Default language ID, if no language is selected. -#define LANG_ID_DEFAULT LANG_ID_EN +#define LANG_ID_DEFAULT LANG_ID_CZ // Number of languages available in the language table. -#define LANG_NUM 1 +#define LANG_NUM 6 // Currectly active language selection. extern unsigned char lang_selected; -#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) "EN" - #define LANG_TABLE_SELECT_EXPLICIT(TABLE, LANG) ((const char*)(pgm_read_ptr(TABLE + (LANG)))) #define LANG_TABLE_SELECT(TABLE) LANG_TABLE_SELECT_EXPLICIT(TABLE, lang_selected) extern const char* const MSG_ACTIVE_EXTRUDER_LANG_TABLE[1]; #define MSG_ACTIVE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_ACTIVE_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_ADJUSTZ_LANG_TABLE[1]; -#define MSG_ADJUSTZ LANG_TABLE_SELECT_EXPLICIT(MSG_ADJUSTZ_LANG_TABLE, 0) -extern const char* const MSG_ALL_LANG_TABLE[1]; -#define MSG_ALL LANG_TABLE_SELECT_EXPLICIT(MSG_ALL_LANG_TABLE, 0) +extern const char* const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM]; +#define MSG_ADJUSTZ LANG_TABLE_SELECT(MSG_ADJUSTZ_LANG_TABLE) +extern const char* const MSG_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_ALL LANG_TABLE_SELECT(MSG_ALL_LANG_TABLE) extern const char* const MSG_AMAX_LANG_TABLE[1]; #define MSG_AMAX LANG_TABLE_SELECT_EXPLICIT(MSG_AMAX_LANG_TABLE, 0) extern const char* const MSG_AUTHOR_LANG_TABLE[1]; #define MSG_AUTHOR LANG_TABLE_SELECT_EXPLICIT(MSG_AUTHOR_LANG_TABLE, 0) -extern const char* const MSG_AUTO_HOME_LANG_TABLE[1]; -#define MSG_AUTO_HOME LANG_TABLE_SELECT_EXPLICIT(MSG_AUTO_HOME_LANG_TABLE, 0) +extern const char* const MSG_AUTO_HOME_LANG_TABLE[LANG_NUM]; +#define MSG_AUTO_HOME LANG_TABLE_SELECT(MSG_AUTO_HOME_LANG_TABLE) extern const char* const MSG_A_RETRACT_LANG_TABLE[1]; #define MSG_A_RETRACT LANG_TABLE_SELECT_EXPLICIT(MSG_A_RETRACT_LANG_TABLE, 0) extern const char* const MSG_BABYSTEPPING_X_LANG_TABLE[1]; @@ -47,112 +50,108 @@ extern const char* const MSG_BABYSTEP_X_LANG_TABLE[1]; #define MSG_BABYSTEP_X LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_X_LANG_TABLE, 0) extern const char* const MSG_BABYSTEP_Y_LANG_TABLE[1]; #define MSG_BABYSTEP_Y LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Y_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[1]; -#define MSG_BABYSTEP_Z LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Z_LANG_TABLE, 0) -extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[1]; -#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT_EXPLICIT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE, 0) -extern const char* const MSG_BED_LANG_TABLE[1]; -#define MSG_BED LANG_TABLE_SELECT_EXPLICIT(MSG_BED_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_FRONT_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_LEFT_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_MENU_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_REAR_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_RESET_LANG_TABLE, 0) -extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE, 0) -extern const char* const MSG_BED_DONE_LANG_TABLE[1]; -#define MSG_BED_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_BED_DONE_LANG_TABLE, 0) -extern const char* const MSG_BED_HEATING_LANG_TABLE[1]; -#define MSG_BED_HEATING LANG_TABLE_SELECT_EXPLICIT(MSG_BED_HEATING_LANG_TABLE, 0) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[1]; -#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE, 0) -extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[1]; -#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT_EXPLICIT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE, 0) -extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[1]; -#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE, 0) -extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[1]; -#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE, 0) +extern const char* const MSG_BABYSTEP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z LANG_TABLE_SELECT(MSG_BABYSTEP_Z_LANG_TABLE) +extern const char* const MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE[LANG_NUM]; +#define MSG_BABYSTEP_Z_NOT_SET LANG_TABLE_SELECT(MSG_BABYSTEP_Z_NOT_SET_LANG_TABLE) +extern const char* const MSG_BED_LANG_TABLE[LANG_NUM]; +#define MSG_BED LANG_TABLE_SELECT(MSG_BED_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT(MSG_BED_CORRECTION_RESET_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_RIGHT LANG_TABLE_SELECT(MSG_BED_CORRECTION_RIGHT_LANG_TABLE) +extern const char* const MSG_BED_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_BED_DONE LANG_TABLE_SELECT(MSG_BED_DONE_LANG_TABLE) +extern const char* const MSG_BED_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_BED_HEATING LANG_TABLE_SELECT(MSG_BED_HEATING_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_HIGH LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_HIGH_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_POINT_LOW LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_POINT_LOW_LANG_TABLE) +extern const char* const MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED LANG_TABLE_SELECT(MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE) +extern const char* const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM]; +#define MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR LANG_TABLE_SELECT(MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE) extern const char* const MSG_BEGIN_FILE_LIST_LANG_TABLE[1]; #define MSG_BEGIN_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_BEGIN_FILE_LIST_LANG_TABLE, 0) extern const char* const MSG_BROWNOUT_RESET_LANG_TABLE[1]; #define MSG_BROWNOUT_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BROWNOUT_RESET_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[1]; -#define MSG_CALIBRATE_BED LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_BED_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[1]; -#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_BED_RESET_LANG_TABLE, 0) -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_PINDA_LANG_TABLE[1]; -#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_PINDA_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATE_Z_AUTO_LANG_TABLE[1]; -#define MSG_CALIBRATE_Z_AUTO LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_Z_AUTO_LANG_TABLE, 0) -extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[1]; -#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE, 0) -extern const char* const MSG_CARD_MENU_LANG_TABLE[1]; -#define MSG_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_CARD_MENU_LANG_TABLE, 0) -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_SUCCESS_LANG_TABLE[1]; -#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT_EXPLICIT(MSG_CHANGE_SUCCESS_LANG_TABLE, 0) -extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[1]; -#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_CHANGING_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_CHOOSE_EXTRUDER_LANG_TABLE[1]; -#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_CHOOSE_EXTRUDER_LANG_TABLE, 0) -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_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[LANG_NUM]; +#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE) +extern const char* const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) +extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; +#define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_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[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_CHOOSE_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_CHOOSE_EXTRUDER LANG_TABLE_SELECT(MSG_CHOOSE_EXTRUDER_LANG_TABLE) +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]; #define MSG_CONFIGURATION_VER LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIGURATION_VER_LANG_TABLE, 0) -extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[1]; -#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE, 0) -extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[1]; -#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT_EXPLICIT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE, 0) -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_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[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[1]; -#define MSG_COOLDOWN LANG_TABLE_SELECT_EXPLICIT(MSG_COOLDOWN_LANG_TABLE, 0) -extern const char* const MSG_CORRECTLY_LANG_TABLE[1]; -#define MSG_CORRECTLY LANG_TABLE_SELECT_EXPLICIT(MSG_CORRECTLY_LANG_TABLE, 0) +extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; +#define MSG_COOLDOWN LANG_TABLE_SELECT(MSG_COOLDOWN_LANG_TABLE) +extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; +#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) extern const char* const MSG_COUNT_X_LANG_TABLE[1]; #define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) -extern const char* const MSG_CRASHDETECT_OFF_LANG_TABLE[1]; -#define MSG_CRASHDETECT_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_CRASHDETECT_OFF_LANG_TABLE, 0) -extern const char* const MSG_CRASHDETECT_ON_LANG_TABLE[1]; -#define MSG_CRASHDETECT_ON LANG_TABLE_SELECT_EXPLICIT(MSG_CRASHDETECT_ON_LANG_TABLE, 0) -extern const char* const MSG_CURRENT_LANG_TABLE[1]; -#define MSG_CURRENT LANG_TABLE_SELECT_EXPLICIT(MSG_CURRENT_LANG_TABLE, 0) -extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[1]; -#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT_EXPLICIT(MSG_DISABLE_STEPPERS_LANG_TABLE, 0) -extern const char* const MSG_DWELL_LANG_TABLE[1]; -#define MSG_DWELL LANG_TABLE_SELECT_EXPLICIT(MSG_DWELL_LANG_TABLE, 0) +extern const char* const MSG_CRASH_DETECTED_LANG_TABLE[1]; +#define MSG_CRASH_DETECTED LANG_TABLE_SELECT_EXPLICIT(MSG_CRASH_DETECTED_LANG_TABLE, 0) +extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; +#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE) +extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM]; +#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE) +extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM]; +#define MSG_DWELL LANG_TABLE_SELECT(MSG_DWELL_LANG_TABLE) extern const char* const MSG_ENDSTOPS_HIT_LANG_TABLE[1]; #define MSG_ENDSTOPS_HIT LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOPS_HIT_LANG_TABLE, 0) extern const char* const MSG_ENDSTOP_HIT_LANG_TABLE[1]; @@ -161,8 +160,8 @@ extern const char* const MSG_ENDSTOP_OPEN_LANG_TABLE[1]; #define MSG_ENDSTOP_OPEN LANG_TABLE_SELECT_EXPLICIT(MSG_ENDSTOP_OPEN_LANG_TABLE, 0) extern const char* const MSG_END_FILE_LIST_LANG_TABLE[1]; #define MSG_END_FILE_LIST LANG_TABLE_SELECT_EXPLICIT(MSG_END_FILE_LIST_LANG_TABLE, 0) -extern const char* const MSG_ERROR_LANG_TABLE[1]; -#define MSG_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_ERROR_LANG_TABLE, 0) +extern const char* const MSG_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_ERROR LANG_TABLE_SELECT(MSG_ERROR_LANG_TABLE) extern const char* const MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE[1]; #define MSG_ERR_CHECKSUM_MISMATCH LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_CHECKSUM_MISMATCH_LANG_TABLE, 0) extern const char* const MSG_ERR_COLD_EXTRUDE_STOP_LANG_TABLE[1]; @@ -183,84 +182,80 @@ 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_EXTRUDER_LANG_TABLE[1]; -#define MSG_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_1_LANG_TABLE[1]; -#define MSG_EXTRUDER_1 LANG_TABLE_SELECT_EXPLICIT(MSG_EXTRUDER_1_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_2_LANG_TABLE[1]; -#define MSG_EXTRUDER_2 LANG_TABLE_SELECT_EXPLICIT(MSG_EXTRUDER_2_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_3_LANG_TABLE[1]; -#define MSG_EXTRUDER_3 LANG_TABLE_SELECT_EXPLICIT(MSG_EXTRUDER_3_LANG_TABLE, 0) -extern const char* const MSG_EXTRUDER_4_LANG_TABLE[1]; -#define MSG_EXTRUDER_4 LANG_TABLE_SELECT_EXPLICIT(MSG_EXTRUDER_4_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_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER LANG_TABLE_SELECT(MSG_EXTRUDER_LANG_TABLE) +extern const char* const MSG_EXTRUDER_1_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_1 LANG_TABLE_SELECT(MSG_EXTRUDER_1_LANG_TABLE) +extern const char* const MSG_EXTRUDER_2_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_2 LANG_TABLE_SELECT(MSG_EXTRUDER_2_LANG_TABLE) +extern const char* const MSG_EXTRUDER_3_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_3 LANG_TABLE_SELECT(MSG_EXTRUDER_3_LANG_TABLE) +extern const char* const MSG_EXTRUDER_4_LANG_TABLE[LANG_NUM]; +#define MSG_EXTRUDER_4 LANG_TABLE_SELECT(MSG_EXTRUDER_4_LANG_TABLE) +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]; #define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) -extern const char* const MSG_FAN_SPEED_LANG_TABLE[1]; -#define MSG_FAN_SPEED LANG_TABLE_SELECT_EXPLICIT(MSG_FAN_SPEED_LANG_TABLE, 0) +extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) 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[1]; -#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT_EXPLICIT(MSG_FILAMENTCHANGE_LANG_TABLE, 0) -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_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; +#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) +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_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[1]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT_EXPLICIT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE, 0) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[1]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT_EXPLICIT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE, 0) -extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[1]; -#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT_EXPLICIT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE, 0) -extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[1]; -#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT_EXPLICIT(MSG_FINISHING_MOVEMENTS_LANG_TABLE, 0) -extern const char* const MSG_FLOW_LANG_TABLE[1]; -#define MSG_FLOW LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW_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_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_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]; +#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) +extern const char* const MSG_FINISHING_MOVEMENTS_LANG_TABLE[LANG_NUM]; +#define MSG_FINISHING_MOVEMENTS LANG_TABLE_SELECT(MSG_FINISHING_MOVEMENTS_LANG_TABLE) +extern const char* const MSG_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FLOW LANG_TABLE_SELECT(MSG_FLOW_LANG_TABLE) extern const char* const MSG_FLOW0_LANG_TABLE[1]; #define MSG_FLOW0 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW0_LANG_TABLE, 0) extern const char* const MSG_FLOW1_LANG_TABLE[1]; #define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) extern const char* const MSG_FLOW2_LANG_TABLE[1]; #define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) -extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[1]; -#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT_EXPLICIT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE, 0) +extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; +#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; #define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) -extern const char* const MSG_FSENSOR_OFF_LANG_TABLE[1]; -#define MSG_FSENSOR_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_FSENSOR_OFF_LANG_TABLE, 0) -extern const char* const MSG_FSENSOR_ON_LANG_TABLE[1]; -#define MSG_FSENSOR_ON LANG_TABLE_SELECT_EXPLICIT(MSG_FSENSOR_ON_LANG_TABLE, 0) -extern const char* const MSG_HEATING_LANG_TABLE[1]; -#define MSG_HEATING LANG_TABLE_SELECT_EXPLICIT(MSG_HEATING_LANG_TABLE, 0) -extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[1]; -#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT_EXPLICIT(MSG_HEATING_COMPLETE_LANG_TABLE, 0) -extern const char* const MSG_HOMEYZ_LANG_TABLE[1]; -#define MSG_HOMEYZ LANG_TABLE_SELECT_EXPLICIT(MSG_HOMEYZ_LANG_TABLE, 0) -extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[1]; -#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_HOMEYZ_DONE_LANG_TABLE, 0) -extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[1]; -#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT_EXPLICIT(MSG_HOMEYZ_PROGRESS_LANG_TABLE, 0) +extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) +extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; +#define MSG_HEATING_COMPLETE LANG_TABLE_SELECT(MSG_HEATING_COMPLETE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ LANG_TABLE_SELECT(MSG_HOMEYZ_LANG_TABLE) +extern const char* const MSG_HOMEYZ_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_DONE LANG_TABLE_SELECT(MSG_HOMEYZ_DONE_LANG_TABLE) +extern const char* const MSG_HOMEYZ_PROGRESS_LANG_TABLE[LANG_NUM]; +#define MSG_HOMEYZ_PROGRESS LANG_TABLE_SELECT(MSG_HOMEYZ_PROGRESS_LANG_TABLE) extern const char* const MSG_HOTEND_OFFSET_LANG_TABLE[1]; #define MSG_HOTEND_OFFSET LANG_TABLE_SELECT_EXPLICIT(MSG_HOTEND_OFFSET_LANG_TABLE, 0) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[1]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT_EXPLICIT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE, 0) -extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[1]; -#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT_EXPLICIT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE, 0) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) +extern const char* const MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 LANG_TABLE_SELECT(MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE) extern const char* const MSG_INFO_EXTRUDER_LANG_TABLE[1]; #define MSG_INFO_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INFO_EXTRUDER_LANG_TABLE, 0) extern const char* const MSG_INFO_FILAMENT_XDIFF_LANG_TABLE[1]; @@ -273,36 +268,38 @@ extern const char* const MSG_INFO_PRINT_FAN_LANG_TABLE[1]; #define MSG_INFO_PRINT_FAN LANG_TABLE_SELECT_EXPLICIT(MSG_INFO_PRINT_FAN_LANG_TABLE, 0) extern const char* const MSG_INIT_SDCARD_LANG_TABLE[1]; #define MSG_INIT_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_INIT_SDCARD_LANG_TABLE, 0) -extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[1]; -#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_INSERT_FILAMENT_LANG_TABLE, 0) +extern const char* const MSG_INSERT_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_INSERT_FILAMENT LANG_TABLE_SELECT(MSG_INSERT_FILAMENT_LANG_TABLE) extern const char* const MSG_INVALID_EXTRUDER_LANG_TABLE[1]; #define MSG_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_INVALID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_KILLED_LANG_TABLE[1]; -#define MSG_KILLED LANG_TABLE_SELECT_EXPLICIT(MSG_KILLED_LANG_TABLE, 0) -extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[1]; -#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, 0) -extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[1]; -#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, 0) -extern const char* const MSG_LOADING_COLOR_LANG_TABLE[1]; -#define MSG_LOADING_COLOR LANG_TABLE_SELECT_EXPLICIT(MSG_LOADING_COLOR_LANG_TABLE, 0) -extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[1]; -#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_LOADING_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_LOAD_ALL_LANG_TABLE[1]; -#define MSG_LOAD_ALL LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_ALL_LANG_TABLE, 0) +extern const char* const MSG_KILLED_LANG_TABLE[LANG_NUM]; +#define MSG_KILLED LANG_TABLE_SELECT(MSG_KILLED_LANG_TABLE) +extern const char* const MSG_LANGUAGE_NAME_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_NAME LANG_TABLE_SELECT(MSG_LANGUAGE_NAME_LANG_TABLE) +#define MSG_LANGUAGE_NAME_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_NAME_LANG_TABLE, LANG) +extern const char* const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM]; +#define MSG_LANGUAGE_SELECT LANG_TABLE_SELECT(MSG_LANGUAGE_SELECT_LANG_TABLE) +#define MSG_LANGUAGE_SELECT_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(MSG_LANGUAGE_SELECT_LANG_TABLE, LANG) +extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) +extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) 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[1]; -#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[1]; -#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_FILAMENT_1_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[1]; -#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_FILAMENT_2_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[1]; -#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_FILAMENT_3_LANG_TABLE, 0) -extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[1]; -#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_FILAMENT_4_LANG_TABLE, 0) -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_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) +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]; @@ -319,20 +316,20 @@ extern const char* const MSG_M218_INVALID_EXTRUDER_LANG_TABLE[1]; #define MSG_M218_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M218_INVALID_EXTRUDER_LANG_TABLE, 0) 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[1]; -#define MSG_MAIN LANG_TABLE_SELECT_EXPLICIT(MSG_MAIN_LANG_TABLE, 0) -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_MAIN_LANG_TABLE[LANG_NUM]; +#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) +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[1]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT_EXPLICIT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE, 0) -extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[1]; -#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT_EXPLICIT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE, 0) -extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[1]; -#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT_EXPLICIT(MSG_MENU_CALIBRATION_LANG_TABLE, 0) -extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[1]; -#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT_EXPLICIT(MSG_MESH_BED_LEVELING_LANG_TABLE, 0) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE) +extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE[LANG_NUM]; +#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 LANG_TABLE_SELECT(MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2_LANG_TABLE) +extern const char* const MSG_MENU_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_MENU_CALIBRATION LANG_TABLE_SELECT(MSG_MENU_CALIBRATION_LANG_TABLE) +extern const char* const MSG_MESH_BED_LEVELING_LANG_TABLE[LANG_NUM]; +#define MSG_MESH_BED_LEVELING LANG_TABLE_SELECT(MSG_MESH_BED_LEVELING_LANG_TABLE) extern const char* const MSG_MIN_LANG_TABLE[1]; #define MSG_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_MIN_LANG_TABLE, 0) extern const char* const MSG_MOTION_LANG_TABLE[1]; @@ -343,98 +340,100 @@ extern const char* const MSG_MOVE_10MM_LANG_TABLE[1]; #define MSG_MOVE_10MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_10MM_LANG_TABLE, 0) extern const char* const MSG_MOVE_1MM_LANG_TABLE[1]; #define MSG_MOVE_1MM LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_1MM_LANG_TABLE, 0) -extern const char* const MSG_MOVE_AXIS_LANG_TABLE[1]; -#define MSG_MOVE_AXIS LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_AXIS_LANG_TABLE, 0) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[1]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE, 0) -extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[1]; -#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE, 0) -extern const char* const MSG_MOVE_E_LANG_TABLE[1]; -#define MSG_MOVE_E LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_E_LANG_TABLE, 0) -extern const char* const MSG_MOVE_X_LANG_TABLE[1]; -#define MSG_MOVE_X LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_X_LANG_TABLE, 0) -extern const char* const MSG_MOVE_Y_LANG_TABLE[1]; -#define MSG_MOVE_Y LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_Y_LANG_TABLE, 0) -extern const char* const MSG_MOVE_Z_LANG_TABLE[1]; -#define MSG_MOVE_Z LANG_TABLE_SELECT_EXPLICIT(MSG_MOVE_Z_LANG_TABLE, 0) -extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[1]; -#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT_EXPLICIT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE, 0) -extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[1]; -#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT_EXPLICIT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE, 0) -extern const char* const MSG_NO_LANG_TABLE[1]; -#define MSG_NO LANG_TABLE_SELECT_EXPLICIT(MSG_NO_LANG_TABLE, 0) -extern const char* const MSG_NOT_COLOR_LANG_TABLE[1]; -#define MSG_NOT_COLOR LANG_TABLE_SELECT_EXPLICIT(MSG_NOT_COLOR_LANG_TABLE, 0) -extern const char* const MSG_NOT_LOADED_LANG_TABLE[1]; -#define MSG_NOT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_NOT_LOADED_LANG_TABLE, 0) -extern const char* const MSG_NOZZLE_LANG_TABLE[1]; -#define MSG_NOZZLE LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE_LANG_TABLE, 0) +extern const char* const MSG_MOVE_AXIS_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_AXIS LANG_TABLE_SELECT(MSG_MOVE_AXIS_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE) +extern const char* const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_CARRIAGE_TO_THE_TOP_Z LANG_TABLE_SELECT(MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE) +extern const char* const MSG_MOVE_E_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_E LANG_TABLE_SELECT(MSG_MOVE_E_LANG_TABLE) +extern const char* const MSG_MOVE_X_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_X LANG_TABLE_SELECT(MSG_MOVE_X_LANG_TABLE) +extern const char* const MSG_MOVE_Y_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Y LANG_TABLE_SELECT(MSG_MOVE_Y_LANG_TABLE) +extern const char* const MSG_MOVE_Z_LANG_TABLE[LANG_NUM]; +#define MSG_MOVE_Z LANG_TABLE_SELECT(MSG_MOVE_Z_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_AVAILABLE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_AVAILABLE_LANG_TABLE) +extern const char* const MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE[LANG_NUM]; +#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE LANG_TABLE_SELECT(MSG_NEW_FIRMWARE_PLEASE_UPGRADE_LANG_TABLE) +extern const char* const MSG_NO_LANG_TABLE[LANG_NUM]; +#define MSG_NO LANG_TABLE_SELECT(MSG_NO_LANG_TABLE) +extern const char* const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_COLOR LANG_TABLE_SELECT(MSG_NOT_COLOR_LANG_TABLE) +extern const char* const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_NOT_LOADED LANG_TABLE_SELECT(MSG_NOT_LOADED_LANG_TABLE) +extern const char* const MSG_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_NOZZLE LANG_TABLE_SELECT(MSG_NOZZLE_LANG_TABLE) extern const char* const MSG_NOZZLE1_LANG_TABLE[1]; #define MSG_NOZZLE1 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE1_LANG_TABLE, 0) extern const char* const MSG_NOZZLE2_LANG_TABLE[1]; #define MSG_NOZZLE2 LANG_TABLE_SELECT_EXPLICIT(MSG_NOZZLE2_LANG_TABLE, 0) -extern const char* const MSG_NO_CARD_LANG_TABLE[1]; -#define MSG_NO_CARD LANG_TABLE_SELECT_EXPLICIT(MSG_NO_CARD_LANG_TABLE, 0) -extern const char* const MSG_NO_MOVE_LANG_TABLE[1]; -#define MSG_NO_MOVE LANG_TABLE_SELECT_EXPLICIT(MSG_NO_MOVE_LANG_TABLE, 0) +extern const char* const MSG_NO_CARD_LANG_TABLE[LANG_NUM]; +#define MSG_NO_CARD LANG_TABLE_SELECT(MSG_NO_CARD_LANG_TABLE) +extern const char* const MSG_NO_MOVE_LANG_TABLE[LANG_NUM]; +#define MSG_NO_MOVE LANG_TABLE_SELECT(MSG_NO_MOVE_LANG_TABLE) extern const char* const MSG_OFF_LANG_TABLE[1]; #define MSG_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_OFF_LANG_TABLE, 0) extern const char* const MSG_OK_LANG_TABLE[1]; #define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) extern const char* const MSG_ON_LANG_TABLE[1]; #define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) -extern const char* const MSG_PAPER_LANG_TABLE[1]; -#define MSG_PAPER LANG_TABLE_SELECT_EXPLICIT(MSG_PAPER_LANG_TABLE, 0) -extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[1]; -#define MSG_PAUSE_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_PAUSE_PRINT_LANG_TABLE, 0) -extern const char* const MSG_PICK_Z_LANG_TABLE[1]; -#define MSG_PICK_Z LANG_TABLE_SELECT_EXPLICIT(MSG_PICK_Z_LANG_TABLE, 0) -extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[1]; -#define MSG_PID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_PID_EXTRUDER_LANG_TABLE, 0) -extern const char* const MSG_PID_FINISHED_LANG_TABLE[1]; -#define MSG_PID_FINISHED LANG_TABLE_SELECT_EXPLICIT(MSG_PID_FINISHED_LANG_TABLE, 0) -extern const char* const MSG_PID_RUNNING_LANG_TABLE[1]; -#define MSG_PID_RUNNING LANG_TABLE_SELECT_EXPLICIT(MSG_PID_RUNNING_LANG_TABLE, 0) -extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[1]; -#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT_EXPLICIT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE, 0) -extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[1]; -#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT_EXPLICIT(MSG_PINDA_PREHEAT_LANG_TABLE, 0) +extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM]; +#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE) +extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) +extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_PICK_Z LANG_TABLE_SELECT(MSG_PICK_Z_LANG_TABLE) +extern const char* const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM]; +#define MSG_PID_EXTRUDER LANG_TABLE_SELECT(MSG_PID_EXTRUDER_LANG_TABLE) +extern const char* const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM]; +#define MSG_PID_FINISHED LANG_TABLE_SELECT(MSG_PID_FINISHED_LANG_TABLE) +extern const char* const MSG_PID_RUNNING_LANG_TABLE[LANG_NUM]; +#define MSG_PID_RUNNING LANG_TABLE_SELECT(MSG_PID_RUNNING_LANG_TABLE) +extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) +extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; #define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) -extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[1]; -#define MSG_PLEASE_WAIT LANG_TABLE_SELECT_EXPLICIT(MSG_PLEASE_WAIT_LANG_TABLE, 0) +extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1]; +#define MSG_PLA_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_PLA_FILAMENT_LOADED_LANG_TABLE, 0) +extern const char* const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1]; +#define MSG_PLEASE_LOAD_PLA LANG_TABLE_SELECT_EXPLICIT(MSG_PLEASE_LOAD_PLA_LANG_TABLE, 0) +extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; +#define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; #define MSG_POSITION_UNKNOWN LANG_TABLE_SELECT_EXPLICIT(MSG_POSITION_UNKNOWN_LANG_TABLE, 0) extern const char* const MSG_POWERUP_LANG_TABLE[1]; #define MSG_POWERUP LANG_TABLE_SELECT_EXPLICIT(MSG_POWERUP_LANG_TABLE, 0) -extern const char* const MSG_PREHEAT_LANG_TABLE[1]; -#define MSG_PREHEAT LANG_TABLE_SELECT_EXPLICIT(MSG_PREHEAT_LANG_TABLE, 0) -extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[1]; -#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT_EXPLICIT(MSG_PREHEAT_NOZZLE_LANG_TABLE, 0) -extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[1]; -#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_PREPARE_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_PRESS_LANG_TABLE[1]; -#define MSG_PRESS LANG_TABLE_SELECT_EXPLICIT(MSG_PRESS_LANG_TABLE, 0) +extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) +extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; +#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) +extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) +extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; +#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1]; #define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINTER_DISCONNECTED_LANG_TABLE, 0) -extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[1]; -#define MSG_PRINT_ABORTED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINT_ABORTED_LANG_TABLE, 0) -extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[1]; -#define MSG_PRINT_PAUSED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINT_PAUSED_LANG_TABLE, 0) -extern const char* const MSG_PRUSA3D_LANG_TABLE[1]; -#define MSG_PRUSA3D LANG_TABLE_SELECT_EXPLICIT(MSG_PRUSA3D_LANG_TABLE, 0) -extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[1]; -#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT_EXPLICIT(MSG_PRUSA3D_FORUM_LANG_TABLE, 0) -extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[1]; -#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT_EXPLICIT(MSG_PRUSA3D_HOWTO_LANG_TABLE, 0) -extern const char* const MSG_REBOOT_LANG_TABLE[1]; -#define MSG_REBOOT LANG_TABLE_SELECT_EXPLICIT(MSG_REBOOT_LANG_TABLE, 0) +extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) +extern const char* const MSG_PRINT_PAUSED_LANG_TABLE[LANG_NUM]; +#define MSG_PRINT_PAUSED LANG_TABLE_SELECT(MSG_PRINT_PAUSED_LANG_TABLE) +extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D LANG_TABLE_SELECT(MSG_PRUSA3D_LANG_TABLE) +extern const char* const MSG_PRUSA3D_FORUM_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_FORUM LANG_TABLE_SELECT(MSG_PRUSA3D_FORUM_LANG_TABLE) +extern const char* const MSG_PRUSA3D_HOWTO_LANG_TABLE[LANG_NUM]; +#define MSG_PRUSA3D_HOWTO LANG_TABLE_SELECT(MSG_PRUSA3D_HOWTO_LANG_TABLE) +extern const char* const MSG_REBOOT_LANG_TABLE[LANG_NUM]; +#define MSG_REBOOT LANG_TABLE_SELECT(MSG_REBOOT_LANG_TABLE) extern const char* const MSG_RECOVERING_PRINT_LANG_TABLE[1]; #define MSG_RECOVERING_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_RECOVERING_PRINT_LANG_TABLE, 0) extern const char* const MSG_RECOVER_PRINT_LANG_TABLE[1]; #define MSG_RECOVER_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_RECOVER_PRINT_LANG_TABLE, 0) -extern const char* const MSG_CRASH_DETECTED_LANG_TABLE[1]; -#define MSG_CRASH_DETECTED LANG_TABLE_SELECT_EXPLICIT(MSG_CRASH_DETECTED_LANG_TABLE, 0) extern const char* const MSG_RECTRACT_LANG_TABLE[1]; #define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) extern const char* const MSG_REFRESH_LANG_TABLE[1]; @@ -445,12 +444,12 @@ extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; #define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0) extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; #define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) -extern const char* const MSG_RESUME_PRINT_LANG_TABLE[1]; -#define MSG_RESUME_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_RESUME_PRINT_LANG_TABLE, 0) -extern const char* const MSG_RESUMING_LANG_TABLE[1]; -#define MSG_RESUMING LANG_TABLE_SELECT_EXPLICIT(MSG_RESUMING_LANG_TABLE, 0) -extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[1]; -#define MSG_RESUMING_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_RESUMING_PRINT_LANG_TABLE, 0) +extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUME_PRINT LANG_TABLE_SELECT(MSG_RESUME_PRINT_LANG_TABLE) +extern const char* const MSG_RESUMING_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING LANG_TABLE_SELECT(MSG_RESUMING_LANG_TABLE) +extern const char* const MSG_RESUMING_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_RESUMING_PRINT LANG_TABLE_SELECT(MSG_RESUMING_PRINT_LANG_TABLE) extern const char* const MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE[1]; #define MSG_SD_CANT_ENTER_SUBDIR LANG_TABLE_SELECT_EXPLICIT(MSG_SD_CANT_ENTER_SUBDIR_LANG_TABLE, 0) extern const char* const MSG_SD_CANT_OPEN_SUBDIR_LANG_TABLE[1]; @@ -465,8 +464,8 @@ extern const char* const MSG_SD_FILE_SELECTED_LANG_TABLE[1]; #define MSG_SD_FILE_SELECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_FILE_SELECTED_LANG_TABLE, 0) extern const char* const MSG_SD_INIT_FAIL_LANG_TABLE[1]; #define MSG_SD_INIT_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INIT_FAIL_LANG_TABLE, 0) -extern const char* const MSG_SD_INSERTED_LANG_TABLE[1]; -#define MSG_SD_INSERTED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_INSERTED_LANG_TABLE, 0) +extern const char* const MSG_SD_INSERTED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_INSERTED LANG_TABLE_SELECT(MSG_SD_INSERTED_LANG_TABLE) extern const char* const MSG_SD_NOT_PRINTING_LANG_TABLE[1]; #define MSG_SD_NOT_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_SD_NOT_PRINTING_LANG_TABLE, 0) extern const char* const MSG_SD_OPENROOT_FAIL_LANG_TABLE[1]; @@ -475,8 +474,8 @@ extern const char* const MSG_SD_OPEN_FILE_FAIL_LANG_TABLE[1]; #define MSG_SD_OPEN_FILE_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_OPEN_FILE_FAIL_LANG_TABLE, 0) extern const char* const MSG_SD_PRINTING_BYTE_LANG_TABLE[1]; #define MSG_SD_PRINTING_BYTE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_PRINTING_BYTE_LANG_TABLE, 0) -extern const char* const MSG_SD_REMOVED_LANG_TABLE[1]; -#define MSG_SD_REMOVED LANG_TABLE_SELECT_EXPLICIT(MSG_SD_REMOVED_LANG_TABLE, 0) +extern const char* const MSG_SD_REMOVED_LANG_TABLE[LANG_NUM]; +#define MSG_SD_REMOVED LANG_TABLE_SELECT(MSG_SD_REMOVED_LANG_TABLE) extern const char* const MSG_SD_SIZE_LANG_TABLE[1]; #define MSG_SD_SIZE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_SIZE_LANG_TABLE, 0) extern const char* const MSG_SD_VOL_INIT_FAIL_LANG_TABLE[1]; @@ -485,148 +484,150 @@ extern const char* const MSG_SD_WORKDIR_FAIL_LANG_TABLE[1]; #define MSG_SD_WORKDIR_FAIL LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WORKDIR_FAIL_LANG_TABLE, 0) extern const char* const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1]; #define MSG_SD_WRITE_TO_FILE LANG_TABLE_SELECT_EXPLICIT(MSG_SD_WRITE_TO_FILE_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_LANG_TABLE[1]; -#define MSG_SELFTEST LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_LANG_TABLE, 0) +extern const char* const MSG_SELFTEST_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST LANG_TABLE_SELECT(MSG_SELFTEST_LANG_TABLE) extern const char* const MSG_SELFTEST_AXIS_LANG_TABLE[1]; #define MSG_SELFTEST_AXIS LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_AXIS_LANG_TABLE, 0) extern const char* const MSG_SELFTEST_AXIS_LENGTH_LANG_TABLE[1]; #define MSG_SELFTEST_AXIS_LENGTH LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_AXIS_LENGTH_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[1]; -#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_BEDHEATER_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_BED_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_X_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_Y_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[1]; -#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_CHECK_Z_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[1]; -#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[1]; -#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_ENDSTOP_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[1]; -#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[1]; -#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[1]; -#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_ERROR_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[1]; -#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[1]; -#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_FAILED_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[1]; -#define MSG_SELFTEST_FAN LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_FAN_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[1]; -#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_FAN_NO_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[1]; -#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_FAN_YES_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[1]; -#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[1]; -#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_MOTOR_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[1]; -#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_OK_LANG_TABLE[1]; -#define MSG_SELFTEST_OK LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_OK_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[1]; -#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_START_LANG_TABLE[1]; -#define MSG_SELFTEST_START LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_START_LANG_TABLE, 0) -extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[1]; -#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT_EXPLICIT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE, 0) +extern const char* const MSG_SELFTEST_BEDHEATER_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_BEDHEATER LANG_TABLE_SELECT(MSG_SELFTEST_BEDHEATER_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ALLCORRECT LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ALLCORRECT_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_BED LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_BED_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_HOTEND LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_HOTEND_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_X_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_X LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_X_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) +extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) +extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOPS LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOPS_LANG_TABLE) +extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) +extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) +extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE) +extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE) +extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_MOTOR LANG_TABLE_SELECT(MSG_SELFTEST_MOTOR_LANG_TABLE) +extern const char* const MSG_SELFTEST_NOTCONNECTED_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_NOTCONNECTED LANG_TABLE_SELECT(MSG_SELFTEST_NOTCONNECTED_LANG_TABLE) +extern const char* const MSG_SELFTEST_OK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_OK LANG_TABLE_SELECT(MSG_SELFTEST_OK_LANG_TABLE) +extern const char* const MSG_SELFTEST_PLEASECHECK_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_PLEASECHECK LANG_TABLE_SELECT(MSG_SELFTEST_PLEASECHECK_LANG_TABLE) +extern const char* const MSG_SELFTEST_START_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_START LANG_TABLE_SELECT(MSG_SELFTEST_START_LANG_TABLE) +extern const char* const MSG_SELFTEST_WIRINGERROR_LANG_TABLE[LANG_NUM]; +#define MSG_SELFTEST_WIRINGERROR LANG_TABLE_SELECT(MSG_SELFTEST_WIRINGERROR_LANG_TABLE) extern const char* const MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE[1]; #define MSG_SERIAL_ERROR_MENU_STRUCTURE LANG_TABLE_SELECT_EXPLICIT(MSG_SERIAL_ERROR_MENU_STRUCTURE_LANG_TABLE, 0) -extern const char* const MSG_SETTINGS_LANG_TABLE[1]; -#define MSG_SETTINGS LANG_TABLE_SELECT_EXPLICIT(MSG_SETTINGS_LANG_TABLE, 0) +extern const char* const MSG_SETTINGS_LANG_TABLE[LANG_NUM]; +#define MSG_SETTINGS LANG_TABLE_SELECT(MSG_SETTINGS_LANG_TABLE) extern const char* const MSG_SET_HOME_OFFSETS_LANG_TABLE[1]; #define MSG_SET_HOME_OFFSETS LANG_TABLE_SELECT_EXPLICIT(MSG_SET_HOME_OFFSETS_LANG_TABLE, 0) extern const char* const MSG_SET_ORIGIN_LANG_TABLE[1]; #define MSG_SET_ORIGIN LANG_TABLE_SELECT_EXPLICIT(MSG_SET_ORIGIN_LANG_TABLE, 0) -extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[1]; -#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT_EXPLICIT(MSG_SET_TEMPERATURE_LANG_TABLE, 0) -extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[1]; -#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT_EXPLICIT(MSG_SHOW_END_STOPS_LANG_TABLE, 0) -extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[1]; -#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_SILENT_MODE_OFF_LANG_TABLE, 0) -extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[1]; -#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT_EXPLICIT(MSG_SILENT_MODE_ON_LANG_TABLE, 0) +extern const char* const MSG_SET_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_SET_TEMPERATURE LANG_TABLE_SELECT(MSG_SET_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM]; +#define MSG_SHOW_END_STOPS LANG_TABLE_SELECT(MSG_SHOW_END_STOPS_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_OFF LANG_TABLE_SELECT(MSG_SILENT_MODE_OFF_LANG_TABLE) +extern const char* const MSG_SILENT_MODE_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SILENT_MODE_ON LANG_TABLE_SELECT(MSG_SILENT_MODE_ON_LANG_TABLE) extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1]; #define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) -extern const char* const MSG_SPEED_LANG_TABLE[1]; -#define MSG_SPEED LANG_TABLE_SELECT_EXPLICIT(MSG_SPEED_LANG_TABLE, 0) +extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; +#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) extern const char* const MSG_STACK_ERROR_LANG_TABLE[1]; #define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0) -extern const char* const MSG_STATISTICS_LANG_TABLE[1]; -#define MSG_STATISTICS LANG_TABLE_SELECT_EXPLICIT(MSG_STATISTICS_LANG_TABLE, 0) -extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[1]; -#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT_EXPLICIT(MSG_STATS_FILAMENTUSED_LANG_TABLE, 0) -extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[1]; -#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT_EXPLICIT(MSG_STATS_PRINTTIME_LANG_TABLE, 0) -extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[1]; -#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_STATS_TOTALFILAMENT_LANG_TABLE, 0) -extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[1]; -#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT_EXPLICIT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE, 0) +extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; +#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) +extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_FILAMENTUSED LANG_TABLE_SELECT(MSG_STATS_FILAMENTUSED_LANG_TABLE) +extern const char* const MSG_STATS_PRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_PRINTTIME LANG_TABLE_SELECT(MSG_STATS_PRINTTIME_LANG_TABLE) +extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) +extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; +#define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; #define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) -extern const char* const MSG_STOPPED_LANG_TABLE[1]; -#define MSG_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_STOPPED_LANG_TABLE, 0) -extern const char* const MSG_STOP_PRINT_LANG_TABLE[1]; -#define MSG_STOP_PRINT LANG_TABLE_SELECT_EXPLICIT(MSG_STOP_PRINT_LANG_TABLE, 0) +extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; +#define MSG_STOPPED LANG_TABLE_SELECT(MSG_STOPPED_LANG_TABLE) +extern const char* const MSG_STOP_PRINT_LANG_TABLE[LANG_NUM]; +#define MSG_STOP_PRINT LANG_TABLE_SELECT(MSG_STOP_PRINT_LANG_TABLE) extern const char* const MSG_STORE_EPROM_LANG_TABLE[1]; #define MSG_STORE_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_STORE_EPROM_LANG_TABLE, 0) -extern const char* const MSG_SUPPORT_LANG_TABLE[1]; -#define MSG_SUPPORT LANG_TABLE_SELECT_EXPLICIT(MSG_SUPPORT_LANG_TABLE, 0) -extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[1]; -#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_SWITCH_PS_OFF_LANG_TABLE, 0) -extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[1]; -#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT_EXPLICIT(MSG_SWITCH_PS_ON_LANG_TABLE, 0) -extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[1]; -#define MSG_TAKE_EFFECT LANG_TABLE_SELECT_EXPLICIT(MSG_TAKE_EFFECT_LANG_TABLE, 0) -extern const char* const MSG_TEMPERATURE_LANG_TABLE[1]; -#define MSG_TEMPERATURE LANG_TABLE_SELECT_EXPLICIT(MSG_TEMPERATURE_LANG_TABLE, 0) -extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[1]; -#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CALIBRATION_LANG_TABLE, 0) -extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[1]; -#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE, 0) -extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[1]; -#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE, 0) -extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[1]; -#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT_EXPLICIT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE, 0) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[1]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE, 0) -extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[1]; -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT_EXPLICIT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE, 0) -extern const char* const MSG_TUNE_LANG_TABLE[1]; -#define MSG_TUNE LANG_TABLE_SELECT_EXPLICIT(MSG_TUNE_LANG_TABLE, 0) +extern const char* const MSG_SUPPORT_LANG_TABLE[LANG_NUM]; +#define MSG_SUPPORT LANG_TABLE_SELECT(MSG_SUPPORT_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_OFF LANG_TABLE_SELECT(MSG_SWITCH_PS_OFF_LANG_TABLE) +extern const char* const MSG_SWITCH_PS_ON_LANG_TABLE[LANG_NUM]; +#define MSG_SWITCH_PS_ON LANG_TABLE_SELECT(MSG_SWITCH_PS_ON_LANG_TABLE) +extern const char* const MSG_TAKE_EFFECT_LANG_TABLE[LANG_NUM]; +#define MSG_TAKE_EFFECT LANG_TABLE_SELECT(MSG_TAKE_EFFECT_LANG_TABLE) +extern const char* const MSG_TEMPERATURE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMPERATURE LANG_TABLE_SELECT(MSG_TEMPERATURE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_DONE LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_DONE_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_OFF LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_OFF_LANG_TABLE) +extern const char* const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TEMP_CALIBRATION_ON LANG_TABLE_SELECT(MSG_TEMP_CALIBRATION_ON_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE) +extern const char* const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM]; +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON LANG_TABLE_SELECT(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE) +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[1]; -#define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOADING_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[1]; -#define MSG_UNLOAD_ALL LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_ALL_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[1]; -#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[1]; -#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[1]; -#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[1]; -#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE, 0) -extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[1]; -#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT_EXPLICIT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE, 0) -extern const char* const MSG_USB_PRINTING_LANG_TABLE[1]; -#define MSG_USB_PRINTING LANG_TABLE_SELECT_EXPLICIT(MSG_USB_PRINTING_LANG_TABLE, 0) -extern const char* const MSG_USED_LANG_TABLE[1]; -#define MSG_USED LANG_TABLE_SELECT_EXPLICIT(MSG_USED_LANG_TABLE, 0) -extern const char* const MSG_USERWAIT_LANG_TABLE[1]; -#define MSG_USERWAIT LANG_TABLE_SELECT_EXPLICIT(MSG_USERWAIT_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_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_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_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; +#define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) +extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; +#define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) +extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; +#define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) +extern const char* const MSG_V2_CALIBRATION_LANG_TABLE[1]; +#define MSG_V2_CALIBRATION LANG_TABLE_SELECT_EXPLICIT(MSG_V2_CALIBRATION_LANG_TABLE, 0) extern const char* const MSG_VMIN_LANG_TABLE[1]; #define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; @@ -635,18 +636,56 @@ 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_WATCH_LANG_TABLE[1]; -#define MSG_WATCH LANG_TABLE_SELECT_EXPLICIT(MSG_WATCH_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]; #define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_LANG_TABLE[1]; +#define MSG_WIZARD LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1]; +#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1]; +#define MSG_WIZARD_CLEAN_HEATBED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_DONE_LANG_TABLE[1]; +#define MSG_WIZARD_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_DONE_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1]; +#define MSG_WIZARD_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_HEATING_LANG_TABLE[1]; +#define MSG_WIZARD_HEATING LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_HEATING_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1]; +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1]; +#define MSG_WIZARD_LOAD_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1]; +#define MSG_WIZARD_PLA_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_PLA_FILAMENT_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_QUIT_LANG_TABLE[1]; +#define MSG_WIZARD_QUIT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_QUIT_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1]; +#define MSG_WIZARD_REPEAT_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_RERUN_LANG_TABLE[1]; +#define MSG_WIZARD_RERUN LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_RERUN_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_SELFTEST_LANG_TABLE[1]; +#define MSG_WIZARD_SELFTEST LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_SELFTEST_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_V2_CAL_LANG_TABLE[1]; +#define MSG_WIZARD_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1]; +#define MSG_WIZARD_V2_CAL_2 LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_2_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_WELCOME_LANG_TABLE[1]; +#define MSG_WIZARD_WELCOME LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WELCOME_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1]; +#define MSG_WIZARD_WILL_PREHEAT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WILL_PREHEAT_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1]; +#define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_XYZ_CAL_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[1]; +#define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_Z_CAL_LANG_TABLE, 0) extern const char* const MSG_X_MAX_LANG_TABLE[1]; #define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) extern const char* const MSG_X_MIN_LANG_TABLE[1]; #define MSG_X_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_X_MIN_LANG_TABLE, 0) -extern const char* const MSG_YES_LANG_TABLE[1]; -#define MSG_YES LANG_TABLE_SELECT_EXPLICIT(MSG_YES_LANG_TABLE, 0) +extern const char* const MSG_YES_LANG_TABLE[LANG_NUM]; +#define MSG_YES LANG_TABLE_SELECT(MSG_YES_LANG_TABLE) extern const char* const MSG_Y_MAX_LANG_TABLE[1]; #define MSG_Y_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Y_MAX_LANG_TABLE, 0) extern const char* const MSG_Y_MIN_LANG_TABLE[1]; @@ -659,8 +698,8 @@ extern const char* const MSG_Z_MAX_LANG_TABLE[1]; #define MSG_Z_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MAX_LANG_TABLE, 0) extern const char* const MSG_Z_MIN_LANG_TABLE[1]; #define MSG_Z_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_Z_MIN_LANG_TABLE, 0) -extern const char* const WELCOME_MSG_LANG_TABLE[1]; -#define WELCOME_MSG LANG_TABLE_SELECT_EXPLICIT(WELCOME_MSG_LANG_TABLE, 0) +extern const char* const WELCOME_MSG_LANG_TABLE[LANG_NUM]; +#define WELCOME_MSG LANG_TABLE_SELECT(WELCOME_MSG_LANG_TABLE) extern char* CAT2(const char *s1,const char *s2); extern char* CAT4(const char *s1,const char *s2,const char *s3,const char *s4); diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 44a7b0f4..77542261 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -314,3 +314,26 @@ #define(length=11, lines=1) MSG_INFO_PRINT_FAN "Print FAN: " #define(length=11, lines=1) MSG_INFO_FILAMENT_XDIFF "Fil. Xd:" #define(length=11, lines=1) MSG_INFO_FILAMENT_YDIFF "Fil. Ydiff:" + +#define(length=17, lines=1) MSG_WIZARD "Wizard" +#define(length=20, lines=7) MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +#define(length=20, lines=8) MSG_WIZARD_QUIT "You can always resume the Wizard from Calibration -> Wizard." +#define(length=20, lines=8) MSG_WIZARD_SELFTEST "First, I will run the selftest to check most common assembly problems." +#define(length=20, lines=8) MSG_WIZARD_CALIBRATION_FAILED "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +#define(length=20, lines=8) MSG_WIZARD_XYZ_CAL "I will run xyz calibration now. It will take approx. 12 mins." +#define(length=20, lines=2) MSG_WIZARD_FILAMENT_LOADED "Is filament loaded?" +#define(length=20, lines=8) MSG_WIZARD_Z_CAL "I will run z calibration now." +#define(length=20, lines=4) MSG_WIZARD_WILL_PREHEAT "Now I will preheat nozzle for PLA." +#define(length=20, lines=3) MSG_WIZARD_HEATING "Preheating nozzle. Please wait." +#define(lenght=20, lines=8) MSG_WIZARD_V2_CAL "Now I will calibrate distance between tip of the nozzle and heatbed surface." +#define(lenght=20, lines=12) MSG_WIZARD_V2_CAL_2 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." +#define(lenght=17, lines=1) MSG_V2_CALIBRATION "First layer cal." +#define(lenght=20, lines=8) MSG_WIZARD_DONE "All is done. Happy printing!" +#define(lenght=20, lines=8) MSG_WIZARD_LOAD_FILAMENT "Please insert PLA filament to the extruder, then press knob to load it." +#define(lenght=20, lines=7) MSG_WIZARD_RERUN "Running Wizard will delete current calibration results and start from the beginning. Continue?" +#define(lenght=20, lines=7) MSG_WIZARD_REPEAT_V2_CAL "Do you want to repeat last step to readjust distance between nozzle and heatbed?" +#define(lenght=20, lines=8) MSG_WIZARD_CLEAN_HEATBED "Please clean heatbed and then press the knob." +#define(lenght=20, lines=2) MSG_WIZARD_PLA_FILAMENT "Is it PLA filament?" +#define(lenght=20, lines=8) MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." +#define(lenght=20, lines=2) MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" +#define(lenght=20, lines=4) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." \ No newline at end of file diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d45cb0c6..915145bc 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -12,6 +12,7 @@ #include "util.h" #include "mesh_bed_leveling.h" //#include "Configuration.h" +#include "cmdqueue.h" #include "SdFatUtil.h" @@ -625,6 +626,504 @@ void lcd_commands() } } +#ifdef SNMM + if (lcd_commands_type == LCD_COMMAND_V2_CAL) + { + char cmd1[30]; + float width = 0.4; + float length = 20 - width; + float extr = count_e(0.2, width, length); + float extr_short_segment = count_e(0.2, width, width); + + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + if (lcd_commands_step == 0) + { + lcd_commands_step = 10; + } + if (lcd_commands_step == 10 && !blocks_queued() && cmd_buffer_empty()) + { + enquecommand_P(PSTR("M107")); + enquecommand_P(PSTR("M104 S210")); + enquecommand_P(PSTR("M140 S55")); + enquecommand_P(PSTR("M190 S55")); + enquecommand_P(PSTR("M109 S210")); + enquecommand_P(PSTR("T0")); + enquecommand_P(PSTR("M117 First layer cal.")); + enquecommand_P(PSTR("G87")); //sets calibration status + enquecommand_P(PSTR("G28")); + enquecommand_P(PSTR("G21")); //set units to millimeters + enquecommand_P(PSTR("G90")); //use absolute coordinates + enquecommand_P(PSTR("M83")); //use relative distances for extrusion + enquecommand_P(PSTR("G92 E0")); + enquecommand_P(PSTR("M203 E100")); + enquecommand_P(PSTR("M92 E140")); + lcd_commands_step = 9; + } + if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + enquecommand_P(PSTR("G1 Z0.250 F7200.000")); + enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); + enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); + enquecommand_P(PSTR("G1 Z0.200 F7200.000")); + enquecommand_P(PSTR("G1 X220.0 E13 F1000.0")); + enquecommand_P(PSTR("G1 X240.0 E0 F1000.0")); + enquecommand_P(PSTR("G92 E0.0")); + enquecommand_P(PSTR("G21")); + enquecommand_P(PSTR("G90")); + enquecommand_P(PSTR("M83")); + enquecommand_P(PSTR("G1 E-4 F2100.00000")); + enquecommand_P(PSTR("G1 Z0.150 F7200.000")); + enquecommand_P(PSTR("M204 S1000")); + enquecommand_P(PSTR("G1 F4000")); + + lcd_implementation_clear(); + lcd_goto_menu(lcd_babystep_z, 0, false); + + + lcd_commands_step = 8; + } + if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) //draw meander + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + + + enquecommand_P(PSTR("G1 X50 Y155")); + enquecommand_P(PSTR("G1 X60 Y155 E4")); + enquecommand_P(PSTR("G1 F1080")); + enquecommand_P(PSTR("G1 X75 Y155 E2.5")); + enquecommand_P(PSTR("G1 X100 Y155 E2")); + enquecommand_P(PSTR("G1 X200 Y155 E2.62773")); + enquecommand_P(PSTR("G1 X200 Y135 E0.66174")); + enquecommand_P(PSTR("G1 X50 Y135 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y115 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y115 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y95 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y95 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y75 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y75 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); + + lcd_commands_step = 7; + } + + if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 4; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 6; + } + + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 4; i < 8; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 5; + } + + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 8; i < 12; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 4; + } + + if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 12; i < 16; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 3; + } + + if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + enquecommand_P(PSTR("G4 S0")); + enquecommand_P(PSTR("G1 E-4 F2100.00000")); + enquecommand_P(PSTR("G1 Z0.5 F7200.000")); + enquecommand_P(PSTR("G1 X245 Y1")); + enquecommand_P(PSTR("G1 X240 E4")); + enquecommand_P(PSTR("G1 F4000")); + enquecommand_P(PSTR("G1 X190 E2.7")); + enquecommand_P(PSTR("G1 F4600")); + enquecommand_P(PSTR("G1 X110 E2.8")); + enquecommand_P(PSTR("G1 F5200")); + enquecommand_P(PSTR("G1 X40 E3")); + enquecommand_P(PSTR("G1 E-15.0000 F5000")); + enquecommand_P(PSTR("G1 E-50.0000 F5400")); + enquecommand_P(PSTR("G1 E-15.0000 F3000")); + enquecommand_P(PSTR("G1 E-12.0000 F2000")); + enquecommand_P(PSTR("G1 F1600")); + + lcd_commands_step = 2; + } + if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + + enquecommand_P(PSTR("G1 X0 Y1 E3.0000")); + enquecommand_P(PSTR("G1 X50 Y1 E-5.0000")); + enquecommand_P(PSTR("G1 F2000")); + enquecommand_P(PSTR("G1 X0 Y1 E5.0000")); + enquecommand_P(PSTR("G1 X50 Y1 E-5.0000")); + enquecommand_P(PSTR("G1 F2400")); + enquecommand_P(PSTR("G1 X0 Y1 E5.0000")); + enquecommand_P(PSTR("G1 X50 Y1 E - 5.0000")); + enquecommand_P(PSTR("G1 F2400")); + enquecommand_P(PSTR("G1 X0 Y1 E5.0000")); + enquecommand_P(PSTR("G1 X50 Y1 E-3.0000")); + enquecommand_P(PSTR("G4 S0")); + enquecommand_P(PSTR("M107")); + enquecommand_P(PSTR("M104 S0")); + enquecommand_P(PSTR("M140 S0")); + enquecommand_P(PSTR("G1 X10 Y180 F4000")); + enquecommand_P(PSTR("G1 Z10 F1300.000")); + enquecommand_P(PSTR("M84")); + + lcd_commands_step = 1; + + } + + if (lcd_commands_step == 1 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_setstatuspgm(WELCOME_MSG); + lcd_commands_step = 0; + lcd_commands_type = 0; + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { + lcd_wizard(10); + } + } + + } + +#else //if not SNMM + + if (lcd_commands_type == LCD_COMMAND_V2_CAL) + { + char cmd1[30]; + float width = 0.4; + float length = 20 - width; + float extr = count_e(0.2, width, length); + float extr_short_segment = count_e(0.2, width, width); + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + if (lcd_commands_step == 0) + { + lcd_commands_step = 9; + } + if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty()) + { + enquecommand_P(PSTR("M107")); + enquecommand_P(PSTR("M104 S210")); + enquecommand_P(PSTR("M140 S55")); + enquecommand_P(PSTR("M190 S55")); + enquecommand_P(PSTR("M109 S210")); + enquecommand_P(PSTR("M117 First layer cal.")); + enquecommand_P(PSTR("G87")); //sets calibration status + enquecommand_P(PSTR("G28")); + enquecommand_P(PSTR("G92 E0.0")); + lcd_commands_step = 8; + } + if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) + { + + lcd_implementation_clear(); + lcd_goto_menu(lcd_babystep_z, 0, false); + enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0")); //intro line + enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0")); //intro line + enquecommand_P(PSTR("G92 E0.0")); + enquecommand_P(PSTR("G21")); //set units to millimeters + enquecommand_P(PSTR("G90")); //use absolute coordinates + enquecommand_P(PSTR("M83")); //use relative distances for extrusion + enquecommand_P(PSTR("G1 E - 1.50000 F2100.00000")); + enquecommand_P(PSTR("G1 Z0.150 F7200.000")); + enquecommand_P(PSTR("M204 S1000")); //set acceleration + enquecommand_P(PSTR("G1 F4000")); + lcd_commands_step = 7; + } + if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) //draw meander + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + + + //just opposite direction + /*enquecommand_P(PSTR("G1 X50 Y55")); + enquecommand_P(PSTR("G1 F1080")); + enquecommand_P(PSTR("G1 X200 Y55 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y75 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y75 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y95 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y95 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y115 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y115 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y135 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y135 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y155 E0.66174")); + enquecommand_P(PSTR("G1 X100 Y155 E2.62773")); + enquecommand_P(PSTR("G1 X75 Y155 E2")); + enquecommand_P(PSTR("G1 X50 Y155 E2.5")); + enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000"));*/ + + + enquecommand_P(PSTR("G1 X50 Y155")); + enquecommand_P(PSTR("G1 F1080")); + enquecommand_P(PSTR("G1 X75 Y155 E2.5")); + enquecommand_P(PSTR("G1 X100 Y155 E2")); + enquecommand_P(PSTR("G1 X200 Y155 E2.62773")); + enquecommand_P(PSTR("G1 X200 Y135 E0.66174")); + enquecommand_P(PSTR("G1 X50 Y135 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y115 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y115 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y95 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y95 E3.62773")); + enquecommand_P(PSTR("G1 X50 Y75 E0.49386")); + enquecommand_P(PSTR("G1 X200 Y75 E3.62773")); + enquecommand_P(PSTR("G1 X200 Y55 E0.49386")); + enquecommand_P(PSTR("G1 X50 Y55 E3.62773")); + + lcd_commands_step = 6; + } + + if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty()) + { + + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + strcpy(cmd1, "G1 X50 Y35 E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + + for (int i = 0; i < 4; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 5; + } + + if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 4; i < 8; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 4; + } + + if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 8; i < 12; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 3; + } + + if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + for (int i = 12; i < 16; i++) { + strcpy(cmd1, "G1 X70 Y"); + strcat(cmd1, ftostr32(35 - i*width * 2)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + strcpy(cmd1, "G1 X50 Y"); + strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); + strcat(cmd1, " E"); + strcat(cmd1, ftostr43(extr)); + enquecommand(cmd1); + strcpy(cmd1, "G1 Y"); + strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); + strcat(cmd1, "E "); + strcat(cmd1, ftostr43(extr_short_segment)); + enquecommand(cmd1); + } + + lcd_commands_step = 2; + } + + if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + enquecommand_P(PSTR("M107")); //turn off printer fan + enquecommand_P(PSTR("M104 S0")); // turn off temperature + enquecommand_P(PSTR("M140 S0")); // turn off heatbed + enquecommand_P(PSTR("G1 Z10 F1300.000")); + enquecommand_P(PSTR("G1 X10 Y180 F4000")); //home X axis + enquecommand_P(PSTR("M84"));// disable motors + lcd_commands_step = 1; + } + if (lcd_commands_step == 1 && !blocks_queued() && cmd_buffer_empty()) + { + lcd_setstatuspgm(WELCOME_MSG); + lcd_commands_step = 0; + lcd_commands_type = 0; + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) { + lcd_wizard(10); + } + } + + } + +#endif // not SNMM + if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print { uint8_t stopped_extruder; @@ -811,6 +1310,12 @@ void lcd_commands() } +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length) { + //returns filament length in mm which needs to be extrude to form line with extrusion_length * extrusion_width * layer heigth dimensions + float extr = extrusion_length * layer_heigth * extrusion_width / (M_PI * pow(1.75, 2) / 4); + return extr; +} + static void lcd_return_to_status() { lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) @@ -2049,9 +2554,14 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) { const char *msg_next = lcd_display_message_fullscreen_P(msg); bool multi_screen = msg_next != NULL; - + lcd_set_custom_characters_nextpage(); // Until confirmed by a button click. for (;;) { + if (!multi_screen) { + lcd.setCursor(19, 3); + // Display the confirm char. + lcd.print(char(2)); + } // Wait for 5 seconds before displaying the next text. for (uint8_t i = 0; i < 100; ++ i) { delay_keep_alive(50); @@ -2059,6 +2569,9 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) while (lcd_clicked()) ; delay(10); while (lcd_clicked()) ; + lcd_set_custom_characters(); + lcd_update_enable(true); + lcd_update(2); return; } } @@ -2066,6 +2579,12 @@ void lcd_show_fullscreen_message_and_wait_P(const char *msg) if (msg_next == NULL) msg_next = msg; msg_next = lcd_display_message_fullscreen_P(msg_next); + if (msg_next == NULL) { + + lcd.setCursor(19, 3); + // Display the confirm char. + lcd.print(char(2)); + } } } } @@ -2084,6 +2603,76 @@ void lcd_wait_for_click() } } +int8_t lcd_show_multiscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) //currently just max. n*4 + 3 lines supported (set in language header files) +{ + const char *msg_next = lcd_display_message_fullscreen_P(msg); + bool multi_screen = msg_next != NULL; + bool yes = default_yes ? true : false; + + // Wait for user confirmation or a timeout. + unsigned long previous_millis_cmd = millis(); + int8_t enc_dif = encoderDiff; + //KEEPALIVE_STATE(PAUSED_FOR_USER); + for (;;) { + for (uint8_t i = 0; i < 100; ++i) { + delay_keep_alive(50); + 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 (msg_next == NULL) { + lcd.setCursor(0, 3); + if (enc_dif < encoderDiff && yes) { + lcd_printPGM((PSTR(" "))); + lcd.setCursor(7, 3); + lcd_printPGM((PSTR(">"))); + yes = false; + } + else if (enc_dif > encoderDiff && !yes) { + lcd_printPGM((PSTR(">"))); + lcd.setCursor(7, 3); + lcd_printPGM((PSTR(" "))); + yes = true; + } + enc_dif = encoderDiff; + } + else { + break; //turning knob skips waiting loop + } + } + if (lcd_clicked()) { + while (lcd_clicked()); + delay(10); + while (lcd_clicked()); + if (msg_next == NULL) { + //KEEPALIVE_STATE(IN_HANDLER); + lcd_set_custom_characters(); + return yes; + } + else break; + } + } + if (multi_screen) { + if (msg_next == NULL) { + msg_next = msg; + } + msg_next = lcd_display_message_fullscreen_P(msg_next); + } + if (msg_next == NULL) { + lcd.setCursor(0, 3); + if (yes) lcd_printPGM(PSTR(">")); + lcd.setCursor(1, 3); + lcd_printPGM(MSG_YES); + lcd.setCursor(7, 3); + if (!yes) lcd_printPGM(PSTR(">")); + lcd.setCursor(8, 3); + lcd_printPGM(MSG_NO); + } + } +} + int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes) { @@ -2798,6 +3387,206 @@ void lcd_toshiba_flash_air_compatibility_toggle() eeprom_update_byte((uint8_t*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY, card.ToshibaFlashAir_isEnabled()); } +void lcd_v2_calibration() { + bool loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_PLA_FILAMENT_LOADED, false, true); + if (loaded) { + lcd_commands_type = LCD_COMMAND_V2_CAL; + } + else { + lcd_display_message_fullscreen_P(MSG_PLEASE_LOAD_PLA); + for (int i = 0; i < 20; i++) { //wait max. 2s + delay_keep_alive(100); + if (lcd_clicked()) { + while (lcd_clicked()); + delay(10); + while (lcd_clicked()); + break; + } + } + } + lcd_return_to_status(); + lcd_update_enable(true); +} + +void lcd_wizard() { + bool result = true; + if (calibration_status() != CALIBRATION_STATUS_ASSEMBLED) { + result = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_RERUN, true, false); + } + if (result) { + calibration_status_store(CALIBRATION_STATUS_ASSEMBLED); + lcd_wizard(0); + } + else { + lcd_return_to_status(); + lcd_update_enable(true); + lcd_update(2); + } +} + +void lcd_wizard(int state) { + + bool end = false; + int wizard_event; + const char *msg = NULL; + while (!end) { + switch (state) { + case 0: // run wizard? + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_WELCOME, false, true); + if (wizard_event) { + state = 1; + eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); + } + else { + eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); + end = true; + } + break; + case 1: // restore calibration status + switch (calibration_status()) { + case CALIBRATION_STATUS_ASSEMBLED: state = 2; break; //run selftest + case CALIBRATION_STATUS_XYZ_CALIBRATION: state = 3; break; //run xyz cal. + case CALIBRATION_STATUS_Z_CALIBRATION: state = 4; break; //run z cal. + case CALIBRATION_STATUS_LIVE_ADJUST: state = 5; break; //run live adjust + case CALIBRATION_STATUS_CALIBRATED: end = true; eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); break; + default: state = 2; break; //if calibration status is unknown, run wizard from the beginning + } + break; + case 2: //selftest + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_SELFTEST); + wizard_event = lcd_selftest(); + if (wizard_event) { + calibration_status_store(CALIBRATION_STATUS_XYZ_CALIBRATION); + state = 3; + } + else end = true; + break; + case 3: //xyz cal. + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_XYZ_CAL); + wizard_event = gcode_M45(false); + if (wizard_event) state = 5; + else end = true; + break; + case 4: //z cal. + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_Z_CAL); + wizard_event = gcode_M45(true); + if (wizard_event) state = 11; //shipped, no need to set first layer, go to final message directly + else end = true; + break; + case 5: //is filament loaded? + //start to preheat nozzle and bed to save some time later + setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); + setTargetBed(PLA_PREHEAT_HPB_TEMP); + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_WIZARD_FILAMENT_LOADED, false); + if (wizard_event) state = 8; + else state = 6; + + break; + case 6: //waiting for preheat nozzle for PLA; +#ifndef SNMM + lcd_display_message_fullscreen_P(MSG_WIZARD_WILL_PREHEAT); + current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder); + delay_keep_alive(2000); + lcd_display_message_fullscreen_P(MSG_WIZARD_HEATING); + while (abs(degHotend(0) - PLA_PREHEAT_HOTEND_TEMP) > 3) { + lcd_display_message_fullscreen_P(MSG_WIZARD_HEATING); + + lcd.setCursor(0, 4); + lcd.print(LCD_STR_THERMOMETER[0]); + lcd.print(ftostr3(degHotend(0))); + lcd.print("/"); + lcd.print(PLA_PREHEAT_HOTEND_TEMP); + lcd.print(LCD_STR_DEGREE); + lcd_set_custom_characters(); + delay_keep_alive(1000); + } +#endif //not SNMM + state = 7; + break; + case 7: //load filament + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_LOAD_FILAMENT); + lcd_implementation_clear(); + lcd_print_at_PGM(0, 2, MSG_LOADING_FILAMENT); + loading_flag = true; +#ifdef SNMM + change_extr(0); +#endif + gcode_M701(); + state = 9; + break; + case 8: + wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_WIZARD_PLA_FILAMENT, false, true); + if (wizard_event) state = 9; + else end = true; + break; + case 9: + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_V2_CAL); + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_V2_CAL_2); + lcd_commands_type = LCD_COMMAND_V2_CAL; + end = true; + break; + case 10: //repeat first layer cal.? + wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(MSG_WIZARD_REPEAT_V2_CAL, false); + if (wizard_event) { + calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); + lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_CLEAN_HEATBED); + state = 9; + } + else { + state = 11; + } + break; + case 11: //we are finished + eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); + end = true; + break; + + default: break; + } + } + + SERIAL_ECHOPGM("State: "); + MYSERIAL.println(state); + switch (state) { //final message + case 0: //user dont want to use wizard + msg = MSG_WIZARD_QUIT; + break; + + case 1: //printer was already calibrated + msg = MSG_WIZARD_DONE; + break; + case 2: //selftest + msg = MSG_WIZARD_CALIBRATION_FAILED; + break; + case 3: //xyz cal. + msg = MSG_WIZARD_CALIBRATION_FAILED; + break; + case 4: //z cal. + msg = MSG_WIZARD_CALIBRATION_FAILED; + break; + case 8: + msg = MSG_WIZARD_INSERT_CORRECT_FILAMENT; + break; + case 9: break; //exit wizard for v2 calibration, which is implemted in lcd_commands (we need lcd_update running) + case 11: //we are finished + + msg = MSG_WIZARD_DONE; + lcd_reset_alert_level(); + lcd_setstatuspgm(WELCOME_MSG); + break; + + default: + msg = MSG_WIZARD_QUIT; + break; + + } + if (state != 9) lcd_show_fullscreen_message_and_wait_P(msg); + lcd_update_enable(true); + lcd_return_to_status(); + lcd_update(2); +} + static void lcd_crash_menu() { } @@ -2866,6 +3655,7 @@ static void lcd_calibration_menu() MENU_ITEM(back, MSG_MAIN, lcd_main_menu); if (!isPrintPaused) { + MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 W")); MENU_ITEM(function, MSG_SELFTEST, lcd_selftest); #ifdef MK1BP // MK1 @@ -2876,14 +3666,15 @@ static void lcd_calibration_menu() MENU_ITEM(function, MSG_CALIBRATE_BED, lcd_mesh_calibration); // "Calibrate Z" with storing the reference values to EEPROM. MENU_ITEM(submenu, MSG_HOMEYZ, lcd_mesh_calibration_z); + MENU_ITEM(submenu, MSG_V2_CALIBRATION, lcd_v2_calibration); #ifndef SNMM //MENU_ITEM(function, MSG_CALIBRATE_E, lcd_calibrate_extruder); #endif // "Mesh Bed Leveling" MENU_ITEM(submenu, MSG_MESH_BED_LEVELING, lcd_mesh_bedleveling); + MENU_ITEM(function, MSG_WIZARD, lcd_wizard); #endif //MK1BP - MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 W")); MENU_ITEM(submenu, MSG_BED_CORRECTION_MENU, lcd_adjust_bed); #ifndef MK1BP MENU_ITEM(submenu, MSG_CALIBRATION_PINDA_MENU, lcd_pinda_calibration_menu); @@ -4483,7 +5274,7 @@ menu_edit_type(float, float51, ftostr51, 10) menu_edit_type(float, float52, ftostr52, 100) menu_edit_type(unsigned long, long5, ftostr5, 0.01) -static void lcd_selftest() +static bool lcd_selftest() { int _progress = 0; bool _result = false; @@ -4560,7 +5351,10 @@ static void lcd_selftest() st_synchronize(); _progress = lcd_selftest_screen(6, _progress, 3, true, 1500); _result = lcd_selfcheck_axis(2, Z_MAX_POS); - enquecommand_P(PSTR("G28 W")); + if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) { + enquecommand_P(PSTR("G28 W")); + enquecommand_P(PSTR("G1 Z15")); + } } if (_result) @@ -4589,6 +5383,7 @@ static void lcd_selftest() { LCD_ALERTMESSAGERPGM(MSG_SELFTEST_FAILED); } + return(_result); } @@ -5502,6 +6297,7 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) } if (!SdFatUtil::test_stack_integrity()) stack_error(); lcd_ping(); //check that we have received ping command if we are in farm mode + if (lcd_commands_type == LCD_COMMAND_V2_CAL) lcd_commands(); } void lcd_printer_connected() { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 77e89059..fccc4be1 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -35,7 +35,7 @@ void lcd_mylang(); bool lcd_detected(void); - static void lcd_selftest(); + static bool lcd_selftest(); static bool lcd_selfcheck_endstops(); static bool lcd_selfcheck_axis(int _axis, int _travel); static bool lcd_selfcheck_axis_sg(char axis); @@ -55,7 +55,7 @@ void lcd_mylang(); 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, bool default_yes = false); - + extern int8_t lcd_show_multiscreen_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. extern bool lcd_calibrate_z_end_stop_manual(bool only_z); @@ -98,6 +98,7 @@ void lcd_mylang(); #define LCD_COMMAND_LONG_PAUSE 5 #define LCD_COMMAND_LONG_PAUSE_RESUME 6 #define LCD_COMMAND_PID_EXTRUDER 7 + #define LCD_COMMAND_V2_CAL 8 extern unsigned long lcd_timeoutToStatus; extern int lcd_commands_type; @@ -231,6 +232,8 @@ void extr_unload_all(); void extr_unload_used(); void extr_unload(); static char snmm_stop_print_menu(); +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); +static void lcd_babystep_z(); void stack_error(); static void lcd_ping_allert(); @@ -263,4 +266,7 @@ void display_loading(); void lcd_service_mode_show_result(); +void lcd_wizard(); +void lcd_wizard(int state); + #endif //ULTRALCD_H \ No newline at end of file diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index 4470bf00..90c6ebd2 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -475,8 +475,19 @@ void lcd_set_custom_characters_nextpage() B01010, B00100 }; + + byte confirm[8] = { + B00000, + B00001, + B00011, + B10110, + B11100, + B01000, + B00000 + }; lcd.createChar(1, arrdown); + lcd.createChar(2, confirm); } void lcd_set_custom_characters_degree() From e88ac72cc8392af0c61b566364d9dbefc69d9e6c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Tue, 7 Nov 2017 16:57:52 +0100 Subject: [PATCH 2/7] missing messages added --- Firmware/language_all.cpp | 20 ++++++++++++++++++++ Firmware/language_all.h | 8 ++++++++ Firmware/language_en.h | 7 ++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index a5195b53..6f8f047a 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -730,6 +730,16 @@ const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = { MSG_COUNT_X_EN }; +const char MSG_CRASHDETECT_OFF_EN[] PROGMEM = "Crash det. [off]"; +const char * const MSG_CRASHDETECT_OFF_LANG_TABLE[1] PROGMEM = { + MSG_CRASHDETECT_OFF_EN +}; + +const char MSG_CRASHDETECT_ON_EN[] PROGMEM = "Crash det. [on]"; +const char * const MSG_CRASHDETECT_ON_LANG_TABLE[1] PROGMEM = { + MSG_CRASHDETECT_ON_EN +}; + const char MSG_CRASH_DETECTED_EN[] PROGMEM = "Crash detected. Continue printing?"; const char * const MSG_CRASH_DETECTED_LANG_TABLE[1] PROGMEM = { MSG_CRASH_DETECTED_EN @@ -1196,6 +1206,16 @@ const char * const MSG_FREE_MEMORY_LANG_TABLE[1] PROGMEM = { MSG_FREE_MEMORY_EN }; +const char MSG_FSENSOR_OFF_EN[] PROGMEM = "Fil. sensor [off]"; +const char * const MSG_FSENSOR_OFF_LANG_TABLE[1] PROGMEM = { + MSG_FSENSOR_OFF_EN +}; + +const char MSG_FSENSOR_ON_EN[] PROGMEM = "Fil. sensor [on]"; +const char * const MSG_FSENSOR_ON_LANG_TABLE[1] PROGMEM = { + MSG_FSENSOR_ON_EN +}; + const char MSG_HEATING_EN[] PROGMEM = "Heating"; const char MSG_HEATING_CZ[] PROGMEM = "Zahrivani"; const char MSG_HEATING_IT[] PROGMEM = "Riscaldamento..."; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index b7480f55..9bfcbd83 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -144,6 +144,10 @@ extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM]; #define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE) extern const char* const MSG_COUNT_X_LANG_TABLE[1]; #define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0) +extern const char* const MSG_CRASHDETECT_OFF_LANG_TABLE[1]; +#define MSG_CRASHDETECT_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_CRASHDETECT_OFF_LANG_TABLE, 0) +extern const char* const MSG_CRASHDETECT_ON_LANG_TABLE[1]; +#define MSG_CRASHDETECT_ON LANG_TABLE_SELECT_EXPLICIT(MSG_CRASHDETECT_ON_LANG_TABLE, 0) extern const char* const MSG_CRASH_DETECTED_LANG_TABLE[1]; #define MSG_CRASH_DETECTED LANG_TABLE_SELECT_EXPLICIT(MSG_CRASH_DETECTED_LANG_TABLE, 0) extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM]; @@ -240,6 +244,10 @@ extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM]; #define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE) extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; #define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) +extern const char* const MSG_FSENSOR_OFF_LANG_TABLE[1]; +#define MSG_FSENSOR_OFF LANG_TABLE_SELECT_EXPLICIT(MSG_FSENSOR_OFF_LANG_TABLE, 0) +extern const char* const MSG_FSENSOR_ON_LANG_TABLE[1]; +#define MSG_FSENSOR_ON LANG_TABLE_SELECT_EXPLICIT(MSG_FSENSOR_ON_LANG_TABLE, 0) extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; #define MSG_HEATING LANG_TABLE_SELECT(MSG_HEATING_LANG_TABLE) extern const char* const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 77542261..38bc393c 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -336,4 +336,9 @@ #define(lenght=20, lines=2) MSG_WIZARD_PLA_FILAMENT "Is it PLA filament?" #define(lenght=20, lines=8) MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." #define(lenght=20, lines=2) MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" -#define(lenght=20, lines=4) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." \ No newline at end of file +#define(lenght=20, lines=4) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." + +#define MSG_CRASHDETECT_OFF "Crash det. [off]" +#define MSG_CRASHDETECT_ON "Crash det. [on]" +#define MSG_FSENSOR_OFF "Fil. sensor [off]" +#define MSG_FSENSOR_ON "Fil. sensor [on]" \ No newline at end of file From 1e81861e0c9e52487054bf8bcc48aa5ac6f9a474 Mon Sep 17 00:00:00 2001 From: michalprusa Date: Tue, 7 Nov 2017 23:54:06 +0100 Subject: [PATCH 3/7] Configuration files reordered and added build number --- Firmware/Configuration.h | 2 +- .../variants/1_75mm_MK2-EINY01-E3Dv6full.h | 421 ------------------ .../variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 401 ----------------- .../variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 403 ----------------- ...6full.h => 1_75mm_MK3-EINY10a-E3Dv6full.h} | 159 +++++-- 5 files changed, 114 insertions(+), 1272 deletions(-) delete mode 100644 Firmware/variants/1_75mm_MK2-EINY01-E3Dv6full.h delete mode 100644 Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h delete mode 100644 Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h rename Firmware/variants/{1_75mm_MK2-EINY03-E3Dv6full.h => 1_75mm_MK3-EINY10a-E3Dv6full.h} (67%) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index fbd66541..0b3bcc89 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -9,7 +9,7 @@ // Firmware version #define FW_version "3.0.12-RC2" -#define FW_build 106 +#define FW_build --BUILD-NUMBER-- #define FW_version_build FW_version " b" STR(FW_build) diff --git a/Firmware/variants/1_75mm_MK2-EINY01-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-EINY01-E3Dv6full.h deleted file mode 100644 index ae59fcdc..00000000 --- a/Firmware/variants/1_75mm_MK2-EINY01-E3Dv6full.h +++ /dev/null @@ -1,421 +0,0 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ - GENERAL SETTINGS - *------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK3" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK3" - -// Electronics -#define MOTHERBOARD BOARD_EINY_0_1a - - - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ - AXIS SETTINGS - *------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.2 - -// Travel limits after homing -#define X_MAX_POS 255 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -4 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 - -#define DEFAULT_MAX_FEEDRATE {400, 400, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {2000,2000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1200 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ - TMC2130 default settings - *------------------------------------*/ - -// PWM register configuration -#define PWM_GRAD 0x08 // 0x0F - Sets gradient - (max 15 with PWM autoscale activated) -#define PWM_AMPL 0xC8 // 0xFF - Sets PWM amplitude to 200 (max is 255) -#define PWM_AUTOSCALE 0x04 // 0x04 since writing in PWM_CONF (Activates PWM autoscaling) -#define PWM_FREQ 0x01 // 0x01 since writing in PWM_CONF (Sets PWM frequency to 2/683 fCLK) -#define PWM_THRS 0x00 // TPWM_THRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode - -#define SG_HOMING_SW 1 // stallguard "software" homing -//#define SG_HOMING_HW 1 // stallguard "hardware" homing -#define SG_THRESHOLD_X 8 // stallguard sensitivity for X axis -#define SG_THRESHOLD_Y 8 // stallguard sensitivity for Y axis -#define TCOOLTHRS 239 // coolstep treshold - -#define TMC2130_CURRENTS_H {2, 2, 2, 4} // default holding currents for all axes -#define TMC2130_CURRENTS_R {6, 6, 8, 8} // default running currents for all axes -#define TMC2130_DEBUG -//#define TMC_DBG_READS -//#define TMC_DBG_WRITE - - -/*------------------------------------ - EXTRUDER SETTINGS - *------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - -/*------------------------------------ - LOAD/UNLOAD FILAMENT SETTINGS - *------------------------------------*/ - -// Load filament commands -#define LOAD_FILAMENT_0 "M83" -#define LOAD_FILAMENT_1 "G1 E70 F400" -#define LOAD_FILAMENT_2 "G1 E40 F100" - -// Unload filament commands -#define UNLOAD_FILAMENT_0 "M83" -#define UNLOAD_FILAMENT_1 "G1 E-80 F7000" - -/*------------------------------------ - CHANGE FILAMENT SETTINGS - *------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ - ADDITIONAL FEATURES SETTINGS - *------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -//#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -//#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ - MOTOR CURRENT SETTINGS - *------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 || MOTHERBOARD == 300 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {400, 750, 750} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {400, 750, 750} // {XY,Z,E} -#endif - -/*------------------------------------ - BED SETTINGS - *------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- - PREHEAT SETTINGS - *------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ - THERMISTORS SETTINGS - *------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#define MIN_PRINT_FAN_SPEED 50 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h deleted file mode 100644 index d7019845..00000000 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ /dev/null @@ -1,401 +0,0 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_0 - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -// Prusa Single extruder multiple material suport -//#define SNMM - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is Pt100 with 4k7 pullup and no PT100 Amplifier (in case type 147 doesn't work) -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h deleted file mode 100644 index 720e74f5..00000000 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ /dev/null @@ -1,403 +0,0 @@ -#ifndef CONFIGURATION_PRUSA_H -#define CONFIGURATION_PRUSA_H - -/*------------------------------------ -GENERAL SETTINGS -*------------------------------------*/ - -// Printer revision -#define FILAMENT_SIZE "1_75mm_MK2" -#define NOZZLE_TYPE "E3Dv6full" - -// Developer flag -#define DEVELOPER - -// Printer name -#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" - -// Electronics -#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 - -// Prusa Single extruder multiple material suport -//#define SNMM - -// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) -//#define E3D_PT100_EXTRUDER_WITH_AMP -//#define E3D_PT100_EXTRUDER_NO_AMP -//#define E3D_PT100_BED_WITH_AMP -//#define E3D_PT100_BED_NO_AMP - - -/*------------------------------------ -AXIS SETTINGS -*------------------------------------*/ - -// Steps per unit {X,Y,Z,E} -#ifdef SNMM -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#else -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} -#endif - - -// Endstop inverting -const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. -const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. - -// Home position -#define MANUAL_X_HOME_POS 0 -#define MANUAL_Y_HOME_POS -2.2 -#define MANUAL_Z_HOME_POS 0.15 - -// Travel limits after homing -#define X_MAX_POS 250 -#define X_MIN_POS 0 -#define Y_MAX_POS 210 -#define Y_MIN_POS -2.2 -#define Z_MAX_POS 210 -#define Z_MIN_POS 0.15 - -// Canceled home position -#define X_CANCEL_POS 50 -#define Y_CANCEL_POS 190 - -//Pause print position -#define X_PAUSE_POS 50 -#define Y_PAUSE_POS 190 -#define Z_PAUSE_LIFT 20 - -#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) - -#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts - - -#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) - -#define Z_AXIS_ALWAYS_ON 1 - -/*------------------------------------ -EXTRUDER SETTINGS -*------------------------------------*/ - -// Mintemps -#define HEATER_0_MINTEMP 15 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define BED_MINTEMP 15 - -// Maxtemps -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -#define HEATER_0_MAXTEMP 410 -#else -#define HEATER_0_MAXTEMP 305 -#endif -#define HEATER_1_MAXTEMP 305 -#define HEATER_2_MAXTEMP 305 -#define BED_MAXTEMP 150 - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_Kp 21.70 -#define DEFAULT_Ki 1.60 -#define DEFAULT_Kd 73.76 -#else -// Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 -#endif - -// Extrude mintemp -#define EXTRUDE_MINTEMP 130 - -// Extruder cooling fans -#define EXTRUDER_0_AUTO_FAN_PIN 8 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - - - - - - -#ifdef SNMM -//#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu -#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_COOLING 10 //length for cooling moves -#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code -#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming -#endif //SNMM - -//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function - - -/*------------------------------------ -CHANGE FILAMENT SETTINGS -*------------------------------------*/ - -// Filament change configuration -#define FILAMENTCHANGEENABLE -#ifdef FILAMENTCHANGEENABLE -#define FILAMENTCHANGE_XPOS 211 -#define FILAMENTCHANGE_YPOS 0 -#define FILAMENTCHANGE_ZADD 2 -#define FILAMENTCHANGE_FIRSTRETRACT -2 -#define FILAMENTCHANGE_FINALRETRACT -80 - -#define FILAMENTCHANGE_FIRSTFEED 70 -#define FILAMENTCHANGE_FINALFEED 50 -#define FILAMENTCHANGE_RECFEED 5 - -#define FILAMENTCHANGE_XYFEED 50 -#define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 -#define FILAMENTCHANGE_EXFEED 2 -#define FILAMENTCHANGE_ZFEED 15 - -#endif - -/*------------------------------------ -ADDITIONAL FEATURES SETTINGS -*------------------------------------*/ - -// Define Prusa filament runout sensor -//#define FILAMENT_RUNOUT_SUPPORT - -#ifdef FILAMENT_RUNOUT_SUPPORT -#define FILAMENT_RUNOUT_SENSOR 1 -#endif - -// temperature runaway -#define TEMP_RUNAWAY_BED_HYSTERESIS 5 -#define TEMP_RUNAWAY_BED_TIMEOUT 360 - -#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 -#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 - -/*------------------------------------ -MOTOR CURRENT SETTINGS -*------------------------------------*/ - -// Motor Current setting for BIG RAMBo -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} - -// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} -#endif - -/*------------------------------------ -BED SETTINGS -*------------------------------------*/ - -// Define Mesh Bed Leveling system to enable it -#define MESH_BED_LEVELING -#ifdef MESH_BED_LEVELING - -#define MBL_Z_STEP 0.01 - -// Mesh definitions -#define MESH_MIN_X 35 -#define MESH_MAX_X 238 -#define MESH_MIN_Y 6 -#define MESH_MAX_Y 202 - -// Mesh upsample definition -#define MESH_NUM_X_POINTS 7 -#define MESH_NUM_Y_POINTS 7 -// Mesh measure definition -#define MESH_MEAS_NUM_X_POINTS 3 -#define MESH_MEAS_NUM_Y_POINTS 3 - -#define MESH_HOME_Z_CALIB 0.2 -#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. - -#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) -#endif - -// Bed Temperature Control -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED -// -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -// Bed temperature compensation settings -#define BED_OFFSET 10 -#define BED_OFFSET_START 40 -#define BED_OFFSET_CENTER 50 - - -#ifdef PIDTEMPBED -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) -#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) -// Define PID constants for extruder with PT100 -#define DEFAULT_bedKp 21.70 -#define DEFAULT_bedKi 1.60 -#define DEFAULT_bedKd 73.76 -#else -#define DEFAULT_bedKp 126.13 -#define DEFAULT_bedKi 4.30 -#define DEFAULT_bedKd 924.76 -#endif - -//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) -//from pidautotune -// #define DEFAULT_bedKp 97.1 -// #define DEFAULT_bedKi 1.41 -// #define DEFAULT_bedKd 1675.16 - -// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - - -/*----------------------------------- -PREHEAT SETTINGS -*------------------------------------*/ - -#define PLA_PREHEAT_HOTEND_TEMP 215 -#define PLA_PREHEAT_HPB_TEMP 55 -#define PLA_PREHEAT_FAN_SPEED 0 - -#define ABS_PREHEAT_HOTEND_TEMP 255 -#define ABS_PREHEAT_HPB_TEMP 100 -#define ABS_PREHEAT_FAN_SPEED 0 - -#define HIPS_PREHEAT_HOTEND_TEMP 220 -#define HIPS_PREHEAT_HPB_TEMP 100 -#define HIPS_PREHEAT_FAN_SPEED 0 - -#define PP_PREHEAT_HOTEND_TEMP 254 -#define PP_PREHEAT_HPB_TEMP 100 -#define PP_PREHEAT_FAN_SPEED 0 - -#define PET_PREHEAT_HOTEND_TEMP 240 -#define PET_PREHEAT_HPB_TEMP 90 -#define PET_PREHEAT_FAN_SPEED 0 - -#define FLEX_PREHEAT_HOTEND_TEMP 230 -#define FLEX_PREHEAT_HPB_TEMP 50 -#define FLEX_PREHEAT_FAN_SPEED 0 - -/*------------------------------------ -THERMISTORS SETTINGS -*------------------------------------*/ - -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a -// 247 is Pt100 with 4k7 pullup and PT100 Amplifier -// 110 is Pt100 with 1k pullup (non standard) - -#if defined(E3D_PT100_EXTRUDER_WITH_AMP) -#define TEMP_SENSOR_0 247 -#elif defined(E3D_PT100_EXTRUDER_NO_AMP) -#define TEMP_SENSOR_0 148 -#else -#define TEMP_SENSOR_0 5 -#endif -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#if defined(E3D_PT100_BED_WITH_AMP) -#define TEMP_SENSOR_BED 247 -#elif defined(E3D_PT100_BED_NO_AMP) -#define TEMP_SENSOR_BED 148 -#else -#define TEMP_SENSOR_BED 1 -#endif - -#define STACK_GUARD_TEST_VALUE 0xA2A2 - -#define MAX_BED_TEMP_CALIBRATION 50 -#define MAX_HOTEND_TEMP_CALIBRATION 50 - -#define MAX_E_STEPS_PER_UNIT 250 -#define MIN_E_STEPS_PER_UNIT 100 - -#define Z_BABYSTEP_MIN -3999 -#define Z_BABYSTEP_MAX 0 - -#define PINDA_PREHEAT_X 70 -#define PINDA_PREHEAT_Y -3 -#define PINDA_PREHEAT_Z 1 -#define PINDA_HEAT_T 120 //time in s - -#define PINDA_MIN_T 50 -#define PINDA_STEP_T 10 -#define PINDA_MAX_T 100 - -#define PING_TIME 60 //time in s -#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes -#define PING_ALLERT_PERIOD 60 //time in s - -#define LONG_PRESS_TIME 1000 //time in ms for button long press -#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release - -#define DEFAULT_PID_TEMP 210 - -#ifdef SNMM -#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print -#else -#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print -#endif - -#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-EINY03-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h similarity index 67% rename from Firmware/variants/1_75mm_MK2-EINY03-E3Dv6full.h rename to Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h index 8773c5de..dbc6cb75 100644 --- a/Firmware/variants/1_75mm_MK2-EINY03-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINY10a-E3Dv6full.h @@ -16,8 +16,7 @@ #define CUSTOM_MENDEL_NAME "Prusa i3 MK3" // Electronics -//#define MOTHERBOARD BOARD_EINY_0_4a -#define MOTHERBOARD BOARD_EINY_0_3a +#define MOTHERBOARD BOARD_EINY_0_4a // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) @@ -33,8 +32,8 @@ // Steps per unit {X,Y,Z,E} //#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} -#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280} -//#define DEFAULT_AXIS_STEPS_PER_UNIT {200,200,3200/4,560} +//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280} +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560} // Endstop inverting const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -50,7 +49,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define X_MAX_POS 255 #define X_MIN_POS 0 #define Y_MAX_POS 210 -#define Y_MIN_POS -4 +#define Y_MIN_POS -12 //orig -4 #define Z_MAX_POS 210 #define Z_MIN_POS 0.15 @@ -64,61 +63,109 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define Z_PAUSE_LIFT 20 #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 +#define HOMING_FEEDRATE {2500, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000 //#define DEFAULT_MAX_FEEDRATE {400, 400, 12, 120} // (mm/sec) -#define DEFAULT_MAX_FEEDRATE {400, 400, 12, 120} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {1000, 1000, 100, 5000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. #define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves #define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts - #define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min) -#define MAX_SILENT_FEEDRATE 2700 // +//#define MAX_SILENT_FEEDRATE 2700 // #define Z_AXIS_ALWAYS_ON 1 +// Automatic recovery after crash is detected +#define AUTOMATIC_RECOVERY_AFTER_CRASH + +//DEBUG +#define DEBUG_DCODES //D codes +#if 1 +//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial +//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD +//#define DEBUG_RESUME_PRINT //Resume/save print debug enable +//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output +//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored +//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored +//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored +//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored +//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored +//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored +#define DEBUG_DISABLE_STARTMSGS //no startup messages +//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored +//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored +//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line +//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed +#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages +//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3) +//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3) +//#define DEBUG_BLINK_ACTIVE +#endif + /*------------------------------------ TMC2130 default settings *------------------------------------*/ -// PWM register configuration -//#define TMC2130_PWM_GRAD 0x08 // 0x0F - Sets gradient - (max 15 with PWM autoscale activated) -//#define TMC2130_PWM_AMPL 0xC8 // 0xFF - Sets PWM amplitude to 200 (max is 255) -#define TMC2130_PWM_GRAD 0x01 // 0x0F - Sets gradient - (max 15 with PWM autoscale activated) -#define TMC2130_PWM_AMPL 0xc8 // 0xFF - Sets PWM amplitude to 200 (max is 255) -#define TMC2130_PWM_AUTO 0x04 // 0x04 since writing in PWM_CONF (Activates PWM autoscaling) -//#define TMC2130_PWM_FREQ 0x01 // 0x01 since writing in PWM_CONF (Sets PWM frequency to 2/683 fCLK) 35.1kHz -#define TMC2130_PWM_FREQ 0x02 // 0x02 since writing in PWM_CONF (Sets PWM frequency to 2/683 fCLK) 46.9kHz +#define TMC2130_FCLK 12000000 // fclk = 12MHz -#define TMC2130_USTEPS_XY 16 -#define TMC2130_USTEPS_Z 16 -#define TMC2130_USTEPS_E 16 -#define TMC2130_EXP256_XY 1 -#define TMC2130_EXP256_Z 1 -#define TMC2130_EXP256_E 1 +#define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes +#define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis +#define TMC2130_USTEPS_E 64 // microstep resolution for E axis +#define TMC2130_INTPOL_XY 1 // extrapolate 256 for XY axes +#define TMC2130_INTPOL_Z 1 // extrapolate 256 for Z axis +#define TMC2130_INTPOL_E 1 // extrapolate 256 for E axis -// Special configuration for XY axes for operation (during standstill, use same settings as for other axes) //todo -// RP: this settings does not work (overtemp) -//#define TMC2130_PWM_GRAD_XY 156 // 0x0F - Sets gradient - (max 15 with PWM autoscale activated) -//#define TMC2130_PWM_AMPL_XY 63 // 0xFF - Sets PWM amplitude to 200 (max is 255) -//#define TMC2130_PWM_AUTO_XY 0x00 // 0x04 since writing in PWM_CONF (Activates PWM autoscaling) -//#define TMC2130_PWM_FREQ_XY 0x01 // 0x01 since writing in PWM_CONF (Sets PWM frequency to 2/683 fCLK) +#define TMC2130_PWM_GRAD_X 2 // PWMCONF +#define TMC2130_PWM_AMPL_X 230 // PWMCONF +#define TMC2130_PWM_AUTO_X 1 // PWMCONF +#define TMC2130_PWM_FREQ_X 2 // PWMCONF -#define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode -#define TMC2130_THIGH 0 // THIGH - unused +#define TMC2130_PWM_GRAD_Y 2 // PWMCONF +#define TMC2130_PWM_AMPL_Y 235 // PWMCONF +#define TMC2130_PWM_AUTO_Y 1 // PWMCONF +#define TMC2130_PWM_FREQ_Y 2 // PWMCONF -#define TMC2130_TCOOLTHRS 239 // TCOOLTHRS - coolstep treshold +/* //not used +#define TMC2130_PWM_GRAD_Z 4 // PWMCONF +#define TMC2130_PWM_AMPL_Z 200 // PWMCONF +#define TMC2130_PWM_AUTO_Z 1 // PWMCONF +#define TMC2130_PWM_FREQ_Z 2 // PWMCONF +#define TMC2130_PWM_GRAD_E 4 // PWMCONF +#define TMC2130_PWM_AMPL_E 200 // PWMCONF +#define TMC2130_PWM_AUTO_E 1 // PWMCONF +#define TMC2130_PWM_FREQ_E 2 // PWMCONF +*/ -#define TMC2130_SG_HOMING 1 // stallguard homing -#define TMC2130_SG_HOMING_SW 1 // stallguard "software" homing -#define TMC2130_SG_THRS_X 12 // stallguard sensitivity for X axis -#define TMC2130_SG_THRS_Y 12 // stallguard sensitivity for Y axis +//#define TMC2130_PWM_DIV 683 // PWM frequency divider (1024, 683, 512, 410) +#define TMC2130_PWM_DIV 512 // PWM frequency divider (1024, 683, 512, 410) +#define TMC2130_PWM_CLK (2 * TMC2130_FCLK / TMC2130_PWM_DIV) // PWM frequency (23.4kHz, 35.1kHz, 46.9kHz, 58.5kHz for 12MHz fclk) -#define TMC2130_CURRENTS_H {2, 2, 2, 4} // default holding currents for all axes -#define TMC2130_CURRENTS_R {6, 6, 10, 8} // default running currents for all axes -#define TMC2130_DEBUG +#define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode +#define TMC2130_THIGH 0 // THIGH - unused + +//#define TMC2130_TCOOLTHRS_X 450 // TCOOLTHRS - coolstep treshold +//#define TMC2130_TCOOLTHRS_Y 450 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_X 430 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_Y 430 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_Z 500 // TCOOLTHRS - coolstep treshold +#define TMC2130_TCOOLTHRS_E 500 // TCOOLTHRS - coolstep treshold + +#define TMC2130_SG_HOMING 1 // stallguard homing +//#define TMC2130_SG_HOMING_SW_XY 1 // stallguard "software" homing for XY axes +#define TMC2130_SG_HOMING_SW_Z 1 // stallguard "software" homing for Z axis +#define TMC2130_SG_THRS_X 1 // stallguard sensitivity for X axis +#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis +#define TMC2130_SG_THRS_Z 3 // stallguard sensitivity for Z axis +#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis +#define TMC2130_SG_DELTA 128 // stallguard delta [usteps] (minimum usteps before stallguard readed - SW homing) + +//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only) +#define TMC2130_CURRENTS_H {3, 3, 20, 28} // default holding currents for all axes +#define TMC2130_CURRENTS_R {13, 20, 20, 28} // default running currents for all axes + +//#define TMC2130_DEBUG //#define TMC2130_DEBUG_WR //#define TMC2130_DEBUG_RD @@ -150,9 +197,12 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DEFAULT_Kd 73.76 #else // Define PID constants for extruder -#define DEFAULT_Kp 40.925 -#define DEFAULT_Ki 4.875 -#define DEFAULT_Kd 86.085 +//#define DEFAULT_Kp 40.925 +//#define DEFAULT_Ki 4.875 +//#define DEFAULT_Kd 86.085 +#define DEFAULT_Kp 16.13 +#define DEFAULT_Ki 1.1625 +#define DEFAULT_Kd 56.23 #endif // Extrude mintemp @@ -199,7 +249,8 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define FILAMENTCHANGE_XYFEED 50 #define FILAMENTCHANGE_EFEED 20 -#define FILAMENTCHANGE_RFEED 400 +//#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_RFEED 7000 / 60 #define FILAMENTCHANGE_EXFEED 2 #define FILAMENTCHANGE_ZFEED 15 @@ -232,7 +283,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} // Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 102 || MOTHERBOARD == 302 || MOTHERBOARD == 300 || MOTHERBOARD == 299 +#if MOTHERBOARD == 200 || MOTHERBOARD == 203 || MOTHERBOARD == 303 || MOTHERBOARD == 304 || MOTHERBOARD == 305 #define MOTOR_CURRENT_PWM_RANGE 2000 #define DEFAULT_PWM_MOTOR_CURRENT {400, 750, 750} // {XY,Z,E} #define DEFAULT_PWM_MOTOR_CURRENT_LOUD {400, 750, 750} // {XY,Z,E} @@ -404,6 +455,8 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #else #define TEMP_SENSOR_BED 1 #endif +#define TEMP_SENSOR_PINDA 1 +#define TEMP_SENSOR_AMBIENT 2000 #define STACK_GUARD_TEST_VALUE 0xA2A2 @@ -434,7 +487,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DEFAULT_PID_TEMP 210 -#define MIN_PRINT_FAN_SPEED 50 +#define MIN_PRINT_FAN_SPEED 75 #ifdef SNMM #define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print @@ -442,4 +495,18 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print #endif +// How much shall the print head be lifted on power panic? +// Ideally the Z axis will reach a zero phase of the stepper driver on power outage. To simplify this, +// UVLO_Z_AXIS_SHIFT shall be an integer multiply of the stepper driver cycle, that is 4x full step. +// For example, the Prusa i3 MK2 with 16 microsteps per full step has Z stepping of 400 microsteps per mm. +// At 400 microsteps per mm, a full step lifts the Z axis by 0.04mm, and a stepper driver cycle is 0.16mm. +// The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm. +#define UVLO_Z_AXIS_SHIFT 1.92 +// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically. +#define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5 + +#define HEATBED_V2 + +//#define SUPPORT_VERBOSITY + #endif //__CONFIGURATION_PRUSA_H From a81d28664f5993123e14cc443e486769712ed73d Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 8 Nov 2017 14:25:31 +0100 Subject: [PATCH 4/7] axis selftest fixed --- Firmware/ultralcd.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 915145bc..71b74e09 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5398,11 +5398,8 @@ static bool lcd_selfcheck_axis_sg(char axis) { case 1: axis_length = Y_MAX_POS + 8; break; default: axis_length = 210; break; } - /*SERIAL_ECHOPGM("Current position 1:"); - MYSERIAL.println(current_position[axis]);*/ - - current_position[axis] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + SERIAL_ECHOPGM("Current position 1:"); + MYSERIAL.println(current_position[axis]); #ifdef TMC2130 tmc2130_home_exit(); @@ -5410,10 +5407,10 @@ static bool lcd_selfcheck_axis_sg(char axis) { #endif for (char i = 0; i < 2; i++) { - /*SERIAL_ECHOPGM("i = "); + SERIAL_ECHOPGM("i = "); MYSERIAL.println(int(i)); SERIAL_ECHOPGM("Current position 2:"); - MYSERIAL.println(current_position[axis]);*/ + MYSERIAL.println(current_position[axis]); #ifdef TMC2130 tmc2130_home_enter(X_AXIS_MASK << axis); @@ -5433,8 +5430,13 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position_init = st_get_position_mm(axis); + SERIAL_ECHOPGM("Current position init:"); + MYSERIAL.print(current_position_init); + SERIAL_ECHOPGM("; "); + MYSERIAL.println(current_position[axis]); + if (i < 1) { - current_position[axis] += margin; + current_position[axis] += 2 * margin; 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(); current_position[axis] += axis_length; @@ -5450,6 +5452,17 @@ static bool lcd_selfcheck_axis_sg(char axis) { //plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); current_position_final = st_get_position_mm(axis); + SERIAL_ECHOPGM("Current position final:"); + MYSERIAL.print(current_position_final); + SERIAL_ECHOPGM("; "); + MYSERIAL.println(current_position[axis]); + + current_position[axis] -= margin; + 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(); + SERIAL_ECHOPGM("Current position 3:"); + MYSERIAL.println(current_position[axis]); + } measured_axis_length[i] = abs(current_position_final - current_position_init); SERIAL_ECHOPGM("Measured axis length:"); From fbbcc27f1a1f0b4e15ba2608d17d2e3555bf60a5 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Sun, 12 Nov 2017 11:30:06 +0100 Subject: [PATCH 5/7] X max lowered to 250, XYZ/Z calibration: Z top coordinate changed, changes in xyz cal. because of stell sheet, still not final version --- Firmware/Configuration_prusa.h | 2 +- Firmware/Marlin_main.cpp | 4 +++- Firmware/language_all.cpp | 15 +++++++++++++ Firmware/language_all.h | 6 +++++ Firmware/language_en.h | 8 ++++++- Firmware/mesh_bed_calibration.cpp | 7 ++++++ Firmware/ultralcd.cpp | 37 +++++++++---------------------- Firmware/ultralcd.h | 2 ++ 8 files changed, 51 insertions(+), 30 deletions(-) diff --git a/Firmware/Configuration_prusa.h b/Firmware/Configuration_prusa.h index 882e931b..d78056bd 100644 --- a/Firmware/Configuration_prusa.h +++ b/Firmware/Configuration_prusa.h @@ -46,7 +46,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define MANUAL_Z_HOME_POS 0.2 // Travel limits after homing -#define X_MAX_POS 255 +#define X_MAX_POS 250 #define X_MIN_POS 0 #define Y_MAX_POS 210 #define Y_MIN_POS -12 //orig -4 diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b5dd2996..6455c43b 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1461,6 +1461,8 @@ inline void gcode_M900() { bool calibrate_z_auto() { //lcd_display_message_fullscreen_P(MSG_CALIBRATE_Z_AUTO); + lcd_implementation_clear(); + lcd_print_at_PGM(0,1, MSG_CALIBRATE_Z_AUTO); bool endstops_enabled = enable_endstops(true); int axis_up_dir = -home_dir(Z_AXIS); tmc2130_home_enter(Z_AXIS_MASK); @@ -1484,7 +1486,7 @@ bool calibrate_z_auto() plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); st_synchronize(); enable_endstops(endstops_enabled); - current_position[Z_AXIS] = Z_MAX_POS-3.f; + current_position[Z_AXIS] = Z_MAX_POS+2.0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); return true; } diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 6f8f047a..5eecf893 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -530,6 +530,11 @@ const char * const MSG_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CALIBRATE_PINDA_DE }; +const char MSG_CALIBRATE_Z_AUTO_EN[] PROGMEM = "Calibrating Z"; +const char * const MSG_CALIBRATE_Z_AUTO_LANG_TABLE[1] PROGMEM = { + MSG_CALIBRATE_Z_AUTO_EN +}; + const char MSG_CALIBRATION_PINDA_MENU_EN[] PROGMEM = "Temp. calibration"; const char MSG_CALIBRATION_PINDA_MENU_CZ[] PROGMEM = "Teplot. kalibrace"; const char MSG_CALIBRATION_PINDA_MENU_IT[] PROGMEM = "Taratura temp."; @@ -2077,6 +2082,11 @@ const char * const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PINDA_PREHEAT_DE }; +const char MSG_PLACE_STEEL_SHEET_EN[] PROGMEM = "Please place steel sheet on heatbed."; +const char * const MSG_PLACE_STEEL_SHEET_LANG_TABLE[1] PROGMEM = { + MSG_PLACE_STEEL_SHEET_EN +}; + const char MSG_PLANNER_BUFFER_BYTES_EN[] PROGMEM = " PlannerBufferBytes: "; const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { MSG_PLANNER_BUFFER_BYTES_EN @@ -2283,6 +2293,11 @@ const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { MSG_REFRESH_EN }; +const char MSG_REMOVE_STEEL_SHEET_EN[] PROGMEM = "Please remove steel sheet."; +const char * const MSG_REMOVE_STEEL_SHEET_LANG_TABLE[1] PROGMEM = { + MSG_REMOVE_STEEL_SHEET_EN +}; + const char MSG_RESEND_EN[] PROGMEM = "Resend: "; const char * const MSG_RESEND_LANG_TABLE[1] PROGMEM = { MSG_RESEND_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 9bfcbd83..97b30cae 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -112,6 +112,8 @@ 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_CALIBRATE_PINDA_LANG_TABLE[LANG_NUM]; #define MSG_CALIBRATE_PINDA LANG_TABLE_SELECT(MSG_CALIBRATE_PINDA_LANG_TABLE) +extern const char* const MSG_CALIBRATE_Z_AUTO_LANG_TABLE[1]; +#define MSG_CALIBRATE_Z_AUTO LANG_TABLE_SELECT_EXPLICIT(MSG_CALIBRATE_Z_AUTO_LANG_TABLE, 0) extern const char* const MSG_CALIBRATION_PINDA_MENU_LANG_TABLE[LANG_NUM]; #define MSG_CALIBRATION_PINDA_MENU LANG_TABLE_SELECT(MSG_CALIBRATION_PINDA_MENU_LANG_TABLE) extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; @@ -404,6 +406,8 @@ extern const char* const MSG_PINDA_NOT_CALIBRATED_LANG_TABLE[LANG_NUM]; #define MSG_PINDA_NOT_CALIBRATED LANG_TABLE_SELECT(MSG_PINDA_NOT_CALIBRATED_LANG_TABLE) extern const char* const MSG_PINDA_PREHEAT_LANG_TABLE[LANG_NUM]; #define MSG_PINDA_PREHEAT LANG_TABLE_SELECT(MSG_PINDA_PREHEAT_LANG_TABLE) +extern const char* const MSG_PLACE_STEEL_SHEET_LANG_TABLE[1]; +#define MSG_PLACE_STEEL_SHEET LANG_TABLE_SELECT_EXPLICIT(MSG_PLACE_STEEL_SHEET_LANG_TABLE, 0) extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; #define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1]; @@ -446,6 +450,8 @@ extern const char* const MSG_RECTRACT_LANG_TABLE[1]; #define MSG_RECTRACT LANG_TABLE_SELECT_EXPLICIT(MSG_RECTRACT_LANG_TABLE, 0) extern const char* const MSG_REFRESH_LANG_TABLE[1]; #define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) +extern const char* const MSG_REMOVE_STEEL_SHEET_LANG_TABLE[1]; +#define MSG_REMOVE_STEEL_SHEET LANG_TABLE_SELECT_EXPLICIT(MSG_REMOVE_STEEL_SHEET_LANG_TABLE, 0) extern const char* const MSG_RESEND_LANG_TABLE[1]; #define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 38bc393c..87a559c7 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -338,7 +338,13 @@ #define(lenght=20, lines=2) MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" #define(lenght=20, lines=4) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." +//messages bellow has no translation yet + #define MSG_CRASHDETECT_OFF "Crash det. [off]" #define MSG_CRASHDETECT_ON "Crash det. [on]" #define MSG_FSENSOR_OFF "Fil. sensor [off]" -#define MSG_FSENSOR_ON "Fil. sensor [on]" \ No newline at end of file +#define MSG_FSENSOR_ON "Fil. sensor [on]" + +#define(length=20, lines=4) MSG_PLACE_STEEL_SHEET "Please place steel sheet on heatbed." +#define MSG_REMOVE_STEEL_SHEET "Please remove steel sheet." +#define(length=20, lines=2) MSG_CALIBRATE_Z_AUTO "Calibrating Z" \ No newline at end of file diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index cccc1fd0..3d4e4be4 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2294,6 +2294,13 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8 } #endif // SUPPORT_VERBOSITY + //make space + current_position[Z_AXIS] += 150; + go_to_current(homing_feedrate[Z_AXIS] / 60); + //plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);); + + lcd_show_fullscreen_message_and_wait_P(MSG_PLACE_STEEL_SHEET); + // Sample Z heights for the mesh bed leveling. // In addition, store the results into an eeprom, to be used later for verification of the bed leveling process. if (! sample_mesh_and_store_reference()) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 71b74e09..3ff20c6d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2390,6 +2390,8 @@ void lcd_wait_for_cool_down() { // Lets the user move the Z carriage up to the end stoppers. // When done, it sets the current Z to Z_MAX_POS and returns true. // Otherwise the Z calibration is not changed and false is returned. + +#ifndef TMC2130 bool lcd_calibrate_z_end_stop_manual(bool only_z) { bool clean_nozzle_asked = false; @@ -2481,6 +2483,8 @@ canceled: return false; } +#endif // TMC2130 + static inline bool pgm_is_whitespace(const char *c_addr) { const char c = pgm_read_byte(c_addr); @@ -5398,8 +5402,6 @@ static bool lcd_selfcheck_axis_sg(char axis) { case 1: axis_length = Y_MAX_POS + 8; break; default: axis_length = 210; break; } - SERIAL_ECHOPGM("Current position 1:"); - MYSERIAL.println(current_position[axis]); #ifdef TMC2130 tmc2130_home_exit(); @@ -5407,18 +5409,12 @@ static bool lcd_selfcheck_axis_sg(char axis) { #endif for (char i = 0; i < 2; i++) { - SERIAL_ECHOPGM("i = "); - MYSERIAL.println(int(i)); - SERIAL_ECHOPGM("Current position 2:"); - MYSERIAL.println(current_position[axis]); #ifdef TMC2130 tmc2130_home_enter(X_AXIS_MASK << axis); #endif - - - current_position[axis] -= (axis_length + margin); - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); + current_position[axis] -= (axis_length + margin); + 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(); @@ -5430,10 +5426,6 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position_init = st_get_position_mm(axis); - SERIAL_ECHOPGM("Current position init:"); - MYSERIAL.print(current_position_init); - SERIAL_ECHOPGM("; "); - MYSERIAL.println(current_position[axis]); if (i < 1) { current_position[axis] += 2 * margin; @@ -5452,23 +5444,14 @@ static bool lcd_selfcheck_axis_sg(char axis) { //plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); current_position_final = st_get_position_mm(axis); - SERIAL_ECHOPGM("Current position final:"); - MYSERIAL.print(current_position_final); - SERIAL_ECHOPGM("; "); - MYSERIAL.println(current_position[axis]); current_position[axis] -= margin; 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(); - SERIAL_ECHOPGM("Current position 3:"); - MYSERIAL.println(current_position[axis]); - } measured_axis_length[i] = abs(current_position_final - current_position_init); - SERIAL_ECHOPGM("Measured axis length:"); - MYSERIAL.println(measured_axis_length[i]); - - + //SERIAL_ECHOPGM("Measured axis length:"); + //MYSERIAL.println(measured_axis_length[i]); if (abs(measured_axis_length[i] - axis_length) > max_error_mm) { //axis length #ifdef TMC2130 @@ -5487,8 +5470,8 @@ static bool lcd_selfcheck_axis_sg(char axis) { } } - SERIAL_ECHOPGM("Axis length difference:"); - MYSERIAL.println(abs(measured_axis_length[0] - measured_axis_length[1])); + //SERIAL_ECHOPGM("Axis length difference:"); + //MYSERIAL.println(abs(measured_axis_length[0] - measured_axis_length[1])); if (abs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //loose pulleys diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index fccc4be1..681e1f21 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -58,7 +58,9 @@ void lcd_mylang(); extern int8_t lcd_show_multiscreen_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. + #ifndef TMC2130 extern bool lcd_calibrate_z_end_stop_manual(bool only_z); + #endif // Show the result of the calibration process on the LCD screen. extern void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask); From eda0c6bd39703aac6785508b04b39e06602d6dd9 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 13 Nov 2017 17:09:26 +0100 Subject: [PATCH 6/7] english version of xyz: place/remove steel sheet; wait for cooling down removed, --- Firmware/Marlin_main.cpp | 11 +++++++---- Firmware/language_all.cpp | 7 ++++++- Firmware/language_all.h | 2 ++ Firmware/language_en.h | 5 +++-- Firmware/ultralcd.cpp | 21 ++++++++++++--------- Firmware/ultralcd.h | 2 +- 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f34cd755..b7a5d0cb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1783,14 +1783,17 @@ bool gcode_M45(bool onlyZ) { if (lcd_calibrate_z_end_stop_manual(onlyZ)) { #endif //TMC2130 refresh_cmd_timeout(); - if (((degHotend(0) > MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) && (!onlyZ)) { - lcd_wait_for_cool_down(); - lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); + //if (((degHotend(0) > MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) && (!onlyZ)) { + // lcd_wait_for_cool_down(); + //} + if(!onlyZ){ + bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_STEEL_SHEET_CHECK, false, false); + if(result) lcd_show_fullscreen_message_and_wait_P(MSG_REMOVE_STEEL_SHEET); + lcd_show_fullscreen_message_and_wait_P(MSG_PAPER); lcd_display_message_fullscreen_P(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1); lcd_implementation_print_at(0, 2, 1); lcd_printPGM(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2); } - // Move the print head close to the bed. current_position[Z_AXIS] = MESH_HOME_Z_SEARCH; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder); diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 5eecf893..0b2b277a 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -2293,7 +2293,7 @@ const char * const MSG_REFRESH_LANG_TABLE[1] PROGMEM = { MSG_REFRESH_EN }; -const char MSG_REMOVE_STEEL_SHEET_EN[] PROGMEM = "Please remove steel sheet."; +const char MSG_REMOVE_STEEL_SHEET_EN[] PROGMEM = "Please remove steel sheet from heatbed."; const char * const MSG_REMOVE_STEEL_SHEET_LANG_TABLE[1] PROGMEM = { MSG_REMOVE_STEEL_SHEET_EN }; @@ -3028,6 +3028,11 @@ const char * const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_STATS_TOTALPRINTTIME_DE }; +const char MSG_STEEL_SHEET_CHECK_EN[] PROGMEM = "Is steel sheet on heatbed?"; +const char * const MSG_STEEL_SHEET_CHECK_LANG_TABLE[1] PROGMEM = { + MSG_STEEL_SHEET_CHECK_EN +}; + const char MSG_STEPPER_TOO_HIGH_EN[] PROGMEM = "Steprate too high: "; const char * const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1] PROGMEM = { MSG_STEPPER_TOO_HIGH_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 97b30cae..421e11e4 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -586,6 +586,8 @@ extern const char* const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_STATS_TOTALFILAMENT LANG_TABLE_SELECT(MSG_STATS_TOTALFILAMENT_LANG_TABLE) extern const char* const MSG_STATS_TOTALPRINTTIME_LANG_TABLE[LANG_NUM]; #define MSG_STATS_TOTALPRINTTIME LANG_TABLE_SELECT(MSG_STATS_TOTALPRINTTIME_LANG_TABLE) +extern const char* const MSG_STEEL_SHEET_CHECK_LANG_TABLE[1]; +#define MSG_STEEL_SHEET_CHECK LANG_TABLE_SELECT_EXPLICIT(MSG_STEEL_SHEET_CHECK_LANG_TABLE, 0) extern const char* const MSG_STEPPER_TOO_HIGH_LANG_TABLE[1]; #define MSG_STEPPER_TOO_HIGH LANG_TABLE_SELECT_EXPLICIT(MSG_STEPPER_TOO_HIGH_LANG_TABLE, 0) extern const char* const MSG_STOPPED_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 87a559c7..69df531a 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -346,5 +346,6 @@ #define MSG_FSENSOR_ON "Fil. sensor [on]" #define(length=20, lines=4) MSG_PLACE_STEEL_SHEET "Please place steel sheet on heatbed." -#define MSG_REMOVE_STEEL_SHEET "Please remove steel sheet." -#define(length=20, lines=2) MSG_CALIBRATE_Z_AUTO "Calibrating Z" \ No newline at end of file +#define(length=20, lines=4) MSG_REMOVE_STEEL_SHEET "Please remove steel sheet from heatbed." +#define(length=20, lines=2) MSG_CALIBRATE_Z_AUTO "Calibrating Z" +#define(length=20, lines=2) MSG_STEEL_SHEET_CHECK "Is steel sheet on heatbed?" diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3ff20c6d..a22eca1d 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2365,7 +2365,7 @@ void lcd_adjust_z() { } -void lcd_wait_for_cool_down() { +/*void lcd_wait_for_cool_down() { lcd_set_custom_characters_degree(); while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) { lcd_display_message_fullscreen_P(MSG_WAITING_TEMP); @@ -2385,7 +2385,7 @@ void lcd_wait_for_cool_down() { delay_keep_alive(1000); } lcd_set_custom_characters_arrows(); -} +}*/ // Lets the user move the Z carriage up to the end stoppers. // When done, it sets the current Z to Z_MAX_POS and returns true. @@ -5402,7 +5402,8 @@ static bool lcd_selfcheck_axis_sg(char axis) { case 1: axis_length = Y_MAX_POS + 8; break; default: axis_length = 210; break; } - + //tmc2130_sg_stop_on_crash = false; + crashdet_disable(); #ifdef TMC2130 tmc2130_home_exit(); enable_endstops(true); @@ -5426,7 +5427,6 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position_init = st_get_position_mm(axis); - if (i < 1) { current_position[axis] += 2 * margin; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); @@ -5450,8 +5450,8 @@ static bool lcd_selfcheck_axis_sg(char axis) { st_synchronize(); } measured_axis_length[i] = abs(current_position_final - current_position_init); - //SERIAL_ECHOPGM("Measured axis length:"); - //MYSERIAL.println(measured_axis_length[i]); + SERIAL_ECHOPGM("Measured axis length:"); + MYSERIAL.println(measured_axis_length[i]); if (abs(measured_axis_length[i] - axis_length) > max_error_mm) { //axis length #ifdef TMC2130 @@ -5466,12 +5466,14 @@ static bool lcd_selfcheck_axis_sg(char axis) { if (axis == Z_AXIS) _error_1 = "Z"; lcd_selftest_error(9, _error_1, _error_2); + //crashdet_enable(); + //uint8_t crashdet = eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET); return false; } } - //SERIAL_ECHOPGM("Axis length difference:"); - //MYSERIAL.println(abs(measured_axis_length[0] - measured_axis_length[1])); + SERIAL_ECHOPGM("Axis length difference:"); + MYSERIAL.println(abs(measured_axis_length[0] - measured_axis_length[1])); if (abs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //loose pulleys @@ -5483,9 +5485,10 @@ static bool lcd_selfcheck_axis_sg(char axis) { if (axis == Z_AXIS) _error_1 = "Z"; lcd_selftest_error(8, _error_1, _error_2); + //crashdet_enable(); return false; } - + //crashdet_enable(); return true; } diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 681e1f21..59f551b3 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -250,7 +250,7 @@ void lcd_farm_sdcard_menu(); void lcd_farm_sdcard_menu_w(); //void get_description(); -void lcd_wait_for_cool_down(); +//void lcd_wait_for_cool_down(); void adjust_bed_reset(); void lcd_extr_cal_reset(); From ee5505887c4a73d0f336567a95d312731ebf88d2 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 13 Nov 2017 17:43:14 +0100 Subject: [PATCH 7/7] First layer cal. corrections, translations to all languages for Wizard MK2 added --- Firmware/language_all.cpp | 309 ++++++++++++++++++++++++++++++++------ Firmware/language_all.h | 86 +++++------ Firmware/language_cz.h | 26 +++- Firmware/language_de.h | 26 +++- Firmware/language_en.h | 4 +- Firmware/language_es.h | 26 +++- Firmware/language_it.h | 26 +++- Firmware/language_pl.h | 26 +++- Firmware/ultralcd.cpp | 50 +++--- 9 files changed, 464 insertions(+), 115 deletions(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 0b2b277a..ccb67b45 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1584,6 +1584,21 @@ const char * const MSG_M115_REPORT_LANG_TABLE[1] PROGMEM = { MSG_M115_REPORT_EN }; +const char MSG_M117_V2_CALIBRATION_EN[] PROGMEM = "M117 First layer cal."; +const char MSG_M117_V2_CALIBRATION_CZ[] PROGMEM = "M117 Kal. prvni vrstvy"; +const char MSG_M117_V2_CALIBRATION_IT[] PROGMEM = "M117 Cal. primo layer."; +const char MSG_M117_V2_CALIBRATION_ES[] PROGMEM = "M117 Cal. primera cap."; +const char MSG_M117_V2_CALIBRATION_PL[] PROGMEM = "M117 Kal. 1. warstwy"; +const char MSG_M117_V2_CALIBRATION_DE[] PROGMEM = "M117 Erste-Schicht Kal."; +const char * const MSG_M117_V2_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_M117_V2_CALIBRATION_EN, + MSG_M117_V2_CALIBRATION_CZ, + MSG_M117_V2_CALIBRATION_IT, + MSG_M117_V2_CALIBRATION_ES, + MSG_M117_V2_CALIBRATION_PL, + MSG_M117_V2_CALIBRATION_DE +}; + const char MSG_M119_REPORT_EN[] PROGMEM = "Reporting endstop status"; const char * const MSG_M119_REPORT_LANG_TABLE[1] PROGMEM = { MSG_M119_REPORT_EN @@ -2093,13 +2108,33 @@ const char * const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1] PROGMEM = { }; const char MSG_PLA_FILAMENT_LOADED_EN[] PROGMEM = "Is PLA filament loaded?"; -const char * const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { - MSG_PLA_FILAMENT_LOADED_EN +const char MSG_PLA_FILAMENT_LOADED_CZ[] PROGMEM = "Je PLA filament zaveden?"; +const char MSG_PLA_FILAMENT_LOADED_IT[] PROGMEM = "Il PLA e stato caricato?"; +const char MSG_PLA_FILAMENT_LOADED_ES[] PROGMEM = "Esta el filamento PLA cargado?"; +const char MSG_PLA_FILAMENT_LOADED_PL[] PROGMEM = "Fialment PLA jest zaladowany?"; +const char MSG_PLA_FILAMENT_LOADED_DE[] PROGMEM = "Ist PLA Filament geladen?"; +const char * const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLA_FILAMENT_LOADED_EN, + MSG_PLA_FILAMENT_LOADED_CZ, + MSG_PLA_FILAMENT_LOADED_IT, + MSG_PLA_FILAMENT_LOADED_ES, + MSG_PLA_FILAMENT_LOADED_PL, + MSG_PLA_FILAMENT_LOADED_DE }; const char MSG_PLEASE_LOAD_PLA_EN[] PROGMEM = "Please load PLA filament first."; -const char * const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1] PROGMEM = { - MSG_PLEASE_LOAD_PLA_EN +const char MSG_PLEASE_LOAD_PLA_CZ[] PROGMEM = "Nejdrive zavedte PLA filament prosim."; +const char MSG_PLEASE_LOAD_PLA_IT[] PROGMEM = "Per favore prima caricare filamento di PLA."; +const char MSG_PLEASE_LOAD_PLA_ES[] PROGMEM = "Carga el filamento PLA primero por favor."; +const char MSG_PLEASE_LOAD_PLA_PL[] PROGMEM = "Prosze, najpierw zaladuj filament PLA."; +const char MSG_PLEASE_LOAD_PLA_DE[] PROGMEM = "Bitte laden Sie zuerst PLA Filament."; +const char * const MSG_PLEASE_LOAD_PLA_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PLEASE_LOAD_PLA_EN, + MSG_PLEASE_LOAD_PLA_CZ, + MSG_PLEASE_LOAD_PLA_IT, + MSG_PLEASE_LOAD_PLA_ES, + MSG_PLEASE_LOAD_PLA_PL, + MSG_PLEASE_LOAD_PLA_DE }; const char MSG_PLEASE_WAIT_EN[] PROGMEM = "Please wait"; @@ -3393,8 +3428,18 @@ const char * const MSG_USERWAIT_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_V2_CALIBRATION_EN[] PROGMEM = "First layer cal."; -const char * const MSG_V2_CALIBRATION_LANG_TABLE[1] PROGMEM = { - MSG_V2_CALIBRATION_EN +const char MSG_V2_CALIBRATION_CZ[] PROGMEM = "Kal. prvni vrstvy"; +const char MSG_V2_CALIBRATION_IT[] PROGMEM = "Cal. primo layer."; +const char MSG_V2_CALIBRATION_ES[] PROGMEM = "Cal. primera cap."; +const char MSG_V2_CALIBRATION_PL[] PROGMEM = "Kal. 1. warstwy"; +const char MSG_V2_CALIBRATION_DE[] PROGMEM = "Erste-Schicht Kal"; +const char * const MSG_V2_CALIBRATION_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_V2_CALIBRATION_EN, + MSG_V2_CALIBRATION_CZ, + MSG_V2_CALIBRATION_IT, + MSG_V2_CALIBRATION_ES, + MSG_V2_CALIBRATION_PL, + MSG_V2_CALIBRATION_DE }; const char MSG_VMIN_EN[] PROGMEM = "Vmin"; @@ -3458,93 +3503,273 @@ const char * const MSG_WIZARD_LANG_TABLE[1] PROGMEM = { }; const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."; -const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_CALIBRATION_FAILED_EN +const char MSG_WIZARD_CALIBRATION_FAILED_CZ[] PROGMEM = "Prosim nahlednete do manualu a opravte problem. Po te obnovte Wizarda rebootovanim tiskarny."; +const char MSG_WIZARD_CALIBRATION_FAILED_IT[] PROGMEM = "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."; +const char MSG_WIZARD_CALIBRATION_FAILED_ES[] PROGMEM = "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"; +const char MSG_WIZARD_CALIBRATION_FAILED_PL[] PROGMEM = "Prosze sprawdz nasz poradnik i napraw problem. Potem przywroc Wizard restartujac drukarke."; +const char MSG_WIZARD_CALIBRATION_FAILED_DE[] PROGMEM = "Bitte ueberpruefen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."; +const char * const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_CALIBRATION_FAILED_EN, + MSG_WIZARD_CALIBRATION_FAILED_CZ, + MSG_WIZARD_CALIBRATION_FAILED_IT, + MSG_WIZARD_CALIBRATION_FAILED_ES, + MSG_WIZARD_CALIBRATION_FAILED_PL, + MSG_WIZARD_CALIBRATION_FAILED_DE }; const char MSG_WIZARD_CLEAN_HEATBED_EN[] PROGMEM = "Please clean heatbed and then press the knob."; -const char * const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_CLEAN_HEATBED_EN +const char MSG_WIZARD_CLEAN_HEATBED_CZ[] PROGMEM = "Prosim ocistete heatbed a stisknete tlacitko."; +const char MSG_WIZARD_CLEAN_HEATBED_IT[] PROGMEM = "Per favore pulisci il piatto, poi premi la manopola."; +const char MSG_WIZARD_CLEAN_HEATBED_ES[] PROGMEM = "Limpia la superficie de la heatbed, por favor, y haz clic"; +const char MSG_WIZARD_CLEAN_HEATBED_PL[] PROGMEM = "Prosze oczysc stolik i nacisnij guzik."; +const char MSG_WIZARD_CLEAN_HEATBED_DE[] PROGMEM = "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."; +const char * const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_CLEAN_HEATBED_EN, + MSG_WIZARD_CLEAN_HEATBED_CZ, + MSG_WIZARD_CLEAN_HEATBED_IT, + MSG_WIZARD_CLEAN_HEATBED_ES, + MSG_WIZARD_CLEAN_HEATBED_PL, + MSG_WIZARD_CLEAN_HEATBED_DE }; const char MSG_WIZARD_DONE_EN[] PROGMEM = "All is done. Happy printing!"; -const char * const MSG_WIZARD_DONE_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_DONE_EN +const char MSG_WIZARD_DONE_CZ[] PROGMEM = "Vse je hotovo."; +const char MSG_WIZARD_DONE_IT[] PROGMEM = "Ben fatto. Buona stampa!"; +const char MSG_WIZARD_DONE_ES[] PROGMEM = "Terminado! Feliz impresion!"; +const char MSG_WIZARD_DONE_PL[] PROGMEM = "Gotowe. Udanego druku!"; +const char MSG_WIZARD_DONE_DE[] PROGMEM = "Alles wurde getan. Viel Spass beim Drucken!"; +const char * const MSG_WIZARD_DONE_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_DONE_EN, + MSG_WIZARD_DONE_CZ, + MSG_WIZARD_DONE_IT, + MSG_WIZARD_DONE_ES, + MSG_WIZARD_DONE_PL, + MSG_WIZARD_DONE_DE }; const char MSG_WIZARD_FILAMENT_LOADED_EN[] PROGMEM = "Is filament loaded?"; -const char * const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_FILAMENT_LOADED_EN +const char MSG_WIZARD_FILAMENT_LOADED_CZ[] PROGMEM = "Je filament zaveden?"; +const char MSG_WIZARD_FILAMENT_LOADED_IT[] PROGMEM = "Il filamento e stato caricato?"; +const char MSG_WIZARD_FILAMENT_LOADED_ES[] PROGMEM = "Esta el filamento cargado?"; +const char MSG_WIZARD_FILAMENT_LOADED_PL[] PROGMEM = "Filament jest zaladowany?"; +const char MSG_WIZARD_FILAMENT_LOADED_DE[] PROGMEM = "Ist das Filament geladen?"; +const char * const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_FILAMENT_LOADED_EN, + MSG_WIZARD_FILAMENT_LOADED_CZ, + MSG_WIZARD_FILAMENT_LOADED_IT, + MSG_WIZARD_FILAMENT_LOADED_ES, + MSG_WIZARD_FILAMENT_LOADED_PL, + MSG_WIZARD_FILAMENT_LOADED_DE }; const char MSG_WIZARD_HEATING_EN[] PROGMEM = "Preheating nozzle. Please wait."; -const char * const MSG_WIZARD_HEATING_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_HEATING_EN +const char MSG_WIZARD_HEATING_CZ[] PROGMEM = "Predehrivam trysku. Prosim cekejte."; +const char MSG_WIZARD_HEATING_IT[] PROGMEM = "Sto preriscaldando l'ugello. Per favore attendi."; +const char MSG_WIZARD_HEATING_ES[] PROGMEM = "Precalentando nozzle. Espera por favor."; +const char MSG_WIZARD_HEATING_PL[] PROGMEM = "Nagrzewanie dyszy. Prosze czekac."; +const char MSG_WIZARD_HEATING_DE[] PROGMEM = "Vorheizen der Duese. Bitte warten."; +const char * const MSG_WIZARD_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_HEATING_EN, + MSG_WIZARD_HEATING_CZ, + MSG_WIZARD_HEATING_IT, + MSG_WIZARD_HEATING_ES, + MSG_WIZARD_HEATING_PL, + MSG_WIZARD_HEATING_DE }; const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN[] PROGMEM = "Please load PLA filament and then resume Wizard by rebooting the printer."; -const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_CZ[] PROGMEM = "Prosim zavedte PLA filament a po te obnovte Wizarda stisknutim reset tlacitka."; +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_IT[] PROGMEM = "Per favore carica filamento di PLA e riprendi il Wizard dopo aver riavviato la stampante."; +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_ES[] PROGMEM = "Carga filamento PLA, por favor, y reinicia la impresora para continuar con el Wizard"; +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_PL[] PROGMEM = "Prosze zaladuj filament PLA i przywroc Wizard przez restart drukarki."; +const char MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE[] PROGMEM = "Bitte laden Sie PLA-Filament und fahren Sie mit dem Assistenten fort, indem Sie den Drucker neu starten."; +const char * const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_INSERT_CORRECT_FILAMENT_EN, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_CZ, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_IT, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_ES, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_PL, + MSG_WIZARD_INSERT_CORRECT_FILAMENT_DE }; const char MSG_WIZARD_LOAD_FILAMENT_EN[] PROGMEM = "Please insert PLA filament to the extruder, then press knob to load it."; -const char * const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_LOAD_FILAMENT_EN +const char MSG_WIZARD_LOAD_FILAMENT_CZ[] PROGMEM = "Prosim vlozte PLA filament do extruderu, po te stisknete tlacitko pro zavedeni filamentu."; +const char MSG_WIZARD_LOAD_FILAMENT_IT[] PROGMEM = "Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare."; +const char MSG_WIZARD_LOAD_FILAMENT_ES[] PROGMEM = "Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo."; +const char MSG_WIZARD_LOAD_FILAMENT_PL[] PROGMEM = "Prosze umiesc filament PLA w ekstruderze i nacisnij przycisk by zaladowac."; +const char MSG_WIZARD_LOAD_FILAMENT_DE[] PROGMEM = "Fuehren Sie bitte PLA Filament in den Extruder und bestaetigen Sie den Knopf um es zu laden."; +const char * const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_LOAD_FILAMENT_EN, + MSG_WIZARD_LOAD_FILAMENT_CZ, + MSG_WIZARD_LOAD_FILAMENT_IT, + MSG_WIZARD_LOAD_FILAMENT_ES, + MSG_WIZARD_LOAD_FILAMENT_PL, + MSG_WIZARD_LOAD_FILAMENT_DE }; const char MSG_WIZARD_PLA_FILAMENT_EN[] PROGMEM = "Is it PLA filament?"; -const char * const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_PLA_FILAMENT_EN +const char MSG_WIZARD_PLA_FILAMENT_CZ[] PROGMEM = "Je to PLA filament?"; +const char MSG_WIZARD_PLA_FILAMENT_IT[] PROGMEM = "E questo un filamento di PLA?"; +const char MSG_WIZARD_PLA_FILAMENT_ES[] PROGMEM = "Es el filamento PLA?"; +const char MSG_WIZARD_PLA_FILAMENT_PL[] PROGMEM = "Czy to filament PLA?"; +const char MSG_WIZARD_PLA_FILAMENT_DE[] PROGMEM = "Ist es wirklich PLA Filament?"; +const char * const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_PLA_FILAMENT_EN, + MSG_WIZARD_PLA_FILAMENT_CZ, + MSG_WIZARD_PLA_FILAMENT_IT, + MSG_WIZARD_PLA_FILAMENT_ES, + MSG_WIZARD_PLA_FILAMENT_PL, + MSG_WIZARD_PLA_FILAMENT_DE }; const char MSG_WIZARD_QUIT_EN[] PROGMEM = "You can always resume the Wizard from Calibration -> Wizard."; -const char * const MSG_WIZARD_QUIT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_QUIT_EN +const char MSG_WIZARD_QUIT_CZ[] PROGMEM = "Wizarda muzete kdykoliv znovu spustit z menu Calibration -> Wizard"; +const char MSG_WIZARD_QUIT_IT[] PROGMEM = "E possibile proseguire la guide Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."; +const char MSG_WIZARD_QUIT_ES[] PROGMEM = "Siempre puedes acceder al asistente desde Calibracion -> Wizard"; +const char MSG_WIZARD_QUIT_PL[] PROGMEM = "Zawsze mozesz przywrocic Wizard przez Kalibracja -> Wizard."; +const char MSG_WIZARD_QUIT_DE[] PROGMEM = "Sie koennen immer den Asistenten im Menu neu aufrufen: Kalibrierung -> Assistant"; +const char * const MSG_WIZARD_QUIT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_QUIT_EN, + MSG_WIZARD_QUIT_CZ, + MSG_WIZARD_QUIT_IT, + MSG_WIZARD_QUIT_ES, + MSG_WIZARD_QUIT_PL, + MSG_WIZARD_QUIT_DE }; const char MSG_WIZARD_REPEAT_V2_CAL_EN[] PROGMEM = "Do you want to repeat last step to readjust distance between nozzle and heatbed?"; -const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_REPEAT_V2_CAL_EN +const char MSG_WIZARD_REPEAT_V2_CAL_CZ[] PROGMEM = "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a heatbed?"; +const char MSG_WIZARD_REPEAT_V2_CAL_IT[] PROGMEM = "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"; +const char MSG_WIZARD_REPEAT_V2_CAL_ES[] PROGMEM = "Quieres repetir el ultimo paso para reajustar la distancia nozzle-heatbed?"; +const char MSG_WIZARD_REPEAT_V2_CAL_PL[] PROGMEM = "Chcesz powtorzyc ostatni krok i przestawic odleglosc miedzy dysza a stolikiem?"; +const char MSG_WIZARD_REPEAT_V2_CAL_DE[] PROGMEM = "Moechten Sie den letzten Schritt wiederholen um den Abstand zwischen Duese und Druckbett neu einzustellen?"; +const char * const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_REPEAT_V2_CAL_EN, + MSG_WIZARD_REPEAT_V2_CAL_CZ, + MSG_WIZARD_REPEAT_V2_CAL_IT, + MSG_WIZARD_REPEAT_V2_CAL_ES, + MSG_WIZARD_REPEAT_V2_CAL_PL, + MSG_WIZARD_REPEAT_V2_CAL_DE }; const char MSG_WIZARD_RERUN_EN[] PROGMEM = "Running Wizard will delete current calibration results and start from the beginning. Continue?"; -const char * const MSG_WIZARD_RERUN_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_RERUN_EN +const char MSG_WIZARD_RERUN_CZ[] PROGMEM = "Spusteni Wizarda vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"; +const char MSG_WIZARD_RERUN_IT[] PROGMEM = "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"; +const char MSG_WIZARD_RERUN_ES[] PROGMEM = "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"; +const char MSG_WIZARD_RERUN_PL[] PROGMEM = "Wlaczenie Wizard usunie obecne dane kalibracyjne i zacznie od nowa. Kontynuowac?"; +const char MSG_WIZARD_RERUN_DE[] PROGMEM = "Der laufende Assistent loescht die aktuelle Kalibrierergebnisse und wird von Anfang an beginnen. Fortsetzen?"; +const char * const MSG_WIZARD_RERUN_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_RERUN_EN, + MSG_WIZARD_RERUN_CZ, + MSG_WIZARD_RERUN_IT, + MSG_WIZARD_RERUN_ES, + MSG_WIZARD_RERUN_PL, + MSG_WIZARD_RERUN_DE }; const char MSG_WIZARD_SELFTEST_EN[] PROGMEM = "First, I will run the selftest to check most common assembly problems."; -const char * const MSG_WIZARD_SELFTEST_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_SELFTEST_EN +const char MSG_WIZARD_SELFTEST_CZ[] PROGMEM = "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."; +const char MSG_WIZARD_SELFTEST_IT[] PROGMEM = "Anzitutto avviero il Self Test per controllare gli errori di assemblaggio piu comuni."; +const char MSG_WIZARD_SELFTEST_ES[] PROGMEM = "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."; +const char MSG_WIZARD_SELFTEST_PL[] PROGMEM = "Najpierw wlacze autotest w celu kontrolli najczestszych problemow z montazem."; +const char MSG_WIZARD_SELFTEST_DE[] PROGMEM = "Zunaechst fuehre ich den Selbsttest durch um die haeufigsten Probleme bei der Aufbau zu ueberpruefen."; +const char * const MSG_WIZARD_SELFTEST_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_SELFTEST_EN, + MSG_WIZARD_SELFTEST_CZ, + MSG_WIZARD_SELFTEST_IT, + MSG_WIZARD_SELFTEST_ES, + MSG_WIZARD_SELFTEST_PL, + MSG_WIZARD_SELFTEST_DE }; const char MSG_WIZARD_V2_CAL_EN[] PROGMEM = "Now I will calibrate distance between tip of the nozzle and heatbed surface."; -const char * const MSG_WIZARD_V2_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_V2_CAL_EN +const char MSG_WIZARD_V2_CAL_CZ[] PROGMEM = "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem heatbedu."; +const char MSG_WIZARD_V2_CAL_IT[] PROGMEM = "Adesso tarero lo stacco fra ugello e superfice del piatto."; +const char MSG_WIZARD_V2_CAL_ES[] PROGMEM = "Voy a calibrar la distancia entre la punta del nozzle y la superficie de la heatbed."; +const char MSG_WIZARD_V2_CAL_PL[] PROGMEM = "Kalibruje odleglosc miedzy koncowka dyszy a stolikiem."; +const char MSG_WIZARD_V2_CAL_DE[] PROGMEM = "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."; +const char * const MSG_WIZARD_V2_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_V2_CAL_EN, + MSG_WIZARD_V2_CAL_CZ, + MSG_WIZARD_V2_CAL_IT, + MSG_WIZARD_V2_CAL_ES, + MSG_WIZARD_V2_CAL_PL, + MSG_WIZARD_V2_CAL_DE }; const char MSG_WIZARD_V2_CAL_2_EN[] PROGMEM = "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."; -const char * const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_V2_CAL_2_EN +const char MSG_WIZARD_V2_CAL_2_CZ[] PROGMEM = "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace"; +const char MSG_WIZARD_V2_CAL_2_IT[] PROGMEM = "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."; +const char MSG_WIZARD_V2_CAL_2_ES[] PROGMEM = "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el mando, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."; +const char MSG_WIZARD_V2_CAL_2_PL[] PROGMEM = "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac guzik, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym poradniku w rozdz. Kalibracja"; +const char MSG_WIZARD_V2_CAL_2_DE[] PROGMEM = "Ich werde jetzt erste Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Ueberpruefen Sie die Bilder in unserem Handbuch im Kapitel Kalibrierung"; +const char * const MSG_WIZARD_V2_CAL_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_V2_CAL_2_EN, + MSG_WIZARD_V2_CAL_2_CZ, + MSG_WIZARD_V2_CAL_2_IT, + MSG_WIZARD_V2_CAL_2_ES, + MSG_WIZARD_V2_CAL_2_PL, + MSG_WIZARD_V2_CAL_2_DE }; const char MSG_WIZARD_WELCOME_EN[] PROGMEM = "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"; -const char * const MSG_WIZARD_WELCOME_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_WELCOME_EN +const char MSG_WIZARD_WELCOME_CZ[] PROGMEM = "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"; +const char MSG_WIZARD_WELCOME_IT[] PROGMEM = "Ciao, sono la tua stampante Original Prusa i3. Gradiresti aiuto attraverso il processo di configurazione?"; +const char MSG_WIZARD_WELCOME_ES[] PROGMEM = "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"; +const char MSG_WIZARD_WELCOME_PL[] PROGMEM = "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z instalacja?"; +const char MSG_WIZARD_WELCOME_DE[] PROGMEM = "Hallo, ich bin dein Original Prusa i3 Drucker. Moechten Sie meine Hilfe durch den Setup-Prozess?"; +const char * const MSG_WIZARD_WELCOME_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_WELCOME_EN, + MSG_WIZARD_WELCOME_CZ, + MSG_WIZARD_WELCOME_IT, + MSG_WIZARD_WELCOME_ES, + MSG_WIZARD_WELCOME_PL, + MSG_WIZARD_WELCOME_DE }; const char MSG_WIZARD_WILL_PREHEAT_EN[] PROGMEM = "Now I will preheat nozzle for PLA."; -const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_WILL_PREHEAT_EN +const char MSG_WIZARD_WILL_PREHEAT_CZ[] PROGMEM = "Nyni predehreji trysku pro PLA."; +const char MSG_WIZARD_WILL_PREHEAT_IT[] PROGMEM = "Adesso preriscaldero l'ugello per PLA."; +const char MSG_WIZARD_WILL_PREHEAT_ES[] PROGMEM = "Voy a precalentar el nozzle para PLA ahora."; +const char MSG_WIZARD_WILL_PREHEAT_PL[] PROGMEM = "Nagrzewam dysze dla PLA."; +const char MSG_WIZARD_WILL_PREHEAT_DE[] PROGMEM = "Jetzt werde ich die Duese fuer PLA vorheizen. "; +const char * const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_WILL_PREHEAT_EN, + MSG_WIZARD_WILL_PREHEAT_CZ, + MSG_WIZARD_WILL_PREHEAT_IT, + MSG_WIZARD_WILL_PREHEAT_ES, + MSG_WIZARD_WILL_PREHEAT_PL, + MSG_WIZARD_WILL_PREHEAT_DE }; const char MSG_WIZARD_XYZ_CAL_EN[] PROGMEM = "I will run xyz calibration now. It will take approx. 12 mins."; -const char * const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_XYZ_CAL_EN +const char MSG_WIZARD_XYZ_CAL_CZ[] PROGMEM = "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."; +const char MSG_WIZARD_XYZ_CAL_IT[] PROGMEM = "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."; +const char MSG_WIZARD_XYZ_CAL_ES[] PROGMEM = "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."; +const char MSG_WIZARD_XYZ_CAL_PL[] PROGMEM = "Wlaczam kalibracje xyz. Zajmie to ok. 12 min."; +const char MSG_WIZARD_XYZ_CAL_DE[] PROGMEM = "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern"; +const char * const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_XYZ_CAL_EN, + MSG_WIZARD_XYZ_CAL_CZ, + MSG_WIZARD_XYZ_CAL_IT, + MSG_WIZARD_XYZ_CAL_ES, + MSG_WIZARD_XYZ_CAL_PL, + MSG_WIZARD_XYZ_CAL_DE }; const char MSG_WIZARD_Z_CAL_EN[] PROGMEM = "I will run z calibration now."; -const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[1] PROGMEM = { - MSG_WIZARD_Z_CAL_EN +const char MSG_WIZARD_Z_CAL_CZ[] PROGMEM = "Nyni provedu z kalibraci."; +const char MSG_WIZARD_Z_CAL_IT[] PROGMEM = "Adesso avviero una Calibrazione Z."; +const char MSG_WIZARD_Z_CAL_ES[] PROGMEM = "Voy a hacer Calibracion Z ahora."; +const char MSG_WIZARD_Z_CAL_PL[] PROGMEM = "Wlaczam kalibracje z."; +const char MSG_WIZARD_Z_CAL_DE[] PROGMEM = "Ich werde jetzt die Z Kalibrierung durchfuehren."; +const char * const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_WIZARD_Z_CAL_EN, + MSG_WIZARD_Z_CAL_CZ, + MSG_WIZARD_Z_CAL_IT, + MSG_WIZARD_Z_CAL_ES, + MSG_WIZARD_Z_CAL_PL, + MSG_WIZARD_Z_CAL_DE }; const char MSG_X_MAX_EN[] PROGMEM = "x_max: "; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 421e11e4..84b75b57 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -318,6 +318,8 @@ extern const char* const MSG_M109_INVALID_EXTRUDER_LANG_TABLE[1]; #define MSG_M109_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M109_INVALID_EXTRUDER_LANG_TABLE, 0) extern const char* const MSG_M115_REPORT_LANG_TABLE[1]; #define MSG_M115_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M115_REPORT_LANG_TABLE, 0) +extern const char* const MSG_M117_V2_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_M117_V2_CALIBRATION LANG_TABLE_SELECT(MSG_M117_V2_CALIBRATION_LANG_TABLE) extern const char* const MSG_M119_REPORT_LANG_TABLE[1]; #define MSG_M119_REPORT LANG_TABLE_SELECT_EXPLICIT(MSG_M119_REPORT_LANG_TABLE, 0) extern const char* const MSG_M200_INVALID_EXTRUDER_LANG_TABLE[1]; @@ -410,10 +412,10 @@ extern const char* const MSG_PLACE_STEEL_SHEET_LANG_TABLE[1]; #define MSG_PLACE_STEEL_SHEET LANG_TABLE_SELECT_EXPLICIT(MSG_PLACE_STEEL_SHEET_LANG_TABLE, 0) extern const char* const MSG_PLANNER_BUFFER_BYTES_LANG_TABLE[1]; #define MSG_PLANNER_BUFFER_BYTES LANG_TABLE_SELECT_EXPLICIT(MSG_PLANNER_BUFFER_BYTES_LANG_TABLE, 0) -extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[1]; -#define MSG_PLA_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_PLA_FILAMENT_LOADED_LANG_TABLE, 0) -extern const char* const MSG_PLEASE_LOAD_PLA_LANG_TABLE[1]; -#define MSG_PLEASE_LOAD_PLA LANG_TABLE_SELECT_EXPLICIT(MSG_PLEASE_LOAD_PLA_LANG_TABLE, 0) +extern const char* const MSG_PLA_FILAMENT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_PLA_FILAMENT_LOADED LANG_TABLE_SELECT(MSG_PLA_FILAMENT_LOADED_LANG_TABLE) +extern const char* const MSG_PLEASE_LOAD_PLA_LANG_TABLE[LANG_NUM]; +#define MSG_PLEASE_LOAD_PLA LANG_TABLE_SELECT(MSG_PLEASE_LOAD_PLA_LANG_TABLE) extern const char* const MSG_PLEASE_WAIT_LANG_TABLE[LANG_NUM]; #define MSG_PLEASE_WAIT LANG_TABLE_SELECT(MSG_PLEASE_WAIT_LANG_TABLE) extern const char* const MSG_POSITION_UNKNOWN_LANG_TABLE[1]; @@ -642,8 +644,8 @@ extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; #define MSG_USED LANG_TABLE_SELECT(MSG_USED_LANG_TABLE) extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; #define MSG_USERWAIT LANG_TABLE_SELECT(MSG_USERWAIT_LANG_TABLE) -extern const char* const MSG_V2_CALIBRATION_LANG_TABLE[1]; -#define MSG_V2_CALIBRATION LANG_TABLE_SELECT_EXPLICIT(MSG_V2_CALIBRATION_LANG_TABLE, 0) +extern const char* const MSG_V2_CALIBRATION_LANG_TABLE[LANG_NUM]; +#define MSG_V2_CALIBRATION LANG_TABLE_SELECT(MSG_V2_CALIBRATION_LANG_TABLE) extern const char* const MSG_VMIN_LANG_TABLE[1]; #define MSG_VMIN LANG_TABLE_SELECT_EXPLICIT(MSG_VMIN_LANG_TABLE, 0) extern const char* const MSG_VOLUMETRIC_LANG_TABLE[1]; @@ -660,42 +662,42 @@ extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; #define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) extern const char* const MSG_WIZARD_LANG_TABLE[1]; #define MSG_WIZARD LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[1]; -#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[1]; -#define MSG_WIZARD_CLEAN_HEATBED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_DONE_LANG_TABLE[1]; -#define MSG_WIZARD_DONE LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_DONE_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[1]; -#define MSG_WIZARD_FILAMENT_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_HEATING_LANG_TABLE[1]; -#define MSG_WIZARD_HEATING LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_HEATING_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_INSERT_CORRECT_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_LOAD_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[1]; -#define MSG_WIZARD_PLA_FILAMENT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_PLA_FILAMENT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_QUIT_LANG_TABLE[1]; -#define MSG_WIZARD_QUIT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_QUIT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_REPEAT_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_RERUN_LANG_TABLE[1]; -#define MSG_WIZARD_RERUN LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_RERUN_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_SELFTEST_LANG_TABLE[1]; -#define MSG_WIZARD_SELFTEST LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_SELFTEST_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_V2_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_V2_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_V2_CAL_2_LANG_TABLE[1]; -#define MSG_WIZARD_V2_CAL_2 LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_V2_CAL_2_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_WELCOME_LANG_TABLE[1]; -#define MSG_WIZARD_WELCOME LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WELCOME_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[1]; -#define MSG_WIZARD_WILL_PREHEAT LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_WILL_PREHEAT_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_XYZ_CAL_LANG_TABLE, 0) -extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[1]; -#define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_Z_CAL_LANG_TABLE, 0) +extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE) +extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_CLEAN_HEATBED LANG_TABLE_SELECT(MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE) +extern const char* const MSG_WIZARD_DONE_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_DONE LANG_TABLE_SELECT(MSG_WIZARD_DONE_LANG_TABLE) +extern const char* const MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_FILAMENT_LOADED LANG_TABLE_SELECT(MSG_WIZARD_FILAMENT_LOADED_LANG_TABLE) +extern const char* const MSG_WIZARD_HEATING_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_HEATING LANG_TABLE_SELECT(MSG_WIZARD_HEATING_LANG_TABLE) +extern const char* const MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_INSERT_CORRECT_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_PLA_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_PLA_FILAMENT LANG_TABLE_SELECT(MSG_WIZARD_PLA_FILAMENT_LANG_TABLE) +extern const char* const MSG_WIZARD_QUIT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_QUIT LANG_TABLE_SELECT(MSG_WIZARD_QUIT_LANG_TABLE) +extern const char* const MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_REPEAT_V2_CAL LANG_TABLE_SELECT(MSG_WIZARD_REPEAT_V2_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_RERUN_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_RERUN LANG_TABLE_SELECT(MSG_WIZARD_RERUN_LANG_TABLE) +extern const char* const MSG_WIZARD_SELFTEST_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_SELFTEST LANG_TABLE_SELECT(MSG_WIZARD_SELFTEST_LANG_TABLE) +extern const char* const MSG_WIZARD_V2_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_V2_CAL LANG_TABLE_SELECT(MSG_WIZARD_V2_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_V2_CAL_2_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_V2_CAL_2 LANG_TABLE_SELECT(MSG_WIZARD_V2_CAL_2_LANG_TABLE) +extern const char* const MSG_WIZARD_WELCOME_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_WELCOME LANG_TABLE_SELECT(MSG_WIZARD_WELCOME_LANG_TABLE) +extern const char* const MSG_WIZARD_WILL_PREHEAT_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_WILL_PREHEAT LANG_TABLE_SELECT(MSG_WIZARD_WILL_PREHEAT_LANG_TABLE) +extern const char* const MSG_WIZARD_XYZ_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_XYZ_CAL LANG_TABLE_SELECT(MSG_WIZARD_XYZ_CAL_LANG_TABLE) +extern const char* const MSG_WIZARD_Z_CAL_LANG_TABLE[LANG_NUM]; +#define MSG_WIZARD_Z_CAL LANG_TABLE_SELECT(MSG_WIZARD_Z_CAL_LANG_TABLE) extern const char* const MSG_X_MAX_LANG_TABLE[1]; #define MSG_X_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_X_MAX_LANG_TABLE, 0) extern const char* const MSG_X_MIN_LANG_TABLE[1]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index f6eb993e..77566245 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -301,4 +301,28 @@ #define MSG_EXTRUDER_1 "Extruder 1" #define MSG_EXTRUDER_2 "Extruder 2" #define MSG_EXTRUDER_3 "Extruder 3" -#define MSG_EXTRUDER_4 "Extruder 4" \ No newline at end of file +#define MSG_EXTRUDER_4 "Extruder 4" + +#define MSG_WIZARD "Wizard" +#define MSG_WIZARD_WELCOME "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?" +#define MSG_WIZARD_QUIT "Wizarda muzete kdykoliv znovu spustit z menu Calibration -> Wizard" +#define MSG_WIZARD_SELFTEST "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny." +#define MSG_WIZARD_CALIBRATION_FAILED "Prosim nahlednete do manualu a opravte problem. Po te obnovte Wizarda rebootovanim tiskarny." +#define MSG_WIZARD_XYZ_CAL "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min." +#define MSG_WIZARD_FILAMENT_LOADED "Je filament zaveden?" +#define MSG_WIZARD_Z_CAL "Nyni provedu z kalibraci." +#define MSG_WIZARD_WILL_PREHEAT "Nyni predehreji trysku pro PLA." +#define MSG_WIZARD_V2_CAL "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem heatbedu." +#define MSG_WIZARD_V2_CAL_2 "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace" +#define MSG_V2_CALIBRATION "Kal. prvni vrstvy" +#define MSG_WIZARD_DONE "Vse je hotovo." +#define MSG_WIZARD_LOAD_FILAMENT "Prosim vlozte PLA filament do extruderu, po te stisknete tlacitko pro zavedeni filamentu." +#define MSG_WIZARD_RERUN "Spusteni Wizarda vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?" +#define MSG_WIZARD_REPEAT_V2_CAL "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a heatbed?" +#define MSG_WIZARD_CLEAN_HEATBED "Prosim ocistete heatbed a stisknete tlacitko." +#define MSG_WIZARD_PLA_FILAMENT "Je to PLA filament?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Prosim zavedte PLA filament a po te obnovte Wizarda stisknutim reset tlacitka." +#define MSG_PLA_FILAMENT_LOADED "Je PLA filament zaveden?" +#define MSG_PLEASE_LOAD_PLA "Nejdrive zavedte PLA filament prosim." +#define MSG_WIZARD_HEATING "Predehrivam trysku. Prosim cekejte." +#define MSG_M117_V2_CALIBRATION "M117 Kal. prvni vrstvy" \ No newline at end of file diff --git a/Firmware/language_de.h b/Firmware/language_de.h index 87c02a29..fcb083e3 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -314,4 +314,28 @@ #define MSG_EXTRUDER_1 "Extruder 1" #define MSG_EXTRUDER_2 "Extruder 2" #define MSG_EXTRUDER_3 "Extruder 3" -#define MSG_EXTRUDER_4 "Extruder 4" \ No newline at end of file +#define MSG_EXTRUDER_4 "Extruder 4" + +#define MSG_WIZARD "Wizard" +#define MSG_WIZARD_WELCOME "Hallo, ich bin dein Original Prusa i3 Drucker. Moechten Sie meine Hilfe durch den Setup-Prozess?" +#define MSG_WIZARD_QUIT "Sie koennen immer den Asistenten im Menu neu aufrufen: Kalibrierung -> Assistant" +#define MSG_WIZARD_SELFTEST "Zunaechst fuehre ich den Selbsttest durch um die haeufigsten Probleme bei der Aufbau zu ueberpruefen." +#define MSG_WIZARD_CALIBRATION_FAILED "Bitte ueberpruefen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten." +#define MSG_WIZARD_XYZ_CAL "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern" +#define MSG_WIZARD_FILAMENT_LOADED "Ist das Filament geladen?" +#define MSG_WIZARD_Z_CAL "Ich werde jetzt die Z Kalibrierung durchfuehren." +#define MSG_WIZARD_WILL_PREHEAT "Jetzt werde ich die Duese fuer PLA vorheizen. " +#define MSG_WIZARD_V2_CAL "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +#define MSG_WIZARD_V2_CAL_2 "Ich werde jetzt erste Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Ueberpruefen Sie die Bilder in unserem Handbuch im Kapitel Kalibrierung" +#define MSG_V2_CALIBRATION "Erste-Schicht Kal" +#define MSG_WIZARD_DONE "Alles wurde getan. Viel Spass beim Drucken!" +#define MSG_WIZARD_LOAD_FILAMENT "Fuehren Sie bitte PLA Filament in den Extruder und bestaetigen Sie den Knopf um es zu laden." +#define MSG_WIZARD_RERUN "Der laufende Assistent loescht die aktuelle Kalibrierergebnisse und wird von Anfang an beginnen. Fortsetzen?" +#define MSG_WIZARD_REPEAT_V2_CAL "Moechten Sie den letzten Schritt wiederholen um den Abstand zwischen Duese und Druckbett neu einzustellen?" +#define MSG_WIZARD_CLEAN_HEATBED "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +#define MSG_WIZARD_PLA_FILAMENT "Ist es wirklich PLA Filament?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Bitte laden Sie PLA-Filament und fahren Sie mit dem Assistenten fort, indem Sie den Drucker neu starten." +#define MSG_PLA_FILAMENT_LOADED "Ist PLA Filament geladen?" +#define MSG_PLEASE_LOAD_PLA "Bitte laden Sie zuerst PLA Filament." +#define MSG_WIZARD_HEATING "Vorheizen der Duese. Bitte warten." +#define MSG_M117_V2_CALIBRATION "M117 Erste-Schicht Kal." \ No newline at end of file diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 69df531a..7fdd1548 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -315,6 +315,8 @@ #define(length=11, lines=1) MSG_INFO_FILAMENT_XDIFF "Fil. Xd:" #define(length=11, lines=1) MSG_INFO_FILAMENT_YDIFF "Fil. Ydiff:" +//Wizard messages which has tranlsations + #define(length=17, lines=1) MSG_WIZARD "Wizard" #define(length=20, lines=7) MSG_WIZARD_WELCOME "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" #define(length=20, lines=8) MSG_WIZARD_QUIT "You can always resume the Wizard from Calibration -> Wizard." @@ -337,7 +339,7 @@ #define(lenght=20, lines=8) MSG_WIZARD_INSERT_CORRECT_FILAMENT "Please load PLA filament and then resume Wizard by rebooting the printer." #define(lenght=20, lines=2) MSG_PLA_FILAMENT_LOADED "Is PLA filament loaded?" #define(lenght=20, lines=4) MSG_PLEASE_LOAD_PLA "Please load PLA filament first." - +#define(length=25, lines=1) MSG_M117_V2_CALIBRATION "M117 First layer cal." //messages bellow has no translation yet #define MSG_CRASHDETECT_OFF "Crash det. [off]" diff --git a/Firmware/language_es.h b/Firmware/language_es.h index 6544d666..307802ca 100644 --- a/Firmware/language_es.h +++ b/Firmware/language_es.h @@ -295,4 +295,28 @@ #define MSG_EXTRUDER_1 "Extrusor 1" #define MSG_EXTRUDER_2 "Extrusor 2" #define MSG_EXTRUDER_3 "Extrusor 3" -#define MSG_EXTRUDER_4 "Extrusor 4" \ No newline at end of file +#define MSG_EXTRUDER_4 "Extrusor 4" + +#define MSG_WIZARD "Wizard" +#define MSG_WIZARD_WELCOME "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?" +#define MSG_WIZARD_QUIT "Siempre puedes acceder al asistente desde Calibracion -> Wizard" +#define MSG_WIZARD_SELFTEST "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes." +#define MSG_WIZARD_CALIBRATION_FAILED "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard" +#define MSG_WIZARD_XYZ_CAL "Hare la calibracion XYZ. Tardara 12 min. aproximadamente." +#define MSG_WIZARD_FILAMENT_LOADED "Esta el filamento cargado?" +#define MSG_WIZARD_Z_CAL "Voy a hacer Calibracion Z ahora." +#define MSG_WIZARD_WILL_PREHEAT "Voy a precalentar el nozzle para PLA ahora." +#define MSG_WIZARD_V2_CAL "Voy a calibrar la distancia entre la punta del nozzle y la superficie de la heatbed." +#define MSG_WIZARD_V2_CAL_2 "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el mando, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual." +#define MSG_V2_CALIBRATION "Cal. primera cap." +#define MSG_WIZARD_DONE "Terminado! Feliz impresion!" +#define MSG_WIZARD_LOAD_FILAMENT "Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo." +#define MSG_WIZARD_RERUN "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?" +#define MSG_WIZARD_REPEAT_V2_CAL "Quieres repetir el ultimo paso para reajustar la distancia nozzle-heatbed?" +#define MSG_WIZARD_CLEAN_HEATBED "Limpia la superficie de la heatbed, por favor, y haz clic" +#define MSG_WIZARD_PLA_FILAMENT "Es el filamento PLA?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Carga filamento PLA, por favor, y reinicia la impresora para continuar con el Wizard" +#define MSG_PLA_FILAMENT_LOADED "Esta el filamento PLA cargado?" +#define MSG_PLEASE_LOAD_PLA "Carga el filamento PLA primero por favor." +#define MSG_WIZARD_HEATING "Precalentando nozzle. Espera por favor." +#define MSG_M117_V2_CALIBRATION "M117 Cal. primera cap." \ No newline at end of file diff --git a/Firmware/language_it.h b/Firmware/language_it.h index 42737a57..d477b58a 100644 --- a/Firmware/language_it.h +++ b/Firmware/language_it.h @@ -286,4 +286,28 @@ #define MSG_EXTRUDER_1 "Estrusore 1" #define MSG_EXTRUDER_2 "Estrusore 2" #define MSG_EXTRUDER_3 "Estrusore 3" -#define MSG_EXTRUDER_4 "Estrusore 4" \ No newline at end of file +#define MSG_EXTRUDER_4 "Estrusore 4" + +#define MSG_WIZARD "Wizard" +#define MSG_WIZARD_WELCOME "Ciao, sono la tua stampante Original Prusa i3. Gradiresti aiuto attraverso il processo di configurazione?" +#define MSG_WIZARD_QUIT "E possibile proseguire la guide Wizard in qualsiasi momento attraverso Calibrazione -> Wizard." +#define MSG_WIZARD_SELFTEST "Anzitutto avviero il Self Test per controllare gli errori di assemblaggio piu comuni." +#define MSG_WIZARD_CALIBRATION_FAILED "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante." +#define MSG_WIZARD_XYZ_CAL "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min." +#define MSG_WIZARD_FILAMENT_LOADED "Il filamento e stato caricato?" +#define MSG_WIZARD_Z_CAL "Adesso avviero una Calibrazione Z." +#define MSG_WIZARD_WILL_PREHEAT "Adesso preriscaldero l'ugello per PLA." +#define MSG_WIZARD_V2_CAL "Adesso tarero lo stacco fra ugello e superfice del piatto." +#define MSG_WIZARD_V2_CAL_2 "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione." +#define MSG_V2_CALIBRATION "Cal. primo layer." +#define MSG_WIZARD_DONE "Ben fatto. Buona stampa!" +#define MSG_WIZARD_LOAD_FILAMENT "Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare." +#define MSG_WIZARD_RERUN "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?" +#define MSG_WIZARD_REPEAT_V2_CAL "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?" +#define MSG_WIZARD_CLEAN_HEATBED "Per favore pulisci il piatto, poi premi la manopola." +#define MSG_WIZARD_PLA_FILAMENT "E questo un filamento di PLA?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Per favore carica filamento di PLA e riprendi il Wizard dopo aver riavviato la stampante." +#define MSG_PLA_FILAMENT_LOADED "Il PLA e stato caricato?" +#define MSG_PLEASE_LOAD_PLA "Per favore prima caricare filamento di PLA." +#define MSG_WIZARD_HEATING "Sto preriscaldando l'ugello. Per favore attendi." +#define MSG_M117_V2_CALIBRATION "M117 Cal. primo layer." \ No newline at end of file diff --git a/Firmware/language_pl.h b/Firmware/language_pl.h index 2bce5ede..cc8087be 100644 --- a/Firmware/language_pl.h +++ b/Firmware/language_pl.h @@ -298,4 +298,28 @@ #define MSG_EXTRUDER_1 "Ekstruder 1" #define MSG_EXTRUDER_2 "Ekstruder 2" #define MSG_EXTRUDER_3 "Ekstruder 3" -#define MSG_EXTRUDER_4 "Ekstruder 4" \ No newline at end of file +#define MSG_EXTRUDER_4 "Ekstruder 4" + +#define MSG_WIZARD "Wizard" +#define MSG_WIZARD_WELCOME "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z instalacja?" +#define MSG_WIZARD_QUIT "Zawsze mozesz przywrocic Wizard przez Kalibracja -> Wizard." +#define MSG_WIZARD_SELFTEST "Najpierw wlacze autotest w celu kontrolli najczestszych problemow z montazem." +#define MSG_WIZARD_CALIBRATION_FAILED "Prosze sprawdz nasz poradnik i napraw problem. Potem przywroc Wizard restartujac drukarke." +#define MSG_WIZARD_XYZ_CAL "Wlaczam kalibracje xyz. Zajmie to ok. 12 min." +#define MSG_WIZARD_FILAMENT_LOADED "Filament jest zaladowany?" +#define MSG_WIZARD_Z_CAL "Wlaczam kalibracje z." +#define MSG_WIZARD_WILL_PREHEAT "Nagrzewam dysze dla PLA." +#define MSG_WIZARD_V2_CAL "Kalibruje odleglosc miedzy koncowka dyszy a stolikiem." +#define MSG_WIZARD_V2_CAL_2 "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac guzik, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym poradniku w rozdz. Kalibracja" +#define MSG_V2_CALIBRATION "Kal. 1. warstwy" +#define MSG_WIZARD_DONE "Gotowe. Udanego druku!" +#define MSG_WIZARD_LOAD_FILAMENT "Prosze umiesc filament PLA w ekstruderze i nacisnij przycisk by zaladowac." +#define MSG_WIZARD_RERUN "Wlaczenie Wizard usunie obecne dane kalibracyjne i zacznie od nowa. Kontynuowac?" +#define MSG_WIZARD_REPEAT_V2_CAL "Chcesz powtorzyc ostatni krok i przestawic odleglosc miedzy dysza a stolikiem?" +#define MSG_WIZARD_CLEAN_HEATBED "Prosze oczysc stolik i nacisnij guzik." +#define MSG_WIZARD_PLA_FILAMENT "Czy to filament PLA?" +#define MSG_WIZARD_INSERT_CORRECT_FILAMENT "Prosze zaladuj filament PLA i przywroc Wizard przez restart drukarki." +#define MSG_PLA_FILAMENT_LOADED "Fialment PLA jest zaladowany?" +#define MSG_PLEASE_LOAD_PLA "Prosze, najpierw zaladuj filament PLA." +#define MSG_WIZARD_HEATING "Nagrzewanie dyszy. Prosze czekac." +#define MSG_M117_V2_CALIBRATION "M117 Kal. 1. warstwy" \ No newline at end of file diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a22eca1d..6b337f5b 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -648,7 +648,7 @@ void lcd_commands() enquecommand_P(PSTR("M190 S55")); enquecommand_P(PSTR("M109 S210")); enquecommand_P(PSTR("T0")); - enquecommand_P(PSTR("M117 First layer cal.")); + enquecommand_P(MSG_M117_V2_CALIBRATION); enquecommand_P(PSTR("G87")); //sets calibration status enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G21")); //set units to millimeters @@ -663,8 +663,8 @@ void lcd_commands() { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); - enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); - enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); + enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); + enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); enquecommand_P(PSTR("G1 Z0.200 F7200.000")); enquecommand_P(PSTR("G1 X220.0 E13 F1000.0")); enquecommand_P(PSTR("G1 X240.0 E0 F1000.0")); @@ -723,7 +723,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -733,7 +733,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -752,7 +752,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -762,7 +762,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -781,7 +781,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -791,7 +791,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -810,7 +810,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -820,7 +820,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -831,7 +831,7 @@ void lcd_commands() if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + enquecommand_P(PSTR("G1 E-0.07500 F2100.00000")); enquecommand_P(PSTR("G4 S0")); enquecommand_P(PSTR("G1 E-4 F2100.00000")); enquecommand_P(PSTR("G1 Z0.5 F7200.000")); @@ -911,7 +911,7 @@ void lcd_commands() enquecommand_P(PSTR("M140 S55")); enquecommand_P(PSTR("M190 S55")); enquecommand_P(PSTR("M109 S210")); - enquecommand_P(PSTR("M117 First layer cal.")); + enquecommand_P(MSG_M117_V2_CALIBRATION); enquecommand_P(PSTR("G87")); //sets calibration status enquecommand_P(PSTR("G28")); enquecommand_P(PSTR("G92 E0.0")); @@ -922,13 +922,13 @@ void lcd_commands() lcd_implementation_clear(); lcd_goto_menu(lcd_babystep_z, 0, false); - enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0")); //intro line - enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0")); //intro line + enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0")); //intro line + enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0")); //intro line enquecommand_P(PSTR("G92 E0.0")); enquecommand_P(PSTR("G21")); //set units to millimeters enquecommand_P(PSTR("G90")); //use absolute coordinates enquecommand_P(PSTR("M83")); //use relative distances for extrusion - enquecommand_P(PSTR("G1 E - 1.50000 F2100.00000")); + enquecommand_P(PSTR("G1 E-1.50000 F2100.00000")); enquecommand_P(PSTR("G1 Z0.150 F7200.000")); enquecommand_P(PSTR("M204 S1000")); //set acceleration enquecommand_P(PSTR("G1 F4000")); @@ -993,7 +993,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -1003,7 +1003,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -1022,7 +1022,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -1032,7 +1032,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -1051,7 +1051,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -1061,7 +1061,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -1080,7 +1080,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (2 * i + 1)*width)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); strcpy(cmd1, "G1 X50 Y"); @@ -1090,7 +1090,7 @@ void lcd_commands() enquecommand(cmd1); strcpy(cmd1, "G1 Y"); strcat(cmd1, ftostr32(35 - (i + 1)*width * 2)); - strcat(cmd1, "E "); + strcat(cmd1, " E"); strcat(cmd1, ftostr43(extr_short_segment)); enquecommand(cmd1); } @@ -1101,7 +1101,7 @@ void lcd_commands() if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty()) { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000")); + enquecommand_P(PSTR("G1 E-0.07500 F2100.00000")); enquecommand_P(PSTR("M107")); //turn off printer fan enquecommand_P(PSTR("M104 S0")); // turn off temperature enquecommand_P(PSTR("M140 S0")); // turn off heatbed