Add optional 8-point Mesh Bed Correction offsets + LCD and translations support

MBC offsets limited to +/- 500um (stored as int16 in EEPROM)
This commit is contained in:
Ted Hess 2017-06-29 12:49:45 -04:00
parent 7bd9655fd4
commit ab8610ecff
19 changed files with 747 additions and 382 deletions

View File

@ -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

View File

@ -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");

View File

@ -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 = '';

View File

@ -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,

View File

@ -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];

View File

@ -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."
#define MSG_WIZARD_HEATING "Predehrivam trysku. Prosim cekejte."

View File

@ -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."

View File

@ -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"

View File

@ -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."
#define MSG_WIZARD_HEATING "Precalentando nozzle. Espera por favor."

View File

@ -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."
#define MSG_WIZARD_HEATING "Sto preriscaldando l'ugello. Per favore attendi."

View File

@ -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."
#define MSG_WIZARD_HEATING "Nagrzewanie dyszy. Prosze czekac."

View File

@ -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;
}

View File

@ -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)))

View File

@ -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
//

View File

@ -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
//

View File

@ -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
//

View File

@ -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
//

View File

@ -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
//

View File

@ -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
//