diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 849677190..8a4ee3442 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -33,15 +33,21 @@ #define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1) #define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3) -// Correction of the bed leveling, in micrometers. -// Maximum 50 micrometers allowed. -// Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid. +// Bed correction is valid if set to 1. If set to zero or 255, +// the BED_CORRECTION_OFFSETS bytes are invalid. #define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_NUMBER-1) +#ifdef MBC_8POINT +// 4 Unused bytes (available for future options) +#define EEPROM_UNUSED (EEPROM_BED_CORRECTION_VALID-1) +#define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_UNUSED-4) +#else +// Old style MBC offsets #define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1) #define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1) #define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1) #define EEPROM_BED_CORRECTION_REAR (EEPROM_BED_CORRECTION_FRONT-1) #define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1) +#endif #define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1) #define EEPROM_PROBE_TEMP_SHIFT (EEPROM_PRINT_FLAG - 2*5) //5 x int for storing pinda probe temp shift relative to 50 C; unit: motor steps #define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1) @@ -51,6 +57,11 @@ #define EEPROM_XYZ_CAL_SKEW (EEPROM_SD_SORT - 4) #define EEPROM_WIZARD_ACTIVE (EEPROM_XYZ_CAL_SKEW - 1) +// E^2 address of custom MBC offsets array. +// Correction of the bed leveling, in micrometers. +// Current Range is: +/- 500um (stored as int16. +#define EEPROM_BED_CORRECTION_OFFSETS (EEPROM_WIZARD_ACTIVE - 16) + // 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) @@ -61,7 +72,6 @@ // Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware. #define EEPROM_FIRMWARE_PRUSA_MAGIC 0 - // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index c64bf2cfd..633f1baeb 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3501,6 +3501,55 @@ void process_commands() } #endif // SUPPORT_VERBOSITY +#if defined(MBC_8POINT) + for (uint8_t i = 0; i < 8; ++i) { + long correction = 0; + + if (code_seen('a' + i)) + correction = code_value_long(); + else if (eeprom_bed_correction_valid) { + correction = (int16_t)eeprom_read_word((uint16_t *)(EEPROM_BED_CORRECTION_OFFSETS + 2 * i)); + } + if (correction == 0) + continue; + + // Allow G-code override up to +/- 500um + if (abs(correction) > 500) { + SERIAL_ERROR_START; + SERIAL_ECHOPGM("MBC offset: "); + SERIAL_ECHO(correction); + SERIAL_ECHOLNPGM(", out of range"); + } else { + float offset = float(correction) * 0.001f; + switch ('a' + i) { + case 'a': + mbl.z_values[0][0] += offset; // Front/left + break; + case 'b': + mbl.z_values[0][1] += offset; // Front/center + break; + case 'c': + mbl.z_values[0][2] += offset; // Front/right + break; + case 'd': + mbl.z_values[1][0] += offset; // Middle/left + break; + case 'e': + mbl.z_values[1][2] += offset; // Middle/right + break; + case 'f': + mbl.z_values[2][0] += offset; // Rear/left + break; + case 'g': + mbl.z_values[2][1] += offset; // Rear/center + break; + case 'h': + mbl.z_values[2][2] += offset; // Rear/right + break; + } + } + } +#else for (uint8_t i = 0; i < 4; ++i) { unsigned char codes[4] = { 'L', 'R', 'F', 'B' }; long correction = 0; @@ -3550,6 +3599,7 @@ void process_commands() } } } +#endif SERIAL_ECHOLNPGM("Bed leveling correction finished"); mbl.upsample_3x3(); //bilinear interpolation from 3x3 to 7x7 points while using the same array z_values[iy][ix] for storing (just coppying measured data to new destination and interpolating between them) SERIAL_ECHOLNPGM("Upsample finished"); diff --git a/Firmware/langtool.pl b/Firmware/langtool.pl index ac9dee72d..2547a8100 100644 --- a/Firmware/langtool.pl +++ b/Firmware/langtool.pl @@ -17,6 +17,8 @@ sub parselang while (my $line = <$fh>) { chomp $line; next if (index($line, 'define') == -1 || index($line, 'MSG') == -1); + # Skip commented lines + next if (index($line, '//') == 0); my $modifiers = {}; my $symbol = ''; my $value = ''; diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 7a41dc00c..da2d1a538 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -151,36 +151,6 @@ const char * const MSG_BED_LANG_TABLE[LANG_NUM] PROGMEM = { 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_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_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"; @@ -196,19 +166,124 @@ const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { 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_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_P1_EN[] PROGMEM = "FrontLeft[um]"; +const char MSG_BED_CORRECTION_P1_CZ[] PROGMEM = "Bod a [um]"; +const char MSG_BED_CORRECTION_P1_IT[] PROGMEM = "Punto a [um]"; +const char MSG_BED_CORRECTION_P1_ES[] PROGMEM = "Punto a [um]"; +const char MSG_BED_CORRECTION_P1_PL[] PROGMEM = "Punkt a [um]"; +const char MSG_BED_CORRECTION_P1_DE[] PROGMEM = "Punkt a [um]"; +const char * const MSG_BED_CORRECTION_P1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P1_EN, + MSG_BED_CORRECTION_P1_CZ, + MSG_BED_CORRECTION_P1_IT, + MSG_BED_CORRECTION_P1_ES, + MSG_BED_CORRECTION_P1_PL, + MSG_BED_CORRECTION_P1_DE +}; + +const char MSG_BED_CORRECTION_P2_EN[] PROGMEM = "FrontCntr[um]"; +const char MSG_BED_CORRECTION_P2_CZ[] PROGMEM = "Bod b [um]"; +const char MSG_BED_CORRECTION_P2_IT[] PROGMEM = "Punto b [um]"; +const char MSG_BED_CORRECTION_P2_ES[] PROGMEM = "Punto b [um]"; +const char MSG_BED_CORRECTION_P2_PL[] PROGMEM = "Punkt b [um]"; +const char MSG_BED_CORRECTION_P2_DE[] PROGMEM = "Punkt b [um]"; +const char * const MSG_BED_CORRECTION_P2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P2_EN, + MSG_BED_CORRECTION_P2_CZ, + MSG_BED_CORRECTION_P2_IT, + MSG_BED_CORRECTION_P2_ES, + MSG_BED_CORRECTION_P2_PL, + MSG_BED_CORRECTION_P2_DE +}; + +const char MSG_BED_CORRECTION_P3_EN[] PROGMEM = "FrontRt [um]"; +const char MSG_BED_CORRECTION_P3_CZ[] PROGMEM = "Bod c [um]"; +const char MSG_BED_CORRECTION_P3_IT[] PROGMEM = "Punto c [um]"; +const char MSG_BED_CORRECTION_P3_ES[] PROGMEM = "Punto c [um]"; +const char MSG_BED_CORRECTION_P3_PL[] PROGMEM = "Punkt c [um]"; +const char MSG_BED_CORRECTION_P3_DE[] PROGMEM = "Punkt c [um]"; +const char * const MSG_BED_CORRECTION_P3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P3_EN, + MSG_BED_CORRECTION_P3_CZ, + MSG_BED_CORRECTION_P3_IT, + MSG_BED_CORRECTION_P3_ES, + MSG_BED_CORRECTION_P3_PL, + MSG_BED_CORRECTION_P3_DE +}; + +const char MSG_BED_CORRECTION_P4_EN[] PROGMEM = "MidLeft [um]"; +const char MSG_BED_CORRECTION_P4_CZ[] PROGMEM = "Bod d [um]"; +const char MSG_BED_CORRECTION_P4_IT[] PROGMEM = "Punto d [um]"; +const char MSG_BED_CORRECTION_P4_ES[] PROGMEM = "Punto d [um]"; +const char MSG_BED_CORRECTION_P4_PL[] PROGMEM = "Punkt d [um]"; +const char MSG_BED_CORRECTION_P4_DE[] PROGMEM = "Punkt d [um]"; +const char * const MSG_BED_CORRECTION_P4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P4_EN, + MSG_BED_CORRECTION_P4_CZ, + MSG_BED_CORRECTION_P4_IT, + MSG_BED_CORRECTION_P4_ES, + MSG_BED_CORRECTION_P4_PL, + MSG_BED_CORRECTION_P4_DE +}; + +const char MSG_BED_CORRECTION_P5_EN[] PROGMEM = "MidRight [um]"; +const char MSG_BED_CORRECTION_P5_CZ[] PROGMEM = "Bod e [um]"; +const char MSG_BED_CORRECTION_P5_IT[] PROGMEM = "Punto e [um]"; +const char MSG_BED_CORRECTION_P5_ES[] PROGMEM = "Punto e [um]"; +const char MSG_BED_CORRECTION_P5_PL[] PROGMEM = "Punkt e [um]"; +const char MSG_BED_CORRECTION_P5_DE[] PROGMEM = "Punkt e [um]"; +const char * const MSG_BED_CORRECTION_P5_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P5_EN, + MSG_BED_CORRECTION_P5_CZ, + MSG_BED_CORRECTION_P5_IT, + MSG_BED_CORRECTION_P5_ES, + MSG_BED_CORRECTION_P5_PL, + MSG_BED_CORRECTION_P5_DE +}; + +const char MSG_BED_CORRECTION_P6_EN[] PROGMEM = "RearLeft [um]"; +const char MSG_BED_CORRECTION_P6_CZ[] PROGMEM = "Bod f [um]"; +const char MSG_BED_CORRECTION_P6_IT[] PROGMEM = "Punto f [um]"; +const char MSG_BED_CORRECTION_P6_ES[] PROGMEM = "Punto f [um]"; +const char MSG_BED_CORRECTION_P6_PL[] PROGMEM = "Punkt f [um]"; +const char MSG_BED_CORRECTION_P6_DE[] PROGMEM = "Punkt f [um]"; +const char * const MSG_BED_CORRECTION_P6_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P6_EN, + MSG_BED_CORRECTION_P6_CZ, + MSG_BED_CORRECTION_P6_IT, + MSG_BED_CORRECTION_P6_ES, + MSG_BED_CORRECTION_P6_PL, + MSG_BED_CORRECTION_P6_DE +}; + +const char MSG_BED_CORRECTION_P7_EN[] PROGMEM = "RearCntr [um]"; +const char MSG_BED_CORRECTION_P7_CZ[] PROGMEM = "Bod g [um]"; +const char MSG_BED_CORRECTION_P7_IT[] PROGMEM = "Punto g [um]"; +const char MSG_BED_CORRECTION_P7_ES[] PROGMEM = "Punto g [um]"; +const char MSG_BED_CORRECTION_P7_PL[] PROGMEM = "Punkt g [um]"; +const char MSG_BED_CORRECTION_P7_DE[] PROGMEM = "Punkt g [um]"; +const char * const MSG_BED_CORRECTION_P7_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P7_EN, + MSG_BED_CORRECTION_P7_CZ, + MSG_BED_CORRECTION_P7_IT, + MSG_BED_CORRECTION_P7_ES, + MSG_BED_CORRECTION_P7_PL, + MSG_BED_CORRECTION_P7_DE +}; + +const char MSG_BED_CORRECTION_P8_EN[] PROGMEM = "RearRight[um]"; +const char MSG_BED_CORRECTION_P8_CZ[] PROGMEM = "Bod h [um]"; +const char MSG_BED_CORRECTION_P8_IT[] PROGMEM = "Punto h [um]"; +const char MSG_BED_CORRECTION_P8_ES[] PROGMEM = "Punto h [um]"; +const char MSG_BED_CORRECTION_P8_PL[] PROGMEM = "Punkt h [um]"; +const char MSG_BED_CORRECTION_P8_DE[] PROGMEM = "Punkt h [um]"; +const char * const MSG_BED_CORRECTION_P8_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_P8_EN, + MSG_BED_CORRECTION_P8_CZ, + MSG_BED_CORRECTION_P8_IT, + MSG_BED_CORRECTION_P8_ES, + MSG_BED_CORRECTION_P8_PL, + MSG_BED_CORRECTION_P8_DE }; const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; @@ -222,21 +297,6 @@ const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { 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_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."; @@ -1022,11 +1082,6 @@ const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FAN_SPEED_DE }; -const char MSG_FARM_CARD_MENU_EN[] PROGMEM = "Farm mode print"; -const char * const MSG_FARM_CARD_MENU_LANG_TABLE[1] PROGMEM = { - MSG_FARM_CARD_MENU_EN -}; - const char MSG_FILAMENTCHANGE_EN[] PROGMEM = "Change filament"; const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; @@ -2368,11 +2423,6 @@ 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[1] PROGMEM = { - MSG_RESET_CALIBRATE_E_EN -}; - const char MSG_RESTORE_FAILSAFE_EN[] PROGMEM = "Restore failsafe"; const char * const MSG_RESTORE_FAILSAFE_LANG_TABLE[1] PROGMEM = { MSG_RESTORE_FAILSAFE_EN @@ -2588,7 +2638,7 @@ 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\x81""fe Bed "; +const char MSG_SELFTEST_CHECK_BED_DE[] PROGMEM = "Pruefe Bed "; const char * const MSG_SELFTEST_CHECK_BED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SELFTEST_CHECK_BED_EN, MSG_SELFTEST_CHECK_BED_CZ, diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 04c5ebf5a..97b2cf81f 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -58,18 +58,26 @@ 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_P1_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P1 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P1_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P2_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P2 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P2_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P3_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P3 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P3_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P4_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P4 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P4_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P5_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P5 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P5_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P6_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P6 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P6_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P7_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P7 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P7_LANG_TABLE) +extern const char* const MSG_BED_CORRECTION_P8_LANG_TABLE[LANG_NUM]; +#define MSG_BED_CORRECTION_P8 LANG_TABLE_SELECT(MSG_BED_CORRECTION_P8_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]; @@ -206,8 +214,6 @@ 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[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[LANG_NUM]; #define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM]; @@ -440,8 +446,6 @@ 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_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]; -#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[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 038cdf1b7..f2a89c912 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -247,10 +247,21 @@ #define MSG_BABYSTEP_Z_NOT_SET "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy." #define MSG_BED_CORRECTION_MENU "Korekce podlozky" -#define MSG_BED_CORRECTION_LEFT "Vlevo [um]" -#define MSG_BED_CORRECTION_RIGHT "Vpravo [um]" -#define MSG_BED_CORRECTION_FRONT "Vpredu [um]" -#define MSG_BED_CORRECTION_REAR "Vzadu [um]" +#ifdef MBC_8POINT +#define MSG_BED_CORRECTION_P1 "Bod a [um]" +#define MSG_BED_CORRECTION_P2 "Bod b [um]" +#define MSG_BED_CORRECTION_P3 "Bod c [um]" +#define MSG_BED_CORRECTION_P4 "Bod d [um]" +#define MSG_BED_CORRECTION_P5 "Bod e [um]" +#define MSG_BED_CORRECTION_P6 "Bod f [um]" +#define MSG_BED_CORRECTION_P7 "Bod g [um]" +#define MSG_BED_CORRECTION_P8 "Bod h [um]" +#else +//#define MSG_BED_CORRECTION_LEFT "Vlevo [um]" +//#define MSG_BED_CORRECTION_RIGHT "Vpravo [um]" +//#define MSG_BED_CORRECTION_FRONT "Vpredu [um]" +//#define MSG_BED_CORRECTION_REAR "Vzadu [um]" +#endif #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" @@ -340,4 +351,4 @@ #define MSG_PLA_FILAMENT_LOADED "Je PLA filament zaveden?" #define MSG_PLEASE_LOAD_PLA "Nejdrive zavedte PLA filament prosim." #define MSG_FILE_CNT "Nektere soubory nebudou setrideny. Maximalni pocet souboru pro setrideni je 100." -#define MSG_WIZARD_HEATING "Predehrivam trysku. Prosim cekejte." \ No newline at end of file +#define MSG_WIZARD_HEATING "Predehrivam trysku. Prosim cekejte." diff --git a/Firmware/language_de.h b/Firmware/language_de.h index ae61053df..bec2638f9 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -1,283 +1,293 @@ -+/** - + * German - + * - + * LCD Menu Messages - + * Please note these are limited to 17 characters! - + * - + */ - + - +#define(length = 20) WELCOME_MSG CUSTOM_MENDEL_NAME " bereit." - + #define MSG_SD_INSERTED "SD eingesetzt" - + #define MSG_SD_REMOVED "SD entfernt " - + #define MSG_MAIN "Hauptmenue" - + #define MSG_DISABLE_STEPPERS "Motoren aus" - + #define MSG_AUTO_HOME "Startposition" - + #define MSG_SET_HOME_OFFSETS "Abstand vom Ursprung einstellen" - + #define MSG_SET_ORIGIN "Ursprung einstellen" - + #define MSG_COOLDOWN "Abkuehlen" - + #define MSG_SWITCH_PS_ON "Netzteil EIN" - + #define MSG_SWITCH_PS_OFF "Netzteil AUS" - + #define MSG_MOVE_AXIS "Achsbewegung" - + #define MSG_MOVE_X "Bewege X" - + #define MSG_MOVE_Y "Bewege Y" - + #define MSG_MOVE_Z "Bewege Z" - + #define MSG_MOVE_E "Extruder" - + #define MSG_SPEED "Geschwindigkeit" - + #define MSG_NOZZLE "Duese" - + #define MSG_NOZZLE1 "Duese2" - + #define MSG_NOZZLE2 "Duese3" - + #define MSG_BED "Bed" - + #define MSG_FAN_SPEED "Luefter-Tempo" - + #define MSG_FLOW "Durchfluss" - + #define MSG_FLOW0 "Durchfluss 0" - + #define MSG_FLOW1 "Durchfluss 1" - + #define MSG_FLOW2 "Durchfluss 2" - + #define MSG_CONTROL "Kontrolle" - + #define MSG_MIN " \002 Min" - + #define MSG_MAX " \002 Max" - + #define MSG_FACTOR " \002 Fakt" - + #define MSG_TEMPERATURE "Temperatur" - + #define MSG_MOTION "Bewegung" - + #define MSG_VOLUMETRIC "Filament" - + #define MSG_VOLUMETRIC_ENABLED "E in mm3" - + #define MSG_STORE_EPROM "Abspeichern" - + #define MSG_LOAD_EPROM "Lade Speicher" - + #define MSG_RESTORE_FAILSAFE "Standardwerte setzen" - + #define MSG_REFRESH "\xF8" "Erneuern" - + #define MSG_WATCH "Information" - + #define MSG_TUNE "Feineinstellung" - + #define MSG_PAUSE_PRINT "Druck unterbrech." - + #define MSG_RESUME_PRINT "Fortsetzen" - + #define MSG_STOP_PRINT "Druck abbrechen" - + #define MSG_CARD_MENU "Drucken von SD" - + #define MSG_NO_CARD "Keine SD Karte" - + #define MSG_DWELL "Einen Moment bitte." - + #define MSG_USERWAIT "Warte auf user..." - + #define MSG_RESUMING "Druck fortgesetzt" - + #define(length = 20) MSG_PRINT_ABORTED "Druck abgebrochen" - + #define MSG_NO_MOVE "Keine Bewegung." - + #define MSG_KILLED "ABGEBROCHEN. " - + #define MSG_STOPPED "GESTOPPT. " - + #define MSG_FILAMENTCHANGE "Filament-Wechsel" - + #define MSG_INIT_SDCARD "Init SD Karte" - + #define MSG_CNG_SDCARD "Wechsel SD Karte" - + #define MSG_BABYSTEP_X "Babystep X" - + #define MSG_BABYSTEP_Y "Babystep Y" - + #define MSG_BABYSTEP_Z "Z einstellen" - + #define MSG_ADJUSTZ "Auto Z einstellen?" - + #define MSG_PICK_Z "Waehle Abdruck" - + - +#define MSG_SETTINGS "Einstellungen" - + #define MSG_PREHEAT "Vorwaermen" - + #define MSG_UNLOAD_FILAMENT "Filament entladen" - + #define MSG_LOAD_FILAMENT "Filament laden" - + - +#define MSG_RECTRACT "Retract" - + #define MSG_ERROR "FEHLER:" - + #define(length = 20) MSG_PREHEAT_NOZZLE "Duese Vorwaermen" - + #define MSG_SUPPORT "Support" - + #define(length = 20) MSG_CORRECTLY "Wechsel ok?" - + #define MSG_YES "Ja" - + #define MSG_NO "Nein" - + #define(length = 19) MSG_NOT_LOADED "Fil. nicht geladen" - + #define MSG_NOT_COLOR "Farbe unklar" - + #define(length = 20) MSG_LOADING_FILAMENT "Filament leadt" - + #define(length = 20) MSG_PLEASE_WAIT "Bitte warten" - + #define MSG_LOADING_COLOR "Lade Farbe" - + #define MSG_CHANGE_SUCCESS "Wechsel erfolgr.!" - + #define(length = 20) MSG_PRESS "und Knopf druecken" - + #define(length = 20) MSG_INSERT_FILAMENT "Filament einlegen" - + #define(length = 20) MSG_CHANGING_FILAMENT "Filament-Wechsel!" - + - + - +#define MSG_SILENT_MODE_ON "Mode [leise]" - + #define MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" - + #define MSG_AUTO_MODE_ON "Mode [Auto]" - + #define(length = 20) MSG_REBOOT "Zum Uebernehmen " - + #define(length = 22) MSG_TAKE_EFFECT "Drucker neu starten" - + - +#define MSG_Enqueing "enqueuing \" - + #define MSG_POWERUP "Einschalten" - + #define MSG_CONFIGURATION_VER " Letztes Update:" - + #define MSG_FREE_MEMORY " Freier Speicher: " - + #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " - + #define MSG_OK "ok" - + #define MSG_ERR_CHECKSUM_MISMATCH "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " - + #define MSG_ERR_NO_CHECKSUM "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " - + #define MSG_BEGIN_FILE_LIST "Beginn Dateiliste" - + #define MSG_END_FILE_LIST "Ende Dateiliste" - + #define MSG_M104_INVALID_EXTRUDER "M104 Falscher Extruder" - + #define MSG_M105_INVALID_EXTRUDER "M105 Falscher Extruder" - + #define MSG_M200_INVALID_EXTRUDER "M200 Falscher Extruder" - + #define MSG_M218_INVALID_EXTRUDER "M218 Falscher Extruder" - + #define MSG_M221_INVALID_EXTRUDER "M221 Falscher Extruder" - + #define MSG_ERR_NO_THERMISTORS "Keine Thermistoren - keine Temperatur" - + #define MSG_M109_INVALID_EXTRUDER "M109 Falscher Extruder" - + #define MSG_HEATING "Aufwaermen" - + #define(length = 20) MSG_HEATING_COMPLETE "Aufwaermen OK" - + #define MSG_BED_HEATING "Bed aufwaermen" - + #define MSG_BED_DONE "Bed OK" - + #define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" - + #define MSG_ERR_KILLED "Printer gestoppt. kill() aufgerufen!" - + #define MSG_ERR_STOPPED "Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)" - + #define MSG_RESEND "Wiederholen: " - + #define MSG_M119_REPORT "Statusbericht Endanschlag" - + #define MSG_ENDSTOP_HIT "AUSGELOEST" - + #define MSG_ENDSTOP_OPEN "offen" - + - +#define MSG_SD_CANT_OPEN_SUBDIR "Kann Unterverz. nicht oeffnen" - + #define MSG_SD_INIT_FAIL "SD Init fehlerhaft" - + #define MSG_SD_VOL_INIT_FAIL "Dateisystem Init fehlerhaft" - + #define MSG_SD_OPENROOT_FAIL "Zugriff auf Basisverzeichnis misslungen" - + #define MSG_SD_CARD_OK "SD Karte ok" - + #define MSG_SD_WORKDIR_FAIL "Oeffnen Arbeitsverzeichnis misslungen" - + #define MSG_SD_OPEN_FILE_FAIL "Fehler beim Oeffnen der Datei: " - + #define MSG_SD_FILE_OPENED "Datei geoeffnet: " - + #define MSG_SD_FILE_SELECTED "Datei ausgewaehlt" - + #define MSG_SD_WRITE_TO_FILE "Schreiben der Datei: " - + #define MSG_SD_PRINTING_BYTE "SD printing byte " - + #define MSG_SD_NOT_PRINTING "Kein SD Print" - + #define MSG_SD_ERR_WRITE_TO_FILE "Fehler beim Schreiben in Datei" - + #define MSG_SD_CANT_ENTER_SUBDIR "Zugangsproblem Unterverzeichnis: " - + #define MSG_STEPPER_TOO_HIGH "Schrittrate zu hoch" - + #define MSG_ENDSTOPS_HIT "Endanschlag erreicht" - + #define MSG_ERR_COLD_EXTRUDE_STOP "Stopp, Extruder kalt!" - + #define MSG_BABYSTEPPING_X "Babystepping X" - + #define MSG_BABYSTEPPING_Y "Babystepping Y" - + #define MSG_BABYSTEPPING_Z "Z wurde eingestellt" - + #define MSG_SERIAL_ERROR_MENU_STRUCTURE "Menuestruktur fehlerhaft" - + - +#define MSG_LANGUAGE_NAME "Deutsch" - + #define MSG_LANGUAGE_SELECT "Waehle Sprache" - + #define MSG_PRUSA3D "prusa3d.com" - + #define MSG_PRUSA3D_FORUM "forum.prusa3d.com" - + #define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" - + - +#define MSG_SELFTEST_ERROR "Selbtest Fehler!" - + #define MSG_SELFTEST_PLEASECHECK "Bitte pruefe:" - + #define MSG_SELFTEST_NOTCONNECTED "Nicht angeschlossen" - + #define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" - + #define MSG_SELFTEST_BEDHEATER "Bed / Heater" - + #define MSG_SELFTEST_WIRINGERROR "Verdrahtungfehler" - + #define MSG_SELFTEST_ENDSTOPS "Endschalter" - + #define MSG_SELFTEST_MOTOR "Motor" - + #define MSG_SELFTEST_ENDSTOP "Endstop" - + #define MSG_SELFTEST_ENDSTOP_NOTHIT "Ende nicht getrof." - + #define MSG_SELFTEST_OK "Selbsttest OK" - + #define MSG_LOOSE_PULLEY "Lose Riemenscheibe" - + - +#define MSG_SELFTEST_FAN "Lueftertest" -+#define(length = 20) MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?" -+#define(length = 20) MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?" -+#define MSG_SELFTEST_FAN_YES "Dreht" -+#define MSG_SELFTEST_FAN_NO "Dreht nicht" -+ -+#define(length = 20) MSG_STATS_TOTALFILAMENT "Gesamtfilament:" -+ #define(length = 20) MSG_STATS_TOTALPRINTTIME "Totale Druckzeit:" -+ #define(length = 20) MSG_STATS_FILAMENTUSED "Filamentverbrauch:" -+ #define(length = 20) MSG_STATS_PRINTTIME "Druckzeit: " -+ #define(length = 20) MSG_SELFTEST_START "Selbsttest start " -+ #define(length = 20) MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe Endschalter " -+ #define(length = 20) MSG_SELFTEST_CHECK_HOTEND "Pruefe Hotend" -+ #define(length = 20) MSG_SELFTEST_CHECK_X "Pruefe X Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_Y "Pruefe Y Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_Z "Pruefe Z Achse " -+ #define(length = 20) MSG_SELFTEST_CHECK_BED "Pr\x81""fe Bed " -+ #define(length = 20) MSG_SELFTEST_CHECK_ALLCORRECT "Alles richtig " -+ #define MSG_SELFTEST "Selbsttest " -+ #define(length = 20) MSG_SELFTEST_FAILED "Selbsttest misslung." -+ #define MSG_STATISTICS "Statistiken " -+ #define MSG_USB_PRINTING "Drucken ueber USB" -+ #define MSG_HOMEYZ "Kalibrieren Z" -+ #define MSG_HOMEYZ_PROGRESS "Kalibriere Z" -+ #define MSG_HOMEYZ_DONE "Kalibrierung OK" -+ -+#define MSG_SHOW_END_STOPS "Endschalter Stat." -+ #define MSG_CALIBRATE_BED "Kalibrierung XYZ" -+ #define MSG_CALIBRATE_BED_RESET "Reset XYZ Kalibr." -+ +/** + * German + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ -+#define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." -+ #define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." -+ +#define(length = 20) WELCOME_MSG CUSTOM_MENDEL_NAME " bereit." +#define MSG_SD_INSERTED "SD eingesetzt" +#define MSG_SD_REMOVED "SD entfernt " +#define MSG_MAIN "Hauptmenue" +#define MSG_DISABLE_STEPPERS "Motoren aus" +#define MSG_AUTO_HOME "Startposition" +#define MSG_SET_HOME_OFFSETS "Abstand vom Ursprung einstellen" +#define MSG_SET_ORIGIN "Ursprung einstellen" +#define MSG_COOLDOWN "Abkuehlen" +#define MSG_SWITCH_PS_ON "Netzteil EIN" +#define MSG_SWITCH_PS_OFF "Netzteil AUS" +#define MSG_MOVE_AXIS "Achsbewegung" +#define MSG_MOVE_X "Bewege X" +#define MSG_MOVE_Y "Bewege Y" +#define MSG_MOVE_Z "Bewege Z" +#define MSG_MOVE_E "Extruder" +#define MSG_SPEED "Geschwindigkeit" +#define MSG_NOZZLE "Duese" +#define MSG_NOZZLE1 "Duese2" +#define MSG_NOZZLE2 "Duese3" +#define MSG_BED "Bed" +#define MSG_FAN_SPEED "Luefter-Tempo" +#define MSG_FLOW "Durchfluss" +#define MSG_FLOW0 "Durchfluss 0" +#define MSG_FLOW1 "Durchfluss 1" +#define MSG_FLOW2 "Durchfluss 2" +#define MSG_CONTROL "Kontrolle" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Fakt" +#define MSG_TEMPERATURE "Temperatur" +#define MSG_MOTION "Bewegung" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_STORE_EPROM "Abspeichern" +#define MSG_LOAD_EPROM "Lade Speicher" +#define MSG_RESTORE_FAILSAFE "Standardwerte setzen" +#define MSG_REFRESH "\xF8" "Erneuern" +#define MSG_WATCH "Information" +#define MSG_TUNE "Feineinstellung" +#define MSG_PAUSE_PRINT "Druck unterbrech." +#define MSG_RESUME_PRINT "Fortsetzen" +#define MSG_STOP_PRINT "Druck abbrechen" +#define MSG_CARD_MENU "Drucken von SD" +#define MSG_NO_CARD "Keine SD Karte" +#define MSG_DWELL "Einen Moment bitte." +#define MSG_USERWAIT "Warte auf user..." +#define MSG_RESUMING "Druck fortgesetzt" +#define(length = 20) MSG_PRINT_ABORTED "Druck abgebrochen" +#define MSG_NO_MOVE "Keine Bewegung." +#define MSG_KILLED "ABGEBROCHEN. " +#define MSG_STOPPED "GESTOPPT. " +#define MSG_FILAMENTCHANGE "Filament-Wechsel" +#define MSG_INIT_SDCARD "Init SD Karte" +#define MSG_CNG_SDCARD "Wechsel SD Karte" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Z einstellen" +#define MSG_ADJUSTZ "Auto Z einstellen?" +#define MSG_PICK_Z "Waehle Abdruck" -+#define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." -+ #define(length = 20, lines = 2) MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Ist der Schlitten ganz oben?" -+ -+#define(length = 60) MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Suchen Bed Kalibrierpunkt" -+ #define(length = 14) MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " von 4" -+ #define(length = 60) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Verbesserung Bed Kalibrierpunkt" -+ #define(length = 14) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " von 9" -+ #define(length = 60) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Messen der Referenzhoehe des Kalibrierpunktes" -+ #define(length = 14) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " von 9" +#define MSG_SETTINGS "Einstellungen" +#define MSG_PREHEAT "Vorwaermen" +#define MSG_UNLOAD_FILAMENT "Filament entladen" +#define MSG_LOAD_FILAMENT "Filament laden" + +#define MSG_RECTRACT "Retract" +#define MSG_ERROR "FEHLER:" +#define(length = 20) MSG_PREHEAT_NOZZLE "Duese Vorwaermen" +#define MSG_SUPPORT "Support" +#define(length = 20) MSG_CORRECTLY "Wechsel ok?" +#define MSG_YES "Ja" +#define MSG_NO "Nein" +#define(length = 19) MSG_NOT_LOADED "Fil. nicht geladen" +#define MSG_NOT_COLOR "Farbe unklar" +#define(length = 20) MSG_LOADING_FILAMENT "Filament leadt" +#define(length = 20) MSG_PLEASE_WAIT "Bitte warten" +#define MSG_LOADING_COLOR "Lade Farbe" +#define MSG_CHANGE_SUCCESS "Wechsel erfolgr.!" +#define(length = 20) MSG_PRESS "und Knopf druecken" +#define(length = 20) MSG_INSERT_FILAMENT "Filament einlegen" +#define(length = 20) MSG_CHANGING_FILAMENT "Filament-Wechsel!" + + +#define MSG_SILENT_MODE_ON "Mode [leise]" +#define MSG_SILENT_MODE_OFF "Mode [Hohe Leist]" +#define(length = 20) MSG_REBOOT "Zum Uebernehmen " +#define(length = 22) MSG_TAKE_EFFECT "Drucker neu starten" + +#define MSG_Enqueing "enqueuing \" +#define MSG_POWERUP "Einschalten" +#define MSG_CONFIGURATION_VER " Letztes Update:" +#define MSG_FREE_MEMORY " Freier Speicher: " +#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +#define MSG_OK "ok" +#define MSG_ERR_CHECKSUM_MISMATCH "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: " +#define MSG_ERR_NO_CHECKSUM "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: " +#define MSG_BEGIN_FILE_LIST "Beginn Dateiliste" +#define MSG_END_FILE_LIST "Ende Dateiliste" +#define MSG_M104_INVALID_EXTRUDER "M104 Falscher Extruder" +#define MSG_M105_INVALID_EXTRUDER "M105 Falscher Extruder" +#define MSG_M200_INVALID_EXTRUDER "M200 Falscher Extruder" +#define MSG_M218_INVALID_EXTRUDER "M218 Falscher Extruder" +#define MSG_M221_INVALID_EXTRUDER "M221 Falscher Extruder" +#define MSG_ERR_NO_THERMISTORS "Keine Thermistoren - keine Temperatur" +#define MSG_M109_INVALID_EXTRUDER "M109 Falscher Extruder" +#define MSG_HEATING "Aufwaermen" +#define(length = 20) MSG_HEATING_COMPLETE "Aufwaermen OK" +#define MSG_BED_HEATING "Bed aufwaermen" +#define MSG_BED_DONE "Bed OK" +#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" +#define MSG_ERR_KILLED "Printer gestoppt. kill() aufgerufen!" +#define MSG_ERR_STOPPED "Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)" +#define MSG_RESEND "Wiederholen: " +#define MSG_M119_REPORT "Statusbericht Endanschlag" +#define MSG_ENDSTOP_HIT "AUSGELOEST" +#define MSG_ENDSTOP_OPEN "offen" + +#define MSG_SD_CANT_OPEN_SUBDIR "Kann Unterverz. nicht oeffnen" +#define MSG_SD_INIT_FAIL "SD Init fehlerhaft" +#define MSG_SD_VOL_INIT_FAIL "Dateisystem Init fehlerhaft" +#define MSG_SD_OPENROOT_FAIL "Zugriff auf Basisverzeichnis misslungen" +#define MSG_SD_CARD_OK "SD Karte ok" +#define MSG_SD_WORKDIR_FAIL "Oeffnen Arbeitsverzeichnis misslungen" +#define MSG_SD_OPEN_FILE_FAIL "Fehler beim Oeffnen der Datei: " +#define MSG_SD_FILE_OPENED "Datei geoeffnet: " +#define MSG_SD_FILE_SELECTED "Datei ausgewaehlt" +#define MSG_SD_WRITE_TO_FILE "Schreiben der Datei: " +#define MSG_SD_PRINTING_BYTE "SD printing byte " +#define MSG_SD_NOT_PRINTING "Kein SD Print" +#define MSG_SD_ERR_WRITE_TO_FILE "Fehler beim Schreiben in Datei" +#define MSG_SD_CANT_ENTER_SUBDIR "Zugangsproblem Unterverzeichnis: " +#define MSG_STEPPER_TOO_HIGH "Schrittrate zu hoch" +#define MSG_ENDSTOPS_HIT "Endanschlag erreicht" +#define MSG_ERR_COLD_EXTRUDE_STOP "Stopp, Extruder kalt!" +#define MSG_BABYSTEPPING_X "Babystepping X" +#define MSG_BABYSTEPPING_Y "Babystepping Y" +#define MSG_BABYSTEPPING_Z "Z wurde eingestellt" +#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Menuestruktur fehlerhaft" + +#define MSG_LANGUAGE_NAME "Deutsch" +#define MSG_LANGUAGE_SELECT "Waehle Sprache" +#define MSG_PRUSA3D "prusa3d.com" +#define MSG_PRUSA3D_FORUM "forum.prusa3d.com" +#define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" + +#define MSG_SELFTEST_ERROR "Selbtest Fehler!" +#define MSG_SELFTEST_PLEASECHECK "Bitte pruefe:" +#define MSG_SELFTEST_NOTCONNECTED "Nicht angeschlossen" +#define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" +#define MSG_SELFTEST_BEDHEATER "Bed / Heater" +#define MSG_SELFTEST_WIRINGERROR "Verdrahtungfehler" +#define MSG_SELFTEST_ENDSTOPS "Endschalter" +#define MSG_SELFTEST_MOTOR "Motor" +#define MSG_SELFTEST_ENDSTOP "Endstop" +#define MSG_SELFTEST_ENDSTOP_NOTHIT "Ende nicht getrof." +#define MSG_SELFTEST_OK "Selbsttest OK" +#define MSG_LOOSE_PULLEY "Lose Riemenscheibe" + +#define MSG_SELFTEST_FAN "Lueftertest" +#define(length = 20) MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?" +#define(length = 20) MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?" +#define MSG_SELFTEST_FAN_YES "Dreht" +#define MSG_SELFTEST_FAN_NO "Dreht nicht" + +#define(length = 20) MSG_STATS_TOTALFILAMENT "Gesamtfilament:" +#define(length = 20) MSG_STATS_TOTALPRINTTIME "Totale Druckzeit:" +#define(length = 20) MSG_STATS_FILAMENTUSED "Filamentverbrauch:" +#define(length = 20) MSG_STATS_PRINTTIME "Druckzeit: " +#define(length = 20) MSG_SELFTEST_START "Selbsttest start " +#define(length = 20) MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe Endschalter " +#define(length = 20) MSG_SELFTEST_CHECK_HOTEND "Pruefe Hotend" +#define(length = 20) MSG_SELFTEST_CHECK_X "Pruefe X Achse " +#define(length = 20) MSG_SELFTEST_CHECK_Y "Pruefe Y Achse " +#define(length = 20) MSG_SELFTEST_CHECK_Z "Pruefe Z Achse " +#define(length = 20) MSG_SELFTEST_CHECK_BED "Pruefe Bed " +#define(length = 20) MSG_SELFTEST_CHECK_ALLCORRECT "Alles richtig " +#define MSG_SELFTEST "Selbsttest " +#define(length = 20) MSG_SELFTEST_FAILED "Selbsttest misslung." +#define MSG_STATISTICS "Statistiken " +#define MSG_USB_PRINTING "Drucken ueber USB" +#define MSG_HOMEYZ "Kalibrieren Z" +#define MSG_HOMEYZ_PROGRESS "Kalibriere Z" +#define MSG_HOMEYZ_DONE "Kalibrierung OK" + +#define MSG_SHOW_END_STOPS "Endschalter Stat." +#define MSG_CALIBRATE_BED "Kalibrierung XYZ" +#define MSG_CALIBRATE_BED_RESET "Reset XYZ Kalibr." + + +#define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." +#define(length = 20, lines = 8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken wenn ganz oben." + + +#define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +#define(length = 20, lines = 2) MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Ist der Schlitten ganz oben?" + +#define(length = 60) MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 "Suchen Bed Kalibrierpunkt" +#define(length = 14) MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 " von 4" +#define(length = 60) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 "Verbesserung Bed Kalibrierpunkt" +#define(length = 14) MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " von 9" +#define(length = 60) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Messen der Referenzhoehe des Kalibrierpunktes" +#define(length = 14) MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " von 9" + +>>>>>>> Add optional 8-point Mesh Bed Correction offsets + LCD and translations support #define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteration " -+ -+#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bed-Kalibrierpunkt nicht gefunden." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bed-Kalibrierpunkt nicht gefunden." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne." -+ #define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne." -+ -+#define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_LOW "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset" +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!" +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert." -+ #define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_HIGH "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset." -+ #define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset." -+ -+#define(length = 20, lines = 2) MSG_NEW_FIRMWARE_AVAILABLE "Neue Firmware Version verfuegbar:" -+ #define(length = 20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Bitte aktualisieren." -+ -+ #define(length = 20, lines = 8) MSG_FOLLOW_CALIBRATION_FLOW "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow." -+ #define(length = 20, lines = 12) MSG_BABYSTEP_Z_NOT_SET "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." -+ -+ +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne." +#define(length = 20, lines = 8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T0 "Filament in extruder 1 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T1 "Filament in extruder 2 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T2 "Filament in extruder 3 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T3 "Filament in extruder 4 einlegen. Klicken wenn fertig." -+ #define(length = 20, lines = 1) MSG_CHANGE_EXTR "Wechsel extruder" -+ +#define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_LOW "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset" + +#define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_POINT_HIGH "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset." +#define(length = 20, lines = 4) MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset." + +#define(length = 20, lines = 2) MSG_NEW_FIRMWARE_AVAILABLE "Neue Firmware Version verfuegbar:" +#define(length = 20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Bitte aktualisieren." + +#define(length = 20, lines = 8) MSG_FOLLOW_CALIBRATION_FLOW "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel First steps, Abschnitt Calibration flow." +#define(length = 20, lines = 12) MSG_BABYSTEP_Z_NOT_SET "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." -+ #define(length = 20, lines = 4) MSG_FIL_ADJUSTING "Filament positionieren. Bitte warten." -+ #define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." -+ -+ #define(length = 20, lines = 1) MSG_CALIBRATE_E "Kalibriere E" -+//#define(length=20, lines=1) "Reset E Cal." +#define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T0 "Filament in extruder 1 einlegen. Klicken wenn fertig." +#define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T1 "Filament in extruder 2 einlegen. Klicken wenn fertig." +#define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T2 "Filament in extruder 3 einlegen. Klicken wenn fertig." +#define(length = 20, lines = 4) MSG_FILAMENT_LOADING_T3 "Filament in extruder 4 einlegen. Klicken wenn fertig." +#define(length = 20, lines = 1) MSG_CHANGE_EXTR "Wechsel extruder" -+#define(length = 20, lines = 8) MSG_E_CAL_KNOB "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." -+ -+//#define(length=20, lines=1) MSG_FARM_CARD_MENU "Farm mode print" -+#define(length = 20, lines = 8) MSG_MARK_FIL "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." -+ #define(length = 20, lines = 8) MSG_CLEAN_NOZZLE_E "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." -+ #define(length = 20, lines = 3) MSG_WAITING_TEMP "Warten auf Abkuehlung von Heater und Bed." -+ #define(length = 20, lines = 2) MSG_FILAMENT_CLEAN "Ist Farbe rein?" -+ #define(lenght = 20, lines = 1) MSG_UNLOADING_FILAMENT "Filament auswerfen" -+ #define(length = 20, lines = 8) MSG_PAPER "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" -+ -+#define MSG_BED_CORRECTION_MENU "Bed level Korrekt" +#define(length = 20, lines = 4) MSG_FIL_ADJUSTING "Filament positionieren. Bitte warten." +#define(length = 20, lines = 8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." -+ #define MSG_BED_CORRECTION_LEFT "Links [um]" -+ #define MSG_BED_CORRECTION_RIGHT "Rechts [um]" -+ #define MSG_BED_CORRECTION_FRONT "Vorne [um]" -+ #define MSG_BED_CORRECTION_REAR "Hinten [um]" -+ #define MSG_BED_CORRECTION_RESET "Ruecksetzen" -+ -+#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" -+ #define MSG_MENU_CALIBRATION "Kalibrierung" +#define(length = 20, lines = 1) MSG_CALIBRATE_E "Kalibriere E" +//#define(length=20, lines=1) "Reset E Cal." -+ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" -+ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlashAir]" +#define(length = 20, lines = 8) MSG_E_CAL_KNOB "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig." + +//#define(length=20, lines=1) MSG_FARM_CARD_MENU "Farm mode print" + +#define(length = 20, lines = 8) MSG_MARK_FIL "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig." +#define(length = 20, lines = 8) MSG_CLEAN_NOZZLE_E "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig." +#define(length = 20, lines = 3) MSG_WAITING_TEMP "Warten auf Abkuehlung von Heater und Bed." + +#define(length = 20, lines = 2) MSG_FILAMENT_CLEAN "Ist Farbe rein?" +#define(lenght = 20, lines = 1) MSG_UNLOADING_FILAMENT "Filament auswerfen" +#define(length = 20, lines = 8) MSG_PAPER "Legen ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten" + +#define MSG_BED_CORRECTION_MENU "Bed level Korrekt" +#ifdef MBC_8POINT + #define MSG_BED_CORRECTION_P1 "Punkt a [um]" + #define MSG_BED_CORRECTION_P2 "Punkt b [um]" + #define MSG_BED_CORRECTION_P3 "Punkt c [um]" + #define MSG_BED_CORRECTION_P4 "Punkt d [um]" + #define MSG_BED_CORRECTION_P5 "Punkt e [um]" + #define MSG_BED_CORRECTION_P6 "Punkt f [um]" + #define MSG_BED_CORRECTION_P7 "Punkt g [um]" + #define MSG_BED_CORRECTION_P8 "Punkt h [um]" +#else +//#define MSG_BED_CORRECTION_LEFT "Links [um]" +//#define MSG_BED_CORRECTION_RIGHT "Rechts [um]" +//#define MSG_BED_CORRECTION_FRONT "Vorne [um]" +//#define MSG_BED_CORRECTION_REAR "Hinten [um]" +#endif +#define MSG_BED_CORRECTION_RESET "Ruecksetzen" + +#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" +#define MSG_MENU_CALIBRATION "Kalibrierung" + +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlashAir]" #define MSG_FINISHING_MOVEMENTS "Bewegung beenden" #define MSG_PRINT_PAUSED "Druck pausiert" @@ -354,4 +364,3 @@ #define MSG_PLEASE_LOAD_PLA "Bitte laden Sie zuerst PLA Filament." #define MSG_FILE_CNT "Einige Dateien werden nicht sortiert. Max. Anzahl der Dateien in einem Ordner ist 100." #define MSG_WIZARD_HEATING "Vorheizen der Duese. Bitte warten." - diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 561567df6..21d7b6a6c 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -266,10 +266,21 @@ #define(length=20, lines=8) MSG_PAPER "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." #define MSG_BED_CORRECTION_MENU "Bed level correct" -#define(length=14,lines=1) MSG_BED_CORRECTION_LEFT "Left side [um]" -#define(length=14,lines=1) MSG_BED_CORRECTION_RIGHT "Right side[um]" -#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT "Front side[um]" -#define(length=14,lines=1) MSG_BED_CORRECTION_REAR "Rear side [um]" +#ifdef MBC_8POINT +#define(length=13,lines=1) MSG_BED_CORRECTION_P1 "FrontLeft[um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P2 "FrontCntr[um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P3 "FrontRt [um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P4 "MidLeft [um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P5 "MidRight [um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P6 "RearLeft [um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P7 "RearCntr [um]" +#define(length=13,lines=1) MSG_BED_CORRECTION_P8 "RearRight[um]" +#else +//#define(length=14,lines=1) MSG_BED_CORRECTION_LEFT "Left side [um]" +//#define(length=14,lines=1) MSG_BED_CORRECTION_RIGHT "Right side[um]" +//#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT "Front side[um]" +//#define(length=14,lines=1) MSG_BED_CORRECTION_REAR "Rear side [um]" +#endif #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" diff --git a/Firmware/language_es.h b/Firmware/language_es.h index f087ea744..65b0a710d 100644 --- a/Firmware/language_es.h +++ b/Firmware/language_es.h @@ -227,10 +227,21 @@ #define MSG_FOLLOW_CALIBRATION_FLOW "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow." #define MSG_BABYSTEP_Z_NOT_SET "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." #define MSG_BED_CORRECTION_MENU "Corr. de la cama" -#define MSG_BED_CORRECTION_LEFT "Izquierda [um]" -#define MSG_BED_CORRECTION_RIGHT "Derecha [um]" -#define MSG_BED_CORRECTION_FRONT "Adelante [um]" -#define MSG_BED_CORRECTION_REAR "Atras [um]" +#ifdef MBC_8POINT +#define MSG_BED_CORRECTION_P1 "Punto a [um]" +#define MSG_BED_CORRECTION_P2 "Punto b [um]" +#define MSG_BED_CORRECTION_P3 "Punto c [um]" +#define MSG_BED_CORRECTION_P4 "Punto d [um]" +#define MSG_BED_CORRECTION_P5 "Punto e [um]" +#define MSG_BED_CORRECTION_P6 "Punto f [um]" +#define MSG_BED_CORRECTION_P7 "Punto g [um]" +#define MSG_BED_CORRECTION_P8 "Punto h [um]" +#else +//#define MSG_BED_CORRECTION_LEFT "Izquierda [um]" +//#define MSG_BED_CORRECTION_RIGHT "Derecha [um]" +//#define MSG_BED_CORRECTION_FRONT "Adelante [um]" +//#define MSG_BED_CORRECTION_REAR "Atras [um]" +#endif #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" @@ -334,4 +345,4 @@ #define MSG_PLA_FILAMENT_LOADED "Esta el filamento PLA cargado?" #define MSG_PLEASE_LOAD_PLA "Carga el filamento PLA primero por favor." #define MSG_FILE_CNT "Algunos archivos no seran ordenados. El Max. num. de archivos para ordenar en 1 carpeta es 100." -#define MSG_WIZARD_HEATING "Precalentando nozzle. Espera por favor." \ No newline at end of file +#define MSG_WIZARD_HEATING "Precalentando nozzle. Espera por favor." diff --git a/Firmware/language_it.h b/Firmware/language_it.h index 44c897680..9b747eec2 100644 --- a/Firmware/language_it.h +++ b/Firmware/language_it.h @@ -222,10 +222,21 @@ #define MSG_BABYSTEP_Z_NOT_SET "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." #define MSG_BED_CORRECTION_MENU "Correz. liv.letto" -#define MSG_BED_CORRECTION_LEFT "Sinistra [um]" -#define MSG_BED_CORRECTION_RIGHT "Destra [um]" -#define MSG_BED_CORRECTION_FRONT "Fronte [um]" -#define MSG_BED_CORRECTION_REAR "Retro [um]" +#ifdef MBC_8POINT +#define MSG_BED_CORRECTION_P1 "Punto a [um]" +#define MSG_BED_CORRECTION_P2 "Punto b [um]" +#define MSG_BED_CORRECTION_P3 "Punto c [um]" +#define MSG_BED_CORRECTION_P4 "Punto d [um]" +#define MSG_BED_CORRECTION_P5 "Punto e [um]" +#define MSG_BED_CORRECTION_P6 "Punto f [um]" +#define MSG_BED_CORRECTION_P7 "Punto g [um]" +#define MSG_BED_CORRECTION_P8 "Punto h [um]" +#else +//#define MSG_BED_CORRECTION_LEFT "Sinistra [um]" +//#define MSG_BED_CORRECTION_RIGHT "Destra [um]" +//#define MSG_BED_CORRECTION_FRONT "Fronte [um]" +//#define MSG_BED_CORRECTION_REAR "Retro [um]" +#endif #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh livel. letto" @@ -325,4 +336,4 @@ #define MSG_PLA_FILAMENT_LOADED "Il PLA e stato caricato?" #define MSG_PLEASE_LOAD_PLA "Per favore prima caricare filamento di PLA." #define MSG_FILE_CNT "Alcuni dei file non potranno essere organizzati. 100 e il n. max. di file che possono essere organizzati." -#define MSG_WIZARD_HEATING "Sto preriscaldando l'ugello. Per favore attendi." \ No newline at end of file +#define MSG_WIZARD_HEATING "Sto preriscaldando l'ugello. Per favore attendi." diff --git a/Firmware/language_pl.h b/Firmware/language_pl.h index ebbcfe8aa..2d6a0343f 100644 --- a/Firmware/language_pl.h +++ b/Firmware/language_pl.h @@ -233,10 +233,21 @@ #define MSG_FOLLOW_CALIBRATION_FLOW "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest." #define MSG_BABYSTEP_Z_NOT_SET "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy." #define MSG_BED_CORRECTION_MENU "Korekta podkladki" -#define MSG_BED_CORRECTION_LEFT "W lewo [um]" -#define MSG_BED_CORRECTION_RIGHT "W prawo [um]" -#define MSG_BED_CORRECTION_FRONT "Do przodu [um]" -#define MSG_BED_CORRECTION_REAR "Do tylu [um]" +#ifdef MBC_8POINT +#define MSG_BED_CORRECTION_P1 "Punkt a [um]" +#define MSG_BED_CORRECTION_P2 "Punkt b [um]" +#define MSG_BED_CORRECTION_P3 "Punkt c [um]" +#define MSG_BED_CORRECTION_P4 "Punkt d [um]" +#define MSG_BED_CORRECTION_P5 "Punkt e [um]" +#define MSG_BED_CORRECTION_P6 "Punkt f [um]" +#define MSG_BED_CORRECTION_P7 "Punkt g [um]" +#define MSG_BED_CORRECTION_P8 "Punkt h [um]" +#else +//#define MSG_BED_CORRECTION_LEFT "W lewo [um]" +//#define MSG_BED_CORRECTION_RIGHT "W prawo [um]" +//#define MSG_BED_CORRECTION_FRONT "Do przodu [um]" +//#define MSG_BED_CORRECTION_REAR "Do tylu [um]" +#endif #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" @@ -337,4 +348,4 @@ #define MSG_PLA_FILAMENT_LOADED "Fialment PLA jest zaladowany?" #define MSG_PLEASE_LOAD_PLA "Prosze, najpierw zaladuj filament PLA." #define MSG_FILE_CNT "Niektore pliki nie beda sortowane. Max. ilosc plikow do sortu w 1 folderze to 100." -#define MSG_WIZARD_HEATING "Nagrzewanie dyszy. Prosze czekac." \ No newline at end of file +#define MSG_WIZARD_HEATING "Nagrzewanie dyszy. Prosze czekac." diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a6cb5ce1a..9c9d64d49 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -58,9 +58,21 @@ union MenuData char ip_str[3*4+3+1]; } supportMenu; +#if defined(MBC_8POINT) struct AdjustBed { - // 6+13+16=35B + // 18+9+24=51B + // editMenuParentState is used when an edit menu is entered, so it knows + // the return menu and encoder state. + struct EditMenuParentState editMenuParentState; + int8_t status; + int16_t offset[8]; // Set point + int16_t disply[8]; // Temp point + } adjustBed; +#else + struct AdjustBed + { + // 18+5+16=39B // editMenuParentState is used when an edit menu is entered, so it knows // the return menu and encoder state. struct EditMenuParentState editMenuParentState; @@ -74,12 +86,26 @@ union MenuData int front2; int rear2; } adjustBed; - +#endif // editMenuParentState is used when an edit menu is entered, so it knows // the return menu and encoder state. struct EditMenuParentState editMenuParentState; }; +#if defined(MBC_8POINT) + +const char * const *MBCPointName[] = { + MSG_BED_CORRECTION_P1_LANG_TABLE, + MSG_BED_CORRECTION_P2_LANG_TABLE, + MSG_BED_CORRECTION_P3_LANG_TABLE, + MSG_BED_CORRECTION_P4_LANG_TABLE, + MSG_BED_CORRECTION_P5_LANG_TABLE, + MSG_BED_CORRECTION_P6_LANG_TABLE, + MSG_BED_CORRECTION_P7_LANG_TABLE, + MSG_BED_CORRECTION_P8_LANG_TABLE, +}; +#endif + // State of the currently active menu. // C Union manages sharing of the static memory by all the menus. union MenuData menuData; @@ -224,6 +250,8 @@ static void menu_action_setlang(unsigned char lang); static void menu_action_sdfile(const char* filename, char* longFilename); static void menu_action_sddirectory(const char* filename, char* longFilename); static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); +static void menu_action_setting_edit_int4(const char* pstr, int* ptr, int minValue, int maxValue); + #if 0 static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); @@ -2046,6 +2074,76 @@ static void lcd_babystep_z() { static void lcd_adjust_bed(); +#if defined(MBC_8POINT) +static void lcd_mbc_offsets_clear() +{ + eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); + for (int i = 0; i < 16; i += 2) + { + eeprom_update_word((uint16_t *)(EEPROM_BED_CORRECTION_OFFSETS + i), 0); + } +} + +static void lcd_adjust_bed_reset() +{ + lcd_mbc_offsets_clear(); + lcd_goto_menu(lcd_adjust_bed, 0, false); + // Because we did not leave the menu, the menuData did not reset. + // Force refresh of the bed leveling data. + menuData.adjustBed.status = 0; +} + +void adjust_bed_reset() +{ + lcd_mbc_offsets_clear(); + memset(menuData.adjustBed.offset, 0, sizeof(menuData.adjustBed.offset)); + memset(menuData.adjustBed.disply, 0, sizeof(menuData.adjustBed.disply)); +} + +// Limit of signed byte stored (x2) +#define BED_ADJUSTMENT_UM_MAX 500 + +static void lcd_adjust_bed() +{ + if (menuData.adjustBed.status == 0) { + // Menu was entered. + // Initialize its status. + menuData.adjustBed.status = 1; + bool valid = true; + if (eeprom_read_byte((unsigned char *)EEPROM_BED_CORRECTION_VALID) == 1) + { + for (uint8_t i = 0; i < 8; i++) + { + int val = eeprom_read_word((uint16_t *)(EEPROM_BED_CORRECTION_OFFSETS + 2 * i)); + menuData.adjustBed.offset[i] = menuData.adjustBed.disply[i] = val; + if (abs(val) > BED_ADJUSTMENT_UM_MAX) + valid = false; + } + } else { + valid = false; + } + + if (!valid) { + // Reset the values: simulate an edit. + memset(menuData.adjustBed.disply, 0, sizeof(menuData.adjustBed.disply)); + } + lcdDrawUpdate = 1; + eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); + } + + START_MENU(); + MENU_ITEM(back, MSG_SETTINGS, lcd_calibration_menu); + for (uint8_t i = 0; i < 8; i++) + { + menuData.adjustBed.offset[i] = menuData.adjustBed.disply[i]; + eeprom_update_word((uint16_t *)(EEPROM_BED_CORRECTION_OFFSETS + 2 * i), menuData.adjustBed.offset[i]); + MENU_ITEM_EDIT(int4, LANG_TABLE_SELECT(MBCPointName[i]), &menuData.adjustBed.disply[i], -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX); + } + MENU_ITEM(function, MSG_BED_CORRECTION_RESET, lcd_adjust_bed_reset); + END_MENU(); +} + +#else static void lcd_adjust_bed_reset() { eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); @@ -2118,6 +2216,7 @@ static void lcd_adjust_bed() MENU_ITEM(function, MSG_BED_CORRECTION_RESET, lcd_adjust_bed_reset); END_MENU(); } +#endif void pid_extruder() { @@ -5106,6 +5205,8 @@ void lcd_sdcard_menu() */ menu_edit_type(int, int3, itostr3, 1) +menu_edit_type(int, int4, itostr4, 1) + #if defined(AUTOTEMP) menu_edit_type(float, float3, ftostr3, 1) menu_edit_type(float, float32, ftostr32, 100) @@ -6551,12 +6652,14 @@ char *itostr3left(const int &xx) return conv; } -// Convert int to rj string with 1234 format -char *itostr4(const int &xx) { - conv[0] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' '; +// Convert int to rj string with 1234 or -123 format +char *itostr4(const int &x) +{ + int xx = abs(x); + conv[0] = (x < 0) ? '-' : (xx >= 1000) ? (xx / 1000) % 10 + '0' : ' '; conv[1] = xx >= 100 ? (xx / 100) % 10 + '0' : ' '; conv[2] = xx >= 10 ? (xx / 10) % 10 + '0' : ' '; - conv[3] = xx % 10 + '0'; + conv[3] = (xx) % 10 + '0'; conv[4] = 0; return conv; } diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index f55be0722..92cf97287 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -1124,6 +1124,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons #endif #define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_int4_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr4(*(data))) +#define lcd_implementation_drawmenu_setting_edit_int4(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr4(*(data))) #define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) @@ -1144,6 +1146,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons //Add version for callback functions #define lcd_implementation_drawmenu_setting_edit_callback_int3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_int3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_int4_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr4(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_int4(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr4(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) diff --git a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h index f05f8ba5f..db95abffc 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h @@ -235,6 +235,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis // diff --git a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h index 764f1e949..99605741a 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h @@ -235,6 +235,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis // diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h index 2f4836c49..884ad292c 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h @@ -230,6 +230,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis // diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h index c31ad1267..edebc08c3 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h @@ -232,6 +232,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis // diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index 043ddb81a..c21d55d59 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -230,6 +230,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis // diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index 773085c92..b19d3e52d 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -232,6 +232,19 @@ BED SETTINGS #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif +// Enable 8 point Mesh Bed Correction offsets +// 8 points of correction (a thru h) starting at the front / home position +// +// B A C K +// +-----------+ +// | f g h | +// | d X e | +// | a b c | +// +-----------+ +// F R O N T +// +#define MBC_8POINT + // Bed Temperature Control // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis //