diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 95f4295c6..415405736 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.10-12" +#define FW_version "3.0.11-RC1" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 @@ -46,6 +46,8 @@ #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) +#define EEPROM_BOWDEN_LENGTH (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int for bowden lengths for multimaterial +#define EEPROM_CALIBRATION_STATUS_PINDA (EEPROM_BOWDEN_LENGTH - 1) //0 - not calibrated; 1 - calibrated // Currently running firmware, each digit stored as uint16_t. // The flavor differentiates a dev, alpha, beta, release candidate or a release version. @@ -714,9 +716,6 @@ enum CalibrationStatus // The XYZ calibration has been performed, now it remains to run the V2Calibration.gcode. CALIBRATION_STATUS_LIVE_ADJUST = 230, - //V2 calibration has been run, now run PINDA probe temperature calibration - CALIBRATION_STATUS_PINDA = 220, - // Calibrated, ready to print. CALIBRATION_STATUS_CALIBRATED = 1, diff --git a/Firmware/ConfigurationStore.h b/Firmware/ConfigurationStore.h index c73b29bcb..164aed681 100644 --- a/Firmware/ConfigurationStore.h +++ b/Firmware/ConfigurationStore.h @@ -22,5 +22,6 @@ FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_Prin inline uint8_t calibration_status() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS); } inline uint8_t calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } +inline bool calibration_status_pinda() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA); } #endif//CONFIG_STORE_H diff --git a/Firmware/Firmware.sublime-project b/Firmware/Firmware.sublime-project deleted file mode 100644 index 528d604a2..000000000 --- a/Firmware/Firmware.sublime-project +++ /dev/null @@ -1,59 +0,0 @@ -{ - "build_systems": - [ - { - "name": "compile", - "working_dir": "$project_path", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - // Arduino build process: - // https://www.arduino.cc/en/Hacking/BuildProcess - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\arduino_debug.exe\" --pref build.path=..\\output --verify --board marlinAddon:avr:rambo -v --preserve-temp-files Firmware.ino" - }, - { - "name": "compile & upload", - "working_dir": "$project_path", - "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", - //FIXME - // Better to use avrdude directly? - // http://www.nongnu.org/avrdude/user-manual/avrdude_4.html - // avrdude -F -v -pm168 -cstk500v1 -P\\.\COM4 -b19200 -D -Uflash:w:"file.hex":i - // may need add path to avrdude config file: -C"c:\utils\arduino-0016\hardware\tools\avr\etc\avrdude.conf" if Arduino IDE installed in "c:\utils\arduino-0016\" - // https://typeunsafe.wordpress.com/2011/07/22/programming-arduino-with-avrdude/ - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\arduino_debug.exe\" --pref build.path=..\\output --upload --port COM9 --board marlinAddon:avr:rambo -v --preserve-temp-files Firmware.ino" - }, - { - "name": "map-data", - "working_dir": "$project_path", - // https://sourceware.org/binutils/docs-2.21/binutils/objdump.html - // Maybe it is better to generate map files by the linker? - // avr-gcc -g -mmcu=atmega8 -Wl,-Map,demo.map -o demo.elf demo.o - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-objdump.exe\" -x -S -C -j .data ..\\output\\Firmware.ino.elf > ..\\output\\Firmware-data.map" - }, - { - "name": "map-bss", - "working_dir": "$project_path", - // https://sourceware.org/binutils/docs-2.21/binutils/objdump.html - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-objdump.exe\" -x -S -C -j .bss ..\\output\\Firmware.ino.elf > ..\\output\\Firmware-bss.map" - }, - { - "name": "map-all", - "working_dir": "$project_path", - // https://sourceware.org/binutils/docs-2.21/binutils/objdump.html - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-objdump.exe\" -x -S -C ..\\output\\Firmware.ino.elf > ..\\output\\Firmware-all.map" - }, - { - "name": "disassemble", - "working_dir": "$project_path", - // https://sourceware.org/binutils/docs-2.21/binutils/objdump.html - "shell_cmd": "\"c:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-objdump.exe\" -h -w -S ..\\output\\Firmware.ino.elf > ..\\output\\Firmware.asm" - } - ], - "folders": - [ - { - "path": "." -// "folder_exclude_patterns": [".svn", "._d", ".metadata", ".settings"], -// "file_exclude_patterns": ["XS.c"] - } - ] -} diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index c33ccb392..c0af3f07f 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -282,6 +282,7 @@ extern float retract_recover_length, retract_recover_length_swap, retract_recove extern unsigned long starttime; extern unsigned long stoptime; +extern int bowden_length[4]; extern bool is_usb_printing; extern bool homing_flag; extern bool temp_cal_active; @@ -320,6 +321,7 @@ extern unsigned long pause_time; extern unsigned long start_pause_print; extern bool mesh_bed_leveling_flag; +extern bool mesh_bed_run_from_menu; extern void calculate_volumetric_multipliers(); @@ -341,4 +343,5 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_ float temp_comp_interpolation(float temperature); void temp_compensation_apply(); void temp_compensation_start(); -void wait_for_heater(long codenum); \ No newline at end of file +void wait_for_heater(long codenum); +void serialecho_temperatures(); \ No newline at end of file diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4e51b7913..817641ac3 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -247,6 +247,8 @@ int extruder_multiply[EXTRUDERS] = {100 #endif }; +int bowden_length[4]; + bool is_usb_printing = false; bool homing_flag = false; @@ -265,7 +267,10 @@ float pause_lastpos[4]; unsigned long pause_time = 0; unsigned long start_pause_print = millis(); +unsigned long load_filament_time; + bool mesh_bed_leveling_flag = false; +bool mesh_bed_run_from_menu = false; unsigned char lang_selected = 0; int8_t FarmMode = 0; @@ -897,7 +902,7 @@ int er_progress = 0; void factory_reset(char level, bool quiet) { lcd_implementation_clear(); - + int cursor_pos = 0; switch (level) { // Level 0: Language reset @@ -968,6 +973,9 @@ void factory_reset(char level, bool quiet) } + break; + case 4: + bowden_menu(); break; default: @@ -983,178 +991,183 @@ void factory_reset(char level, bool quiet) // are initialized by the main() routine provided by the Arduino framework. void setup() { - setup_killpin(); - setup_powerhold(); - MYSERIAL.begin(BAUDRATE); - SERIAL_PROTOCOLLNPGM("start"); - SERIAL_ECHO_START; + setup_killpin(); + setup_powerhold(); + MYSERIAL.begin(BAUDRATE); + SERIAL_PROTOCOLLNPGM("start"); + SERIAL_ECHO_START; #if 0 - SERIAL_ECHOLN("Reading eeprom from 0 to 100: start"); - for (int i = 0; i < 4096; ++ i) { - int b = eeprom_read_byte((unsigned char*)i); - if (b != 255) { - SERIAL_ECHO(i); - SERIAL_ECHO(":"); - SERIAL_ECHO(b); - SERIAL_ECHOLN(""); - } - } - SERIAL_ECHOLN("Reading eeprom from 0 to 100: done"); - #endif + SERIAL_ECHOLN("Reading eeprom from 0 to 100: start"); + for (int i = 0; i < 4096; ++i) { + int b = eeprom_read_byte((unsigned char*)i); + if (b != 255) { + SERIAL_ECHO(i); + SERIAL_ECHO(":"); + SERIAL_ECHO(b); + SERIAL_ECHOLN(""); + } + } + SERIAL_ECHOLN("Reading eeprom from 0 to 100: done"); +#endif - // Check startup - does nothing if bootloader sets MCUSR to 0 - byte mcu = MCUSR; - if(mcu & 1) SERIAL_ECHOLNRPGM(MSG_POWERUP); - if(mcu & 2) SERIAL_ECHOLNRPGM(MSG_EXTERNAL_RESET); - if(mcu & 4) SERIAL_ECHOLNRPGM(MSG_BROWNOUT_RESET); - if(mcu & 8) SERIAL_ECHOLNRPGM(MSG_WATCHDOG_RESET); - if(mcu & 32) SERIAL_ECHOLNRPGM(MSG_SOFTWARE_RESET); - MCUSR=0; + // Check startup - does nothing if bootloader sets MCUSR to 0 + byte mcu = MCUSR; + if (mcu & 1) SERIAL_ECHOLNRPGM(MSG_POWERUP); + if (mcu & 2) SERIAL_ECHOLNRPGM(MSG_EXTERNAL_RESET); + if (mcu & 4) SERIAL_ECHOLNRPGM(MSG_BROWNOUT_RESET); + if (mcu & 8) SERIAL_ECHOLNRPGM(MSG_WATCHDOG_RESET); + if (mcu & 32) SERIAL_ECHOLNRPGM(MSG_SOFTWARE_RESET); + MCUSR = 0; - //SERIAL_ECHORPGM(MSG_MARLIN); - //SERIAL_ECHOLNRPGM(VERSION_STRING); - - #ifdef STRING_VERSION_CONFIG_H - #ifdef STRING_CONFIG_H_AUTHOR - SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_CONFIGURATION_VER); - SERIAL_ECHOPGM(STRING_VERSION_CONFIG_H); - SERIAL_ECHORPGM(MSG_AUTHOR); - SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR); - SERIAL_ECHOPGM("Compiled: "); - SERIAL_ECHOLNPGM(__DATE__); - #endif - #endif - - SERIAL_ECHO_START; - SERIAL_ECHORPGM(MSG_FREE_MEMORY); - SERIAL_ECHO(freeMemory()); - SERIAL_ECHORPGM(MSG_PLANNER_BUFFER_BYTES); - SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); - lcd_update_enable(false); - // loads data from EEPROM if available else uses defaults (and resets step acceleration rate) - Config_RetrieveSettings(); - SdFatUtil::set_stack_guard(); //writes magic number at the end of static variables to protect against overwriting static memory by stack - tp_init(); // Initialize temperature loop - plan_init(); // Initialize planner; - watchdog_init(); - st_init(); // Initialize stepper, this enables interrupts! - setup_photpin(); - servo_init(); - // Reset the machine correction matrix. - // It does not make sense to load the correction matrix until the machine is homed. - world2machine_reset(); - - lcd_init(); - if (!READ(BTN_ENC)) - { - _delay_ms(1000); - if (!READ(BTN_ENC)) - { - lcd_implementation_clear(); - - - lcd_printPGM(PSTR("Factory RESET")); - - - SET_OUTPUT(BEEPER); - WRITE(BEEPER, HIGH); - - while (!READ(BTN_ENC)); - - WRITE(BEEPER, LOW); - - + //SERIAL_ECHORPGM(MSG_MARLIN); + //SERIAL_ECHOLNRPGM(VERSION_STRING); - _delay_ms(2000); - - char level = reset_menu(); - factory_reset(level, false); - - switch (level) { - case 0: _delay_ms(0); break; - case 1: _delay_ms(0); break; - case 2: _delay_ms(0); break; - case 3: _delay_ms(0); break; - } - // _delay_ms(100); -/* -#ifdef MESH_BED_LEVELING - _delay_ms(2000); +#ifdef STRING_VERSION_CONFIG_H +#ifdef STRING_CONFIG_H_AUTHOR + SERIAL_ECHO_START; + SERIAL_ECHORPGM(MSG_CONFIGURATION_VER); + SERIAL_ECHOPGM(STRING_VERSION_CONFIG_H); + SERIAL_ECHORPGM(MSG_AUTHOR); + SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR); + SERIAL_ECHOPGM("Compiled: "); + SERIAL_ECHOLNPGM(__DATE__); +#endif +#endif - if (!READ(BTN_ENC)) - { - WRITE(BEEPER, HIGH); - _delay_ms(100); - WRITE(BEEPER, LOW); - _delay_ms(200); - WRITE(BEEPER, HIGH); - _delay_ms(100); - WRITE(BEEPER, LOW); + SERIAL_ECHO_START; + SERIAL_ECHORPGM(MSG_FREE_MEMORY); + SERIAL_ECHO(freeMemory()); + SERIAL_ECHORPGM(MSG_PLANNER_BUFFER_BYTES); + SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); + lcd_update_enable(false); + // loads data from EEPROM if available else uses defaults (and resets step acceleration rate) + Config_RetrieveSettings(); + SdFatUtil::set_stack_guard(); //writes magic number at the end of static variables to protect against overwriting static memory by stack + tp_init(); // Initialize temperature loop + plan_init(); // Initialize planner; + watchdog_init(); + st_init(); // Initialize stepper, this enables interrupts! + setup_photpin(); + servo_init(); + // Reset the machine correction matrix. + // It does not make sense to load the correction matrix until the machine is homed. + world2machine_reset(); - int _z = 0; - calibration_status_store(CALIBRATION_STATUS_CALIBRATED); - EEPROM_save_B(EEPROM_BABYSTEP_X, &_z); - EEPROM_save_B(EEPROM_BABYSTEP_Y, &_z); - EEPROM_save_B(EEPROM_BABYSTEP_Z, &_z); - } - else - { + lcd_init(); + if (!READ(BTN_ENC)) + { + _delay_ms(1000); + if (!READ(BTN_ENC)) + { + lcd_implementation_clear(); - WRITE(BEEPER, HIGH); - _delay_ms(100); - WRITE(BEEPER, LOW); - } -#endif // mesh */ - - } - } - else - { - _delay_ms(1000); // wait 1sec to display the splash screen - } - + lcd_printPGM(PSTR("Factory RESET")); - #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 - SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan - #endif - #ifdef DIGIPOT_I2C - digipot_i2c_init(); - #endif - setup_homepin(); + SET_OUTPUT(BEEPER); + WRITE(BEEPER, HIGH); + + while (!READ(BTN_ENC)); + + WRITE(BEEPER, LOW); + + + + _delay_ms(2000); + + char level = reset_menu(); + factory_reset(level, false); + + switch (level) { + case 0: _delay_ms(0); break; + case 1: _delay_ms(0); break; + case 2: _delay_ms(0); break; + case 3: _delay_ms(0); break; + } + // _delay_ms(100); + /* + #ifdef MESH_BED_LEVELING + _delay_ms(2000); + + if (!READ(BTN_ENC)) + { + WRITE(BEEPER, HIGH); + _delay_ms(100); + WRITE(BEEPER, LOW); + _delay_ms(200); + WRITE(BEEPER, HIGH); + _delay_ms(100); + WRITE(BEEPER, LOW); + + int _z = 0; + calibration_status_store(CALIBRATION_STATUS_CALIBRATED); + EEPROM_save_B(EEPROM_BABYSTEP_X, &_z); + EEPROM_save_B(EEPROM_BABYSTEP_Y, &_z); + EEPROM_save_B(EEPROM_BABYSTEP_Z, &_z); + } + else + { + + WRITE(BEEPER, HIGH); + _delay_ms(100); + WRITE(BEEPER, LOW); + } + #endif // mesh */ + + } + } + else + { + _delay_ms(1000); // wait 1sec to display the splash screen + } + + + +#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 + SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan +#endif + +#ifdef DIGIPOT_I2C + digipot_i2c_init(); +#endif + setup_homepin(); #if defined(Z_AXIS_ALWAYS_ON) - enable_z(); + enable_z(); #endif - farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if (farm_no == 0xFFFF) farm_no = 0; - if (farm_mode) - { - prusa_statistics(8); - } + farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); + EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); + if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode + if (farm_no == 0xFFFF) farm_no = 0; + if (farm_mode) + { + prusa_statistics(8); + } - // Enable Toshiba FlashAir SD card / WiFi enahanced card. - card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); - // Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false), - // but this times out if a blocking dialog is shown in setup(). - card.initsd(); - - if (eeprom_read_dword((uint32_t*)(EEPROM_TOP-4)) == 0x0ffffffff && - eeprom_read_dword((uint32_t*)(EEPROM_TOP-8)) == 0x0ffffffff && - eeprom_read_dword((uint32_t*)(EEPROM_TOP-12)) == 0x0ffffffff) { - // Maiden startup. The firmware has been loaded and first started on a virgin RAMBo board, - // where all the EEPROM entries are set to 0x0ff. - // Once a firmware boots up, it forces at least a language selection, which changes - // EEPROM_LANG to number lower than 0x0ff. - // 1) Set a high power mode. - eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0); - } + // Enable Toshiba FlashAir SD card / WiFi enahanced card. + card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); + // Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false), + // but this times out if a blocking dialog is shown in setup(). + card.initsd(); + if (eeprom_read_dword((uint32_t*)(EEPROM_TOP - 4)) == 0x0ffffffff && + eeprom_read_dword((uint32_t*)(EEPROM_TOP - 8)) == 0x0ffffffff && + eeprom_read_dword((uint32_t*)(EEPROM_TOP - 12)) == 0x0ffffffff) { + // Maiden startup. The firmware has been loaded and first started on a virgin RAMBo board, + // where all the EEPROM entries are set to 0x0ff. + // Once a firmware boots up, it forces at least a language selection, which changes + // EEPROM_LANG to number lower than 0x0ff. + // 1) Set a high power mode. + eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0); + } +#ifdef SNMM + if (eeprom_read_dword((uint32_t*)EEPROM_BOWDEN_LENGTH) == 0x0ffffffff) { //bowden length used for SNMM + int _z = BOWDEN_LENGTH; + for(int i = 0; i<4; i++) EEPROM_save_B(EEPROM_BOWDEN_LENGTH + i * 2, &_z); + } +#endif // In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM. // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version @@ -1169,6 +1182,10 @@ void setup() temp_cal_active = false; } else temp_cal_active = eeprom_read_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE); + if (eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA) == 255) { + eeprom_write_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); + } + check_babystep(); //checking if Z babystep is in allowed range if (calibration_status() == CALIBRATION_STATUS_ASSEMBLED || @@ -1181,13 +1198,14 @@ void setup() // Show the message. lcd_show_fullscreen_message_and_wait_P(MSG_BABYSTEP_Z_NOT_SET); lcd_update_enable(true); - } else if (calibration_status() == CALIBRATION_STATUS_PINDA && temp_cal_active == true) { + } else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) { lcd_show_fullscreen_message_and_wait_P(MSG_PINDA_NOT_CALIBRATED); lcd_update_enable(true); } else if (calibration_status() == CALIBRATION_STATUS_Z_CALIBRATION) { // Show the message. lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); } + for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); lcd_update_enable(true); // Store the currently running firmware into an eeprom, @@ -1875,6 +1893,7 @@ void trace() { delay(20); } +/* void ramming() { // float tmp[4] = DEFAULT_MAX_FEEDRATE; if (current_temperature[0] < 230) { @@ -1929,10 +1948,10 @@ void ramming() { current_position[E_AXIS] += 4; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); - /*current_position[X_AXIS] += 23; //delay + //current_position[X_AXIS] += 23; //delay + //plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], //current_position[E_AXIS], 600/60, active_extruder); //delay + //current_position[X_AXIS] -= 23; //delay plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay - current_position[X_AXIS] -= 23; //delay - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay*/ delay(4700); max_feedrate[E_AXIS] = 80; current_position[E_AXIS] -= 92; @@ -1957,7 +1976,7 @@ void ramming() { } } - +*/ void process_commands() { #ifdef FILAMENT_RUNOUT_SUPPORT @@ -2050,68 +2069,8 @@ void process_commands() } else if(code_seen("FR")) { // Factory full reset - factory_reset(0,true); - - }else if(code_seen("Y")) { //filaments adjustment at the beginning of print (for SNMM) - #ifdef SNMM - int extr; - SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); //is silent mode or loud mode set - lcd_implementation_clear(); - lcd_display_message_fullscreen_P(MSG_FIL_ADJUSTING); - current_position[Z_AXIS] = 100; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); - digipot_current(2, E_MOTOR_HIGH_CURRENT); - for (extr = 1; extr < 4; extr++) { //we dont know which filament is in nozzle, but we want to load filament0, so all other filaments must unloaded - change_extr(extr); - ramming(); - } - change_extr(0); - current_position[E_AXIS] += FIL_LOAD_LENGTH; //loading filament0 into the nozzle - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); - st_synchronize(); - - for (extr = 1; extr < 4; extr++) { - digipot_current(2, E_MOTOR_LOW_CURRENT); //set lower current for extruder motors - change_extr(extr); - current_position[E_AXIS] += (FIL_LOAD_LENGTH + 3 * FIL_RETURN_LENGTH); //adjusting filaments - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5000, active_extruder); - st_synchronize(); - digipot_current(2, tmp_motor_loud[2]); //set back to normal operation currents - current_position[E_AXIS] -= FIL_RETURN_LENGTH; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); - st_synchronize(); - } - - change_extr(0); - current_position[E_AXIS] += 25; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder); - digipot_current(2, E_MOTOR_HIGH_CURRENT); - ramming(); - if (SilentMode == 1) digipot_current(2, tmp_motor[2]); //set back to normal operation currents - else digipot_current(2, tmp_motor_loud[2]); - st_synchronize(); - lcd_show_fullscreen_message_and_wait_P(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ); - lcd_implementation_clear(); - lcd_printPGM(MSG_PLEASE_WAIT); - current_position[Z_AXIS] = 0; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); - st_synchronize(); - lcd_update_enable(true); - - #endif - } - else if (code_seen("SetF")) { -#ifdef SNMM - bool not_finished = (eeprom_read_byte((unsigned char*)EEPROM_PRINT_FLAG) != PRINT_FINISHED); - eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_STARTED); - if (not_finished) enquecommand_front_P(PSTR("PRUSA Y")); -#endif - } - else if (code_seen("ResF")) { -#ifdef SNMM - eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_FINISHED); -#endif - } + factory_reset(0,true); + } //else if (code_seen('Cal')) { // lcd_calibration(); // } @@ -2818,7 +2777,7 @@ void process_commands() enquecommand_front_P((PSTR("G28 W0"))); break; } - + SERIAL_ECHOLNPGM("PINDA probe calibration start"); custom_message = true; custom_message_type = 4; custom_message_state = 1; @@ -2829,11 +2788,17 @@ void process_commands() plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); - while (abs(degBed() - PINDA_MIN_T) > 1 ) delay_keep_alive(1000); + while (abs(degBed() - PINDA_MIN_T) > 1) { + delay_keep_alive(1000); + serialecho_temperatures(); + } //enquecommand_P(PSTR("M190 S50")); - for (int i = 0; i < PINDA_HEAT_T; i++) delay_keep_alive(1000); - calibration_status_store(CALIBRATION_STATUS_PINDA); //invalidate temp. calibration in case that in will be aborted during the calibration process + for (int i = 0; i < PINDA_HEAT_T; i++) { + delay_keep_alive(1000); + serialecho_temperatures(); + } + eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process current_position[Z_AXIS] = 5; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); @@ -2853,6 +2818,9 @@ void process_commands() SERIAL_ECHOLNPGM(""); for (int i = 0; i<5; i++) { + SERIAL_ECHOPGM("Step: "); + MYSERIAL.print(i+2); + SERIAL_ECHOLNPGM("/6"); custom_message_state = i + 2; t_c = 60 + i * 10; @@ -2862,8 +2830,14 @@ void process_commands() current_position[Z_AXIS] = PINDA_PREHEAT_Z; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); st_synchronize(); - while (degBed() < t_c) delay_keep_alive(1000); - for (int i = 0; i < PINDA_HEAT_T; i++) delay_keep_alive(1000); + while (degBed() < t_c) { + delay_keep_alive(1000); + serialecho_temperatures(); + } + for (int i = 0; i < PINDA_HEAT_T; i++) { + delay_keep_alive(1000); + serialecho_temperatures(); + } current_position[Z_AXIS] = 5; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder); current_position[X_AXIS] = pgm_read_float(bed_ref_points); @@ -2887,7 +2861,14 @@ void process_commands() custom_message_type = 0; custom_message = false; - calibration_status_store(CALIBRATION_STATUS_CALIBRATED); + eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 1); + SERIAL_ECHOLNPGM("Temperature calibration done. Continue with pressing the knob."); + disable_x(); + disable_y(); + disable_z(); + disable_e0(); + disable_e1(); + disable_e2(); lcd_show_fullscreen_message_and_wait_P(MSG_TEMP_CALIBRATION_DONE); lcd_update_enable(true); lcd_update(2); @@ -2962,7 +2943,7 @@ void process_commands() break; } - if (run == false && card.sdprinting == true && temp_cal_active == true && calibration_status() < CALIBRATION_STATUS_PINDA) { + if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) { temp_compensation_start(); run = true; repeatcommand_front(); // repeat G80 with all its parameters @@ -3109,7 +3090,7 @@ void process_commands() } clean_up_after_endstop_move(); SERIAL_ECHOLNPGM("clean up finished "); - if(temp_cal_active == true && calibration_status() < CALIBRATION_STATUS_PINDA) temp_compensation_apply(); //apply PINDA temperature compensation + if(temp_cal_active == true && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated. SERIAL_ECHOLNPGM("babystep applied"); bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1; @@ -3175,7 +3156,7 @@ void process_commands() go_home_with_z_lift(); SERIAL_ECHOLNPGM("Go home finished"); //unretract (after PINDA preheat retraction) - if (card.sdprinting == true && degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true) { + if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) { current_position[E_AXIS] += DEFAULT_RETRACTION; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder); } @@ -3184,6 +3165,7 @@ void process_commands() custom_message_type = custom_message_type_old; custom_message_state = custom_message_state_old; mesh_bed_leveling_flag = false; + mesh_bed_run_from_menu = false; lcd_update(2); } @@ -3283,7 +3265,7 @@ void process_commands() * This G-code will be performed at the end of a calibration script. */ case 87: - calibration_status_store(CALIBRATION_STATUS_PINDA); + calibration_status_store(CALIBRATION_STATUS_CALIBRATED); break; /** @@ -4289,14 +4271,14 @@ Sigma_Exit: else { st_synchronize(); - if(code_seen('X')) disable_x(); - if(code_seen('Y')) disable_y(); - if(code_seen('Z')) disable_z(); - #if ((E0_ENABLE_PIN != X_ENABLE_PIN) && (E1_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS - if(code_seen('E')) { - disable_e0(); - disable_e1(); - disable_e2(); + if (code_seen('X')) disable_x(); + if (code_seen('Y')) disable_y(); + if (code_seen('Z')) disable_z(); +#if ((E0_ENABLE_PIN != X_ENABLE_PIN) && (E1_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS + if (code_seen('E')) { + disable_e0(); + disable_e1(); + disable_e2(); } #endif } @@ -5021,6 +5003,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp #ifdef FILAMENTCHANGEENABLE case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] { + st_synchronize(); float target[4]; float lastpos[4]; @@ -5101,6 +5084,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); + st_synchronize(); + custom_message = true; + lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); // Unload filament if(code_seen('L')) @@ -5109,11 +5095,35 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } else { - #ifdef FILAMENTCHANGE_FINALRETRACT - target[E_AXIS]+= FILAMENTCHANGE_FINALRETRACT ; - #endif + #ifdef SNMM + + #else + #ifdef FILAMENTCHANGE_FINALRETRACT + target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT; + #endif + #endif // SNMM } - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); + +#ifdef SNMM + target[E_AXIS] += 12; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder); + target[E_AXIS] += 6; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + target[E_AXIS] += (FIL_LOAD_LENGTH * -1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + st_synchronize(); + target[E_AXIS] += (FIL_COOLING); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (FIL_COOLING*-1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (bowden_length[snmm_extruder] *-1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + st_synchronize(); + +#else + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); +#endif // SNMM + //finish moves st_synchronize(); @@ -5127,10 +5137,19 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp uint8_t cnt=0; int counterBeep = 0; lcd_wait_interact(); + load_filament_time = millis(); while(!lcd_clicked()){ - cnt++; + + cnt++; manage_heater(); manage_inactivity(true); + +/*#ifdef SNMM + target[E_AXIS] += 0.002; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder); + +#endif // SNMM*/ + if(cnt==0) { #if BEEPER > 0 @@ -5140,7 +5159,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp SET_OUTPUT(BEEPER); if (counterBeep== 0){ WRITE(BEEPER,HIGH); - } + } if (counterBeep== 20){ WRITE(BEEPER,LOW); } @@ -5153,21 +5172,48 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp #endif #endif } + } +#ifdef SNMM + display_loading(); + do { + target[E_AXIS] += 0.002; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder); + delay_keep_alive(2); + } while (!lcd_clicked()); + /*if (millis() - load_filament_time > 2) { + load_filament_time = millis(); + target[E_AXIS] += 0.001; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1000, active_extruder); + }*/ +#endif //Filament inserted WRITE(BEEPER,LOW); - - //Feed the filament to the end of nozzle quickly - target[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ; - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EFEED, active_extruder); + + //Feed the filament to the end of nozzle quickly +#ifdef SNMM + + st_synchronize(); + target[E_AXIS] += bowden_length[snmm_extruder]; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + target[E_AXIS] += FIL_LOAD_LENGTH - 60; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1400, active_extruder); + target[E_AXIS] += 40; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 400, active_extruder); + target[E_AXIS] += 10; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); +#else + target[E_AXIS] += FILAMENTCHANGE_FIRSTFEED; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EFEED, active_extruder); +#endif // SNMM //Extrude some filament target[E_AXIS]+= FILAMENTCHANGE_FINALFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder); - + //Wait for user to check the state lcd_change_fil_state = 0; @@ -5179,13 +5225,33 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp // Filament failed to load so load it again case 2: +#ifdef SNMM + display_loading(); + do { + target[E_AXIS] += 0.002; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder); + delay_keep_alive(2); + } while (!lcd_clicked()); + + st_synchronize(); + target[E_AXIS] += bowden_length[snmm_extruder]; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + target[E_AXIS] += FIL_LOAD_LENGTH - 60; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1400, active_extruder); + target[E_AXIS] += 40; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 400, active_extruder); + target[E_AXIS] += 10; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + +#else target[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EFEED, active_extruder); - +#endif target[E_AXIS]+= FILAMENTCHANGE_FINALFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder); lcd_loading_filament(); + break; // Filament loaded properly but color is not clear @@ -5198,6 +5264,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp // Everything good default: lcd_change_success(); + lcd_update_enable(true); break; } @@ -5238,7 +5305,10 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp char cmd[9]; sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); enquecommand(cmd); - + + lcd_setstatuspgm(WELCOME_MSG); + custom_message = false; + custom_message_type = 0; } break; @@ -5352,6 +5422,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp break; case 702: { +#ifdef SNMM + extr_unload_all(); +#else custom_message = true; custom_message_type = 2; lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); @@ -5363,7 +5436,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp lcd_setstatuspgm(WELCOME_MSG); custom_message = false; custom_message_type = 0; - +#endif } break; @@ -5389,6 +5462,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp else { tmp_extruder = code_value(); #ifdef SNMM + snmm_extruder = tmp_extruder; st_synchronize(); delay(100); @@ -6327,7 +6401,9 @@ void temp_compensation_start() { custom_message_type = 5; custom_message_state = PINDA_HEAT_T + 1; lcd_update(2); - if (degHotend(active_extruder)>EXTRUDE_MINTEMP) current_position[E_AXIS] -= DEFAULT_RETRACTION; + if (degHotend(active_extruder) > EXTRUDE_MINTEMP) { + current_position[E_AXIS] -= DEFAULT_RETRACTION; + } plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder); current_position[X_AXIS] = PINDA_PREHEAT_X; @@ -6455,7 +6531,7 @@ void long_pause() //long pause print pause_lastpos[E_AXIS] = current_position[E_AXIS]; //retract - current_position[E_AXIS] -= PAUSE_RETRACT; + current_position[E_AXIS] -= DEFAULT_RETRACTION; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder); //lift z @@ -6477,4 +6553,15 @@ void long_pause() //long pause print fanSpeed = 0; st_synchronize(); +} + +void serialecho_temperatures() { + float tt = degHotend(active_extruder); + SERIAL_PROTOCOLPGM("T:"); + SERIAL_PROTOCOL(tt); + SERIAL_PROTOCOLPGM(" E:"); + SERIAL_PROTOCOL((int)active_extruder); + SERIAL_PROTOCOLPGM(" B:"); + SERIAL_PROTOCOL_F(degBed(), 1); + SERIAL_PROTOCOLLN(""); } \ No newline at end of file diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 2ab648e0f..80e82436c 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -16,7 +16,7 @@ const char MSG_ADJUSTZ_IT[] PROGMEM = "Autoregolare Z?"; const char MSG_ADJUSTZ_ES[] PROGMEM = "Ajustar Eje Z"; const char MSG_ADJUSTZ_PL[] PROGMEM = "Autodostroic Z?"; const char MSG_ADJUSTZ_DE[] PROGMEM = "Auto Z einstellen?"; -const char MSG_ADJUSTZ_NL[] PROGMEM = "Auto instellen Z ?"; +const char MSG_ADJUSTZ_NL[] PROGMEM = "Auto instellen Z?"; const char * const MSG_ADJUSTZ_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_ADJUSTZ_EN, MSG_ADJUSTZ_CZ, @@ -131,12 +131,12 @@ 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_EN[] PROGMEM = "Front side[um]"; const char MSG_BED_CORRECTION_FRONT_CZ[] PROGMEM = "Vpredu [um]"; -const char MSG_BED_CORRECTION_FRONT_IT[] PROGMEM = "Lato ateriore"; +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 MSG_BED_CORRECTION_FRONT_DE[] PROGMEM = "Vorne [um]"; const char MSG_BED_CORRECTION_FRONT_NL[] PROGMEM = "Vooruit[um]"; const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_FRONT_EN, @@ -148,12 +148,12 @@ const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_FRONT_NL }; -const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side um"; +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 = "Lato sinistro"; +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 MSG_BED_CORRECTION_LEFT_DE[] PROGMEM = "Links [um]"; const char MSG_BED_CORRECTION_LEFT_NL[] PROGMEM = "Links [um]"; const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_LEFT_EN, @@ -182,12 +182,12 @@ const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_MENU_NL }; -const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side um"; +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 = "Lato posteriore"; +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 MSG_BED_CORRECTION_REAR_DE[] PROGMEM = "Hinten [um]"; const char MSG_BED_CORRECTION_REAR_NL[] PROGMEM = "Achter [um]"; const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_REAR_EN, @@ -200,16 +200,23 @@ const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset"; -const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[1] PROGMEM = { +const char MSG_BED_CORRECTION_RESET_DE[] PROGMEM = "Zuruecksetzen"; +const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_EN, + MSG_BED_CORRECTION_RESET_DE, MSG_BED_CORRECTION_RESET_EN }; -const char MSG_BED_CORRECTION_RIGHT_EN[] PROGMEM = "Right side um"; +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 = "Lato destro"; +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 MSG_BED_CORRECTION_RIGHT_DE[] PROGMEM = "Rechts [um]"; const char MSG_BED_CORRECTION_RIGHT_NL[] PROGMEM = "Rechts [um]"; const char * const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_CORRECTION_RIGHT_EN, @@ -379,7 +386,7 @@ const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_CZ[] PROGMEM = "Kalibrace XYZ v const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_IT[] PROGMEM = "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"; const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_ES[] PROGMEM = "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"; const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_PL[] PROGMEM = "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"; -const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind im Lot. Glueckwunsch!"; +const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_DE[] PROGMEM = "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"; const char MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_NL[] PROGMEM = "XYZ kalibratie ok. X/Y-assen staan perpendiculair. Gefeliciteerd!"; const char * const MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_SKEW_OFFSET_DETECTION_PERFECT_EN, @@ -447,7 +454,7 @@ const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_CZ[] PROGMEM = " const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delanteros no alcanzables."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_PL[] PROGMEM = "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung kompromittiert. Vordere Kalibrierpunkte nicht erreichbar."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_NL[] PROGMEM = "XYZ kalibratie gecompromitteerd. Voorzijde kalibratiepunten niet bereikbaar."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR_EN, @@ -464,7 +471,7 @@ const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_CZ[] PROGMEM = " const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero izquierdo no alcanzable."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung kompromittiert. Linker vorderer Kalibrierpunkt nicht erreichbar."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_NL[] PROGMEM = "XYZ kalibratie gecompromitteerd. Linksvoor kalibratiepunt niet bereikbaar."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR_EN, @@ -481,7 +488,7 @@ const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_CZ[] PROGMEM = const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_IT[] PROGMEM = "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_ES[] PROGMEM = "Calibrazion XYZ comprometida. Punto delantero derecho no alcanzable."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_PL[] PROGMEM = "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."; -const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung kompromittiert. Rechter vorderer Kalibrierpunkt nicht erreichbar."; +const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_DE[] PROGMEM = "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar."; const char MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_NL[] PROGMEM = "XYZ kalibratie gecompromitteerd. Rechtsvoor kalibratiepunt niet bereikbaar."; const char * const MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR_EN, @@ -642,7 +649,7 @@ const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam."; const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando filamento"; const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; -const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Wechsel filament!"; +const char MSG_CHANGING_FILAMENT_DE[] PROGMEM = "Filament-Wechsel!"; const char MSG_CHANGING_FILAMENT_NL[] PROGMEM = "Wissel filament!"; const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CHANGING_FILAMENT_EN, @@ -720,7 +727,7 @@ const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_CZ[] PROGMEM = "Filamenty jsou srovn const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_IT[] PROGMEM = "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."; const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_ES[] PROGMEM = "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."; const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_PL[] PROGMEM = "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."; -const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filaments sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig."; +const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_DE[] PROGMEM = "Filamente sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig."; const char MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_NL[] PROGMEM = "Filamenten zijn nu ingesteld. Reinig het tuit voor de kalibratie. Klik als klaar."; const char * const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_EN, @@ -899,7 +906,7 @@ const char MSG_E_CAL_KNOB_CZ[] PROGMEM = "Otacejte tlacitkem dokud znacka nedosa const char MSG_E_CAL_KNOB_IT[] PROGMEM = "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."; const char MSG_E_CAL_KNOB_ES[] PROGMEM = "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."; const char MSG_E_CAL_KNOB_PL[] PROGMEM = "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Dreh den Knopf bis das Extruder Zeichen erreicht ist. Klicken wenn fertig."; +const char MSG_E_CAL_KNOB_DE[] PROGMEM = "Knopf drehen bis die Filamentmarkierung erreicht ist. Klicken wenn fertig."; const char MSG_E_CAL_KNOB_NL[] PROGMEM = "Draai knop tot mark extruder bereikt is. Klik als klaar."; const char * const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_E_CAL_KNOB_EN, @@ -926,7 +933,7 @@ const char MSG_FAN_SPEED_CZ[] PROGMEM = "Rychlost vent."; const char MSG_FAN_SPEED_IT[] PROGMEM = "Velocita vent."; const char MSG_FAN_SPEED_ES[] PROGMEM = "Velocidad Vent."; const char MSG_FAN_SPEED_PL[] PROGMEM = "Predkosc went."; -const char MSG_FAN_SPEED_DE[] PROGMEM = "Lueftergeschw."; +const char MSG_FAN_SPEED_DE[] PROGMEM = "Luefter-Tempo"; const char MSG_FAN_SPEED_NL[] PROGMEM = "Fan snelheid"; const char * const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FAN_SPEED_EN, @@ -948,7 +955,7 @@ const char MSG_FILAMENTCHANGE_CZ[] PROGMEM = "Vymenit filament"; const char MSG_FILAMENTCHANGE_IT[] PROGMEM = "Camb. filamento"; const char MSG_FILAMENTCHANGE_ES[] PROGMEM = "Cambiar filamento"; const char MSG_FILAMENTCHANGE_PL[] PROGMEM = "Wymienic filament"; -const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament wechseln"; +const char MSG_FILAMENTCHANGE_DE[] PROGMEM = "Filament-Wechsel"; const char MSG_FILAMENTCHANGE_NL[] PROGMEM = "Wissel filament"; const char * const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FILAMENTCHANGE_EN, @@ -965,7 +972,7 @@ const char MSG_FILAMENT_CLEAN_CZ[] PROGMEM = "Je barva cista?"; const char MSG_FILAMENT_CLEAN_IT[] PROGMEM = "Il colore e' nitido?"; const char MSG_FILAMENT_CLEAN_ES[] PROGMEM = "Es el nuevo color nitido?"; const char MSG_FILAMENT_CLEAN_PL[] PROGMEM = "Czy kolor jest czysty?"; -const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe klar?"; +const char MSG_FILAMENT_CLEAN_DE[] PROGMEM = "Ist Farbe rein?"; const char MSG_FILAMENT_CLEAN_NL[] PROGMEM = "Is kleur zuiver?"; const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FILAMENT_CLEAN_EN, @@ -978,7 +985,7 @@ const char * const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_FILAMENT_LOADING_T0_EN[] PROGMEM = "Insert filament into extruder 1. Click when done."; -const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 1. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T0_CZ[] PROGMEM = "Vlozte filament do extruderu 1. Potvrdte tlacitkem."; const char MSG_FILAMENT_LOADING_T0_IT[] PROGMEM = "Inserire filamento nell'estrusore 1. Click per continuare."; const char MSG_FILAMENT_LOADING_T0_ES[] PROGMEM = "Insertar filamento en el extrusor 1. Haga clic una vez terminado."; const char MSG_FILAMENT_LOADING_T0_PL[] PROGMEM = "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."; @@ -995,7 +1002,7 @@ const char * const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_FILAMENT_LOADING_T1_EN[] PROGMEM = "Insert filament into extruder 2. Click when done."; -const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 2. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T1_CZ[] PROGMEM = "Vlozte filament do extruderu 2. Potvrdte tlacitkem."; const char MSG_FILAMENT_LOADING_T1_IT[] PROGMEM = "Inserire filamento nell'estrusore 2. Click per continuare."; const char MSG_FILAMENT_LOADING_T1_ES[] PROGMEM = "Insertar filamento en el extrusor 2. Haga clic una vez terminado."; const char MSG_FILAMENT_LOADING_T1_PL[] PROGMEM = "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."; @@ -1012,7 +1019,7 @@ const char * const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_FILAMENT_LOADING_T2_EN[] PROGMEM = "Insert filament into extruder 3. Click when done."; -const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 3. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T2_CZ[] PROGMEM = "Vlozte filament do extruderu 3. Potvrdte tlacitkem."; const char MSG_FILAMENT_LOADING_T2_IT[] PROGMEM = "Inserire filamento nell'estrusore 3. Click per continuare."; const char MSG_FILAMENT_LOADING_T2_ES[] PROGMEM = "Insertar filamento en el extrusor 3. Haga clic una vez terminado."; const char MSG_FILAMENT_LOADING_T2_PL[] PROGMEM = "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."; @@ -1029,7 +1036,7 @@ const char * const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM] PROGMEM = { }; const char MSG_FILAMENT_LOADING_T3_EN[] PROGMEM = "Insert filament into extruder 4. Click when done."; -const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlo\x9Ete filament do extruderu 4. Potvrdte tlacitkem."; +const char MSG_FILAMENT_LOADING_T3_CZ[] PROGMEM = "Vlozte filament do extruderu 4. Potvrdte tlacitkem."; const char MSG_FILAMENT_LOADING_T3_IT[] PROGMEM = "Inserire filamento nell'estrusore 4. Click per continuare."; const char MSG_FILAMENT_LOADING_T3_ES[] PROGMEM = "Insertar filamento en el extrusor 4. Haga clic una vez terminado."; const char MSG_FILAMENT_LOADING_T3_PL[] PROGMEM = "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."; @@ -1100,15 +1107,17 @@ const char * const MSG_FIL_TUNING_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; -const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Iteracion "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion "; +const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE[] PROGMEM = "Wiederholung "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_NL[] PROGMEM = "Herhaling "; const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, - MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, + MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_DE, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_NL }; @@ -1371,7 +1380,7 @@ const char * const MSG_INVALID_EXTRUDER_LANG_TABLE[1] PROGMEM = { const char MSG_KILLED_EN[] PROGMEM = "KILLED. "; const char MSG_KILLED_IT[] PROGMEM = "IN TILT."; const char MSG_KILLED_ES[] PROGMEM = "PARADA DE EMERGENCIA"; -const char MSG_KILLED_DE[] PROGMEM = "NOTSTOPP/KILLED. "; +const char MSG_KILLED_DE[] PROGMEM = "ABGEBROCHEN. "; const char MSG_KILLED_NL[] PROGMEM = "NOODSTOP/KILLED. "; const char * const MSG_KILLED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_KILLED_EN, @@ -1439,7 +1448,7 @@ const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam."; const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Introduciendo filam."; const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; -const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Lade filament"; +const char MSG_LOADING_FILAMENT_DE[] PROGMEM = "Filament laedt"; const char MSG_LOADING_FILAMENT_NL[] PROGMEM = "Laade Filament"; const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_LOADING_FILAMENT_EN, @@ -1451,6 +1460,23 @@ const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_LOADING_FILAMENT_NL }; +const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all"; +const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse"; +const char MSG_LOAD_ALL_IT[] PROGMEM = "Caricare tutti"; +const char MSG_LOAD_ALL_ES[] PROGMEM = "Intr. todos fil."; +const char MSG_LOAD_ALL_PL[] PROGMEM = "Zalad. wszystkie"; +const char MSG_LOAD_ALL_DE[] PROGMEM = "Lade alle"; +const char MSG_LOAD_ALL_NL[] PROGMEM = "Laad alle"; +const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_ALL_EN, + MSG_LOAD_ALL_CZ, + MSG_LOAD_ALL_IT, + MSG_LOAD_ALL_ES, + MSG_LOAD_ALL_PL, + MSG_LOAD_ALL_DE, + MSG_LOAD_ALL_NL +}; + const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { MSG_LOAD_EPROM_EN @@ -1461,7 +1487,7 @@ const char MSG_LOAD_FILAMENT_CZ[] PROGMEM = "Zavest filament"; const char MSG_LOAD_FILAMENT_IT[] PROGMEM = "Carica filamento"; const char MSG_LOAD_FILAMENT_ES[] PROGMEM = "Introducir filam."; const char MSG_LOAD_FILAMENT_PL[] PROGMEM = "Wprowadz filament"; -const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Lade Filament"; +const char MSG_LOAD_FILAMENT_DE[] PROGMEM = "Filament laden"; const char MSG_LOAD_FILAMENT_NL[] PROGMEM = "Laad Filament"; const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_LOAD_FILAMENT_EN, @@ -1473,6 +1499,74 @@ const char * const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_LOAD_FILAMENT_NL }; +const char MSG_LOAD_FILAMENT_1_EN[] PROGMEM = "Load filament 1"; +const char MSG_LOAD_FILAMENT_1_CZ[] PROGMEM = "Zavest filament 1"; +const char MSG_LOAD_FILAMENT_1_IT[] PROGMEM = "Caricare fil. 1"; +const char MSG_LOAD_FILAMENT_1_ES[] PROGMEM = "Introducir fil. 1"; +const char MSG_LOAD_FILAMENT_1_PL[] PROGMEM = "Zaladowac fil. 1"; +const char MSG_LOAD_FILAMENT_1_DE[] PROGMEM = "Lade filament 1"; +const char MSG_LOAD_FILAMENT_1_NL[] PROGMEM = "Laad filament 1"; +const char * const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_1_EN, + MSG_LOAD_FILAMENT_1_CZ, + MSG_LOAD_FILAMENT_1_IT, + MSG_LOAD_FILAMENT_1_ES, + MSG_LOAD_FILAMENT_1_PL, + MSG_LOAD_FILAMENT_1_DE, + MSG_LOAD_FILAMENT_1_NL +}; + +const char MSG_LOAD_FILAMENT_2_EN[] PROGMEM = "Load filament 2"; +const char MSG_LOAD_FILAMENT_2_CZ[] PROGMEM = "Zavest filament 2"; +const char MSG_LOAD_FILAMENT_2_IT[] PROGMEM = "Caricare fil. 2"; +const char MSG_LOAD_FILAMENT_2_ES[] PROGMEM = "Introducir fil. 2"; +const char MSG_LOAD_FILAMENT_2_PL[] PROGMEM = "Zaladowac fil. 2"; +const char MSG_LOAD_FILAMENT_2_DE[] PROGMEM = "Lade filament 2"; +const char MSG_LOAD_FILAMENT_2_NL[] PROGMEM = "Laad filament 2"; +const char * const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_2_EN, + MSG_LOAD_FILAMENT_2_CZ, + MSG_LOAD_FILAMENT_2_IT, + MSG_LOAD_FILAMENT_2_ES, + MSG_LOAD_FILAMENT_2_PL, + MSG_LOAD_FILAMENT_2_DE, + MSG_LOAD_FILAMENT_2_NL +}; + +const char MSG_LOAD_FILAMENT_3_EN[] PROGMEM = "Load filament 3"; +const char MSG_LOAD_FILAMENT_3_CZ[] PROGMEM = "Zavest filament 3"; +const char MSG_LOAD_FILAMENT_3_IT[] PROGMEM = "Caricare fil. 3"; +const char MSG_LOAD_FILAMENT_3_ES[] PROGMEM = "Introducir fil. 3"; +const char MSG_LOAD_FILAMENT_3_PL[] PROGMEM = "Zaladowac fil. 3"; +const char MSG_LOAD_FILAMENT_3_DE[] PROGMEM = "Lade filament 3"; +const char MSG_LOAD_FILAMENT_3_NL[] PROGMEM = "Laad filament 3"; +const char * const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_3_EN, + MSG_LOAD_FILAMENT_3_CZ, + MSG_LOAD_FILAMENT_3_IT, + MSG_LOAD_FILAMENT_3_ES, + MSG_LOAD_FILAMENT_3_PL, + MSG_LOAD_FILAMENT_3_DE, + MSG_LOAD_FILAMENT_3_NL +}; + +const char MSG_LOAD_FILAMENT_4_EN[] PROGMEM = "Load filament 4"; +const char MSG_LOAD_FILAMENT_4_CZ[] PROGMEM = "Zavest filament 4"; +const char MSG_LOAD_FILAMENT_4_IT[] PROGMEM = "Caricare fil. 4"; +const char MSG_LOAD_FILAMENT_4_ES[] PROGMEM = "Introducir fil. 4"; +const char MSG_LOAD_FILAMENT_4_PL[] PROGMEM = "Zaladowac fil. 4"; +const char MSG_LOAD_FILAMENT_4_DE[] PROGMEM = "Lade filament 4"; +const char MSG_LOAD_FILAMENT_4_NL[] PROGMEM = "Laad filament 4"; +const char * const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_LOAD_FILAMENT_4_EN, + MSG_LOAD_FILAMENT_4_CZ, + MSG_LOAD_FILAMENT_4_IT, + MSG_LOAD_FILAMENT_4_ES, + MSG_LOAD_FILAMENT_4_PL, + MSG_LOAD_FILAMENT_4_DE, + MSG_LOAD_FILAMENT_4_NL +}; + const char MSG_LOOSE_PULLEY_EN[] PROGMEM = "Loose pulley"; const char MSG_LOOSE_PULLEY_CZ[] PROGMEM = "Uvolnena remenicka"; const char MSG_LOOSE_PULLEY_IT[] PROGMEM = "Puleggia lenta"; @@ -1551,7 +1645,7 @@ const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruder const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; -const char MSG_MARK_FIL_DE[] PROGMEM = "Markier Filament 100mm vom Extrudergehaeuse. Klicken wenn Fertig."; +const char MSG_MARK_FIL_DE[] PROGMEM = "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."; const char MSG_MARK_FIL_NL[] PROGMEM = "Mark filament 100mm van extruder body. Klik als klaar."; const char * const MSG_MARK_FIL_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_MARK_FIL_EN, @@ -1678,7 +1772,7 @@ const char MSG_MOVE_CARRIAGE_TO_THE_TOP_CZ[] PROGMEM = "Kalibrace XYZ. Otacenim const char MSG_MOVE_CARRIAGE_TO_THE_TOP_IT[] PROGMEM = "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_ES[] PROGMEM = "Calibrando XYZ. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_PL[] PROGMEM = "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf, um die Z-Schlitten bis zum Anschlag zu bewegen. Klicken wenn fertig."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_DE[] PROGMEM = "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_NL[] PROGMEM = "Kalibreren van XYZ. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Klik als klaar."; const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_MOVE_CARRIAGE_TO_THE_TOP_EN, @@ -1695,7 +1789,7 @@ const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_CZ[] PROGMEM = "Kalibrace Z. Otacenim const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_IT[] PROGMEM = "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_ES[] PROGMEM = "Calibrando Z. Gira el boton para subir el carro Z hasta golpe piezas superioras. Despues haz clic."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_PL[] PROGMEM = "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."; -const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf, um die Z-Schlitten bis zum Anschlag zu bewegen. Klicken wenn fertig."; +const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_DE[] PROGMEM = "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."; const char MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_NL[] PROGMEM = "Kalibreren van XYZ. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Klik als klaar."; const char * const MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_MOVE_CARRIAGE_TO_THE_TOP_Z_EN, @@ -2033,7 +2127,7 @@ const char * const MSG_PID_EXTRUDER_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PID_EXTRUDER_NL }; -const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. done "; +const char MSG_PID_FINISHED_EN[] PROGMEM = "PID cal. finished"; const char MSG_PID_FINISHED_CZ[] PROGMEM = "PID kal. ukoncena"; const char MSG_PID_FINISHED_IT[] PROGMEM = "Cal. PID completa"; const char MSG_PID_FINISHED_ES[] PROGMEM = "Cal. PID terminada"; @@ -2050,7 +2144,7 @@ const char * const MSG_PID_FINISHED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PID_FINISHED_NL }; -const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; +const char MSG_PID_RUNNING_EN[] PROGMEM = "PID cal. "; const char MSG_PID_RUNNING_CZ[] PROGMEM = "PID kal. "; const char MSG_PID_RUNNING_IT[] PROGMEM = "Cal. PID"; const char MSG_PID_RUNNING_ES[] PROGMEM = "Cal. PID "; @@ -2167,6 +2261,23 @@ const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PREHEAT_NOZZLE_NL }; +const char MSG_PREPARE_FILAMENT_EN[] PROGMEM = "Prepare new filament"; +const char MSG_PREPARE_FILAMENT_CZ[] PROGMEM = "Pripravte filament"; +const char MSG_PREPARE_FILAMENT_IT[] PROGMEM = "Preparare filamento"; +const char MSG_PREPARE_FILAMENT_ES[] PROGMEM = "Preparar filamento"; +const char MSG_PREPARE_FILAMENT_PL[] PROGMEM = "Przygotuj filament"; +const char MSG_PREPARE_FILAMENT_DE[] PROGMEM = "Filament vorbereiten"; +const char MSG_PREPARE_FILAMENT_NL[] PROGMEM = "Filament voorbereden"; +const char * const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PREPARE_FILAMENT_EN, + MSG_PREPARE_FILAMENT_CZ, + MSG_PREPARE_FILAMENT_IT, + MSG_PREPARE_FILAMENT_ES, + MSG_PREPARE_FILAMENT_PL, + MSG_PREPARE_FILAMENT_DE, + MSG_PREPARE_FILAMENT_NL +}; + const char MSG_PRESS_EN[] PROGMEM = "and press the knob"; const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko"; const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola"; @@ -2540,7 +2651,7 @@ const char MSG_SELFTEST_CHECK_ENDSTOPS_CZ[] PROGMEM = "Kontrola endstops"; const char MSG_SELFTEST_CHECK_ENDSTOPS_IT[] PROGMEM = "Verifica finecorsa"; const char MSG_SELFTEST_CHECK_ENDSTOPS_ES[] PROGMEM = "Cont. topes final"; const char MSG_SELFTEST_CHECK_ENDSTOPS_PL[] PROGMEM = "Kontrola endstops"; -const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe endstops "; +const char MSG_SELFTEST_CHECK_ENDSTOPS_DE[] PROGMEM = "Pruefe Endschalter "; const char MSG_SELFTEST_CHECK_ENDSTOPS_NL[] PROGMEM = "Controleer endstops"; const char * const MSG_SELFTEST_CHECK_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SELFTEST_CHECK_ENDSTOPS_EN, @@ -2653,20 +2764,21 @@ const char * const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_SELFTEST_ENDSTOPS_EN[] PROGMEM = "Endstops"; const char MSG_SELFTEST_ENDSTOPS_IT[] PROGMEM = "Finecorsa (2)"; const char MSG_SELFTEST_ENDSTOPS_ES[] PROGMEM = "Topes final"; +const char MSG_SELFTEST_ENDSTOPS_DE[] PROGMEM = "Endschalter"; const char * const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SELFTEST_ENDSTOPS_EN, MSG_SELFTEST_ENDSTOPS_EN, MSG_SELFTEST_ENDSTOPS_IT, MSG_SELFTEST_ENDSTOPS_ES, MSG_SELFTEST_ENDSTOPS_EN, - MSG_SELFTEST_ENDSTOPS_EN, + MSG_SELFTEST_ENDSTOPS_DE, MSG_SELFTEST_ENDSTOPS_EN }; const char MSG_SELFTEST_ENDSTOP_NOTHIT_EN[] PROGMEM = "Endstop not hit"; const char MSG_SELFTEST_ENDSTOP_NOTHIT_IT[] PROGMEM = "Finec. fuori por."; const char MSG_SELFTEST_ENDSTOP_NOTHIT_ES[] PROGMEM = "Tope fin. no toc."; -const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Endstopp n. erreicht"; +const char MSG_SELFTEST_ENDSTOP_NOTHIT_DE[] PROGMEM = "Endsch. n. erreicht"; const char MSG_SELFTEST_ENDSTOP_NOTHIT_NL[] PROGMEM = "Endstop niet geraakt"; const char * const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SELFTEST_ENDSTOP_NOTHIT_EN, @@ -2698,7 +2810,7 @@ const char MSG_SELFTEST_EXTRUDER_FAN_CZ[] PROGMEM = "Levy vent na trysce?";; const char MSG_SELFTEST_EXTRUDER_FAN_IT[] PROGMEM = "Vent SX sull'ugello?";; const char MSG_SELFTEST_EXTRUDER_FAN_ES[] PROGMEM = "Vent. en la izg?";; const char MSG_SELFTEST_EXTRUDER_FAN_PL[] PROGMEM = "Lewy went na dysze?";; -const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Hotend-Fan?";; +const char MSG_SELFTEST_EXTRUDER_FAN_DE[] PROGMEM = "Linker Luefter?";; const char MSG_SELFTEST_EXTRUDER_FAN_NL[] PROGMEM = "Linke Hotend fan?";; const char * const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SELFTEST_EXTRUDER_FAN_EN, @@ -2937,7 +3049,7 @@ const char MSG_SHOW_END_STOPS_CZ[] PROGMEM = "Stav konc. spin."; const char MSG_SHOW_END_STOPS_IT[] PROGMEM = "Stato finecorsa"; const char MSG_SHOW_END_STOPS_ES[] PROGMEM = "Ensena tope final"; const char MSG_SHOW_END_STOPS_PL[] PROGMEM = "Pokaz krancowki"; -const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Anzeigen endstops"; +const char MSG_SHOW_END_STOPS_DE[] PROGMEM = "Anzeigen Enschalter"; const char MSG_SHOW_END_STOPS_NL[] PROGMEM = "Toon endstops"; const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_SHOW_END_STOPS_EN, @@ -3063,7 +3175,7 @@ const char MSG_STATS_TOTALFILAMENT_CZ[] PROGMEM = "Filament celkem :"; const char MSG_STATS_TOTALFILAMENT_IT[] PROGMEM = "Filamento tot:"; const char MSG_STATS_TOTALFILAMENT_ES[] PROGMEM = "Filamento total:"; const char MSG_STATS_TOTALFILAMENT_PL[] PROGMEM = "Filament lacznie :"; -const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Filament Total:"; +const char MSG_STATS_TOTALFILAMENT_DE[] PROGMEM = "Filament Gesamt:"; const char MSG_STATS_TOTALFILAMENT_NL[] PROGMEM = "Filament total: "; const char * const MSG_STATS_TOTALFILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_STATS_TOTALFILAMENT_EN, @@ -3282,25 +3394,27 @@ const char * const MSG_TEMP_CALIBRATION_ON_LANG_TABLE[LANG_NUM] PROGMEM = { const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN[] PROGMEM = "SD card [normal]"; const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL[] PROGMEM = "karta SD [normal]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE[] PROGMEM = "SD Karte [normal]"; const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_DE, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF_EN }; const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN[] PROGMEM = "SD card [FlshAir]"; const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL[] PROGMEM = "karta SD[FlshAir]"; +const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE[] PROGMEM = "SD Karte [FlshAir]"; const char * const MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_PL, - MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN, + MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_DE, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON_EN }; @@ -3309,7 +3423,7 @@ const char MSG_TUNE_CZ[] PROGMEM = "Ladit"; const char MSG_TUNE_IT[] PROGMEM = "Regola"; const char MSG_TUNE_ES[] PROGMEM = "Ajustar"; const char MSG_TUNE_PL[] PROGMEM = "Nastroic"; -const char MSG_TUNE_DE[] PROGMEM = "Justierung"; +const char MSG_TUNE_DE[] PROGMEM = "Feineinstellung"; const char MSG_TUNE_NL[] PROGMEM = "Aanpassen"; const char * const MSG_TUNE_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_TUNE_EN, @@ -3343,6 +3457,23 @@ const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_UNLOADING_FILAMENT_NL }; +const char MSG_UNLOAD_ALL_EN[] PROGMEM = "Unload all"; +const char MSG_UNLOAD_ALL_CZ[] PROGMEM = "Vyjmout vse"; +const char MSG_UNLOAD_ALL_IT[] PROGMEM = "Rilasciare tutti"; +const char MSG_UNLOAD_ALL_ES[] PROGMEM = "Soltar todos fil."; +const char MSG_UNLOAD_ALL_PL[] PROGMEM = "Wyjac wszystkie"; +const char MSG_UNLOAD_ALL_DE[] PROGMEM = "Entnehme alle"; +const char MSG_UNLOAD_ALL_NL[] PROGMEM = "Haal alle uit"; +const char * const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_ALL_EN, + MSG_UNLOAD_ALL_CZ, + MSG_UNLOAD_ALL_IT, + MSG_UNLOAD_ALL_ES, + MSG_UNLOAD_ALL_PL, + MSG_UNLOAD_ALL_DE, + MSG_UNLOAD_ALL_NL +}; + const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; @@ -3360,6 +3491,74 @@ const char * const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_UNLOAD_FILAMENT_NL }; +const char MSG_UNLOAD_FILAMENT_1_EN[] PROGMEM = "Unload filament 1"; +const char MSG_UNLOAD_FILAMENT_1_CZ[] PROGMEM = "Vyjmout filam. 1"; +const char MSG_UNLOAD_FILAMENT_1_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_ES[] PROGMEM = "Soltar fil. 1"; +const char MSG_UNLOAD_FILAMENT_1_PL[] PROGMEM = "Wyjac filament 1"; +const char MSG_UNLOAD_FILAMENT_1_DE[] PROGMEM = "Entnehme filament 1"; +const char MSG_UNLOAD_FILAMENT_1_NL[] PROGMEM = "Haal filament 1 uit"; +const char * const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_1_EN, + MSG_UNLOAD_FILAMENT_1_CZ, + MSG_UNLOAD_FILAMENT_1_IT, + MSG_UNLOAD_FILAMENT_1_ES, + MSG_UNLOAD_FILAMENT_1_PL, + MSG_UNLOAD_FILAMENT_1_DE, + MSG_UNLOAD_FILAMENT_1_NL +}; + +const char MSG_UNLOAD_FILAMENT_2_EN[] PROGMEM = "Unload filament 2"; +const char MSG_UNLOAD_FILAMENT_2_CZ[] PROGMEM = "Vyjmout filam. 2"; +const char MSG_UNLOAD_FILAMENT_2_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_2_ES[] PROGMEM = "Soltar fil. 2"; +const char MSG_UNLOAD_FILAMENT_2_PL[] PROGMEM = "Wyjac filament 2"; +const char MSG_UNLOAD_FILAMENT_2_DE[] PROGMEM = "Entnehme filament 2"; +const char MSG_UNLOAD_FILAMENT_2_NL[] PROGMEM = "Haal filament 2 uit"; +const char * const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_2_EN, + MSG_UNLOAD_FILAMENT_2_CZ, + MSG_UNLOAD_FILAMENT_2_IT, + MSG_UNLOAD_FILAMENT_2_ES, + MSG_UNLOAD_FILAMENT_2_PL, + MSG_UNLOAD_FILAMENT_2_DE, + MSG_UNLOAD_FILAMENT_2_NL +}; + +const char MSG_UNLOAD_FILAMENT_3_EN[] PROGMEM = "Unload filament 3"; +const char MSG_UNLOAD_FILAMENT_3_CZ[] PROGMEM = "Vyjmout filam. 3"; +const char MSG_UNLOAD_FILAMENT_3_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_3_ES[] PROGMEM = "Soltar fil. 3"; +const char MSG_UNLOAD_FILAMENT_3_PL[] PROGMEM = "Wyjac filament 3"; +const char MSG_UNLOAD_FILAMENT_3_DE[] PROGMEM = "Entnehme filament 3"; +const char MSG_UNLOAD_FILAMENT_3_NL[] PROGMEM = "Haal filament 3 uit"; +const char * const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_3_EN, + MSG_UNLOAD_FILAMENT_3_CZ, + MSG_UNLOAD_FILAMENT_3_IT, + MSG_UNLOAD_FILAMENT_3_ES, + MSG_UNLOAD_FILAMENT_3_PL, + MSG_UNLOAD_FILAMENT_3_DE, + MSG_UNLOAD_FILAMENT_3_NL +}; + +const char MSG_UNLOAD_FILAMENT_4_EN[] PROGMEM = "Unload filament 4"; +const char MSG_UNLOAD_FILAMENT_4_CZ[] PROGMEM = "Vyjmout filam. 4"; +const char MSG_UNLOAD_FILAMENT_4_IT[] PROGMEM = "Rilasciare fil. 1"; +const char MSG_UNLOAD_FILAMENT_4_ES[] PROGMEM = "Soltar fil. 4"; +const char MSG_UNLOAD_FILAMENT_4_PL[] PROGMEM = "Wyjac filament 4"; +const char MSG_UNLOAD_FILAMENT_4_DE[] PROGMEM = "Entnehme filament 4"; +const char MSG_UNLOAD_FILAMENT_4_NL[] PROGMEM = "Haal filament 4 uit"; +const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_FILAMENT_4_EN, + MSG_UNLOAD_FILAMENT_4_CZ, + MSG_UNLOAD_FILAMENT_4_IT, + MSG_UNLOAD_FILAMENT_4_ES, + MSG_UNLOAD_FILAMENT_4_PL, + MSG_UNLOAD_FILAMENT_4_DE, + MSG_UNLOAD_FILAMENT_4_NL +}; + const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; const char MSG_USB_PRINTING_IT[] PROGMEM = "Stampa da USB"; diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 52066503f..c6c27b7c6 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -62,8 +62,8 @@ extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM]; #define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE) extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM]; #define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE) -extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[1]; -#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_RESET_LANG_TABLE, 0) +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]; @@ -260,10 +260,20 @@ extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM]; #define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE) extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; #define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_LOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_LOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_4_LANG_TABLE) extern const char* const MSG_LOOSE_PULLEY_LANG_TABLE[LANG_NUM]; #define MSG_LOOSE_PULLEY LANG_TABLE_SELECT(MSG_LOOSE_PULLEY_LANG_TABLE) extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1]; @@ -380,6 +390,8 @@ extern const char* const MSG_PREHEAT_LANG_TABLE[LANG_NUM]; #define MSG_PREHEAT LANG_TABLE_SELECT(MSG_PREHEAT_LANG_TABLE) extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM]; #define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) +extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; +#define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; #define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[LANG_NUM]; @@ -566,8 +578,18 @@ extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; #define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) extern const char* const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_UNLOADING_FILAMENT LANG_TABLE_SELECT(MSG_UNLOADING_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_ALL_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_ALL LANG_TABLE_SELECT(MSG_UNLOAD_ALL_LANG_TABLE) extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_1_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_1 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_1_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_2_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_2 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_2_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) +extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; #define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) extern const char* const MSG_USERWAIT_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index f92e6d6eb..896d3f1bb 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -73,7 +73,17 @@ #define MSG_SETTINGS "Nastaveni" #define MSG_PREHEAT "Predehrev" #define MSG_UNLOAD_FILAMENT "Vyjmout filament" -#define MSG_LOAD_FILAMENT "Zavest filament" +#define MSG_LOAD_FILAMENT "Zavest filament" +#define MSG_LOAD_FILAMENT_1 "Zavest filament 1" +#define MSG_LOAD_FILAMENT_2 "Zavest filament 2" +#define MSG_LOAD_FILAMENT_3 "Zavest filament 3" +#define MSG_LOAD_FILAMENT_4 "Zavest filament 4" +#define MSG_UNLOAD_FILAMENT_1 "Vyjmout filam. 1" +#define MSG_UNLOAD_FILAMENT_2 "Vyjmout filam. 2" +#define MSG_UNLOAD_FILAMENT_3 "Vyjmout filam. 3" +#define MSG_UNLOAD_FILAMENT_4 "Vyjmout filam. 4" +#define MSG_UNLOAD_ALL "Vyjmout vse" +#define MSG_LOAD_ALL "Zavest vse" #define MSG_RECTRACT "Rectract" #define MSG_ERROR "CHYBA:" @@ -248,10 +258,10 @@ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" #define MSG_LOOSE_PULLEY "Uvolnena remenicka" -#define MSG_FILAMENT_LOADING_T0 "Vložte filament do extruderu 1. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T1 "Vložte filament do extruderu 2. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T2 "Vložte filament do extruderu 3. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T3 "Vložte filament do extruderu 4. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T0 "Vlozte filament do extruderu 1. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T1 "Vlozte filament do extruderu 2. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T2 "Vlozte filament do extruderu 3. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T3 "Vlozte filament do extruderu 4. Potvrdte tlacitkem." #define MSG_CHANGE_EXTR "Zmenit extruder" #define MSG_FIL_ADJUSTING "Probiha srovnani filamentu. Prosim cekejte." @@ -281,4 +291,5 @@ #define MSG_TEMP_CALIBRATION "Tepl. kal. " #define MSG_TEMP_CALIBRATION_DONE "Teplotni kalibrace dokoncena. Pokracujte stiskem tlacitka." #define MSG_TEMP_CALIBRATION_ON "Tepl. kal. [ON]" -#define MSG_TEMP_CALIBRATION_OFF "Tepl. kal. [OFF]" \ No newline at end of file +#define MSG_TEMP_CALIBRATION_OFF "Tepl. kal. [OFF]" +#define MSG_PREPARE_FILAMENT "Pripravte filament" \ No newline at end of file diff --git a/Firmware/language_de.h b/Firmware/language_de.h index d03fa7c92..e1bcb29e5 100644 --- a/Firmware/language_de.h +++ b/Firmware/language_de.h @@ -27,7 +27,7 @@ #define MSG_NOZZLE1 "Duese2" #define MSG_NOZZLE2 "Duese3" #define MSG_BED "Bett" -#define(length=20) MSG_FAN_SPEED "Lueftergeschw." +#define(length=20) MSG_FAN_SPEED "Luefter-Tempo" #define MSG_FLOW "Durchfluss" #define MSG_FLOW0 "Durchfluss 0" #define MSG_FLOW1 "Durchfluss 1" @@ -45,7 +45,7 @@ #define MSG_RESTORE_FAILSAFE "Standardkonfiguration" #define MSG_REFRESH "Aktualisieren" #define MSG_WATCH "Information" -#define MSG_TUNE "Justierung" +#define MSG_TUNE "Feineinstellung" #define MSG_PAUSE_PRINT "Pause" #define MSG_RESUME_PRINT "Fortsetzen" #define MSG_STOP_PRINT "Druck abbrechen" @@ -56,9 +56,9 @@ #define(length=20) MSG_RESUMING "Druck fortgesetzt" #define(length=20) MSG_PRINT_ABORTED "Druck abgebrochen" #define MSG_NO_MOVE "Keine Bewegung." -#define(length=20) MSG_KILLED "NOTSTOPP/KILLED. " +#define(length=20) MSG_KILLED "ABGEBROCHEN. " #define MSG_STOPPED "GESTOPPT. " -#define MSG_FILAMENTCHANGE "Filament wechseln" +#define MSG_FILAMENTCHANGE "Filament-Wechsel" #define MSG_INIT_SDCARD "SD erkennen" #define MSG_CNG_SDCARD "SD-Karte wechsel" #define MSG_BABYSTEP_X "Babystep X" @@ -70,7 +70,17 @@ #define MSG_SETTINGS "Einstellungen" #define MSG_PREHEAT "Vorheizen" #define MSG_UNLOAD_FILAMENT "Entnehme Filament" -#define MSG_LOAD_FILAMENT "Lade Filament" +#define MSG_LOAD_FILAMENT "Filament laden" +#define(length=20) MSG_LOAD_FILAMENT_1 "Lade filament 1" +#define(length=20) MSG_LOAD_FILAMENT_2 "Lade filament 2" +#define(length=20) MSG_LOAD_FILAMENT_3 "Lade filament 3" +#define(length=20) MSG_LOAD_FILAMENT_4 "Lade filament 4" +#define(length=20) MSG_UNLOAD_FILAMENT_1 "Entnehme filament 1" +#define(length=20) MSG_UNLOAD_FILAMENT_2 "Entnehme filament 2" +#define(length=20) MSG_UNLOAD_FILAMENT_3 "Entnehme filament 3" +#define(length=20) MSG_UNLOAD_FILAMENT_4 "Entnehme filament 4" +#define MSG_UNLOAD_ALL "Entnehme alle" +#define MSG_LOAD_ALL "Lade alle" #define MSG_RECTRACT "Rectract" #define MSG_ERROR "FEHLER:" @@ -81,13 +91,13 @@ #define MSG_NO "Nein" #define(length=20) MSG_NOT_LOADED "Fil. nicht geladen" #define(length=20) MSG_NOT_COLOR "Farbe nicht klar." -#define(length=20) MSG_LOADING_FILAMENT "Lade filament" +#define(length=20) MSG_LOADING_FILAMENT "Filament laedt" #define(length=20) MSG_PLEASE_WAIT "Bitte warten" #define MSG_LOADING_COLOR "Lade Farbe" #define(length=20) MSG_CHANGE_SUCCESS "Wechsel erfolgreich!" #define(length=20) MSG_PRESS "und Knopf druecken" #define(length=20) MSG_INSERT_FILAMENT "Filament einlegen" -#define(length=20) MSG_CHANGING_FILAMENT "Wechsel filament!" +#define(length=20) MSG_CHANGING_FILAMENT "Filament-Wechsel!" #define MSG_SILENT_MODE_ON "Mode [leise]" @@ -160,25 +170,25 @@ #define MSG_SELFTEST_HEATERTHERMISTOR "Heater/Thermistor" #define MSG_SELFTEST_BEDHEATER "Bett / Heater" #define(length=20) MSG_SELFTEST_WIRINGERROR "Verdrahtungsfehler" -#define MSG_SELFTEST_ENDSTOPS "Endstops" +#define MSG_SELFTEST_ENDSTOPS "Endschalter" #define MSG_SELFTEST_MOTOR "Motor" #define MSG_SELFTEST_ENDSTOP "Endstop" -#define(length=20) MSG_SELFTEST_ENDSTOP_NOTHIT "Endstopp n. erreicht" +#define(length=20) MSG_SELFTEST_ENDSTOP_NOTHIT "Endsch. n. erreicht" #define MSG_SELFTEST_OK "Selbsttest OK" #define(length=20) MSG_LOOSE_PULLEY "Loser pulley" #define MSG_SELFTEST_FAN "Lueftertest"; #define(length=20) MSG_SELFTEST_COOLING_FAN "Vorderer Luefter?"; -#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Linker Hotend-Fan?"; +#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Linker Luefter?"; #define MSG_SELFTEST_FAN_YES "Dreht"; #define(length=20) MSG_SELFTEST_FAN_NO "Dreht nicht"; -#define(length=20) MSG_STATS_TOTALFILAMENT "Filament Total:" +#define(length=20) MSG_STATS_TOTALFILAMENT "Filament Gesamt:" #define(length=20) MSG_STATS_TOTALPRINTTIME "Totale druck Zeit:" #define(length=20) MSG_STATS_FILAMENTUSED "Filamentverbrauch:" #define(length=20) MSG_STATS_PRINTTIME "Druck Zeit: " #define(length=20) MSG_SELFTEST_START "Selbsttest start " -#define(length=20) MSG_SELFTEST_CHECK_ENDSTOPS "Pruefe endstops " +#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 " @@ -193,12 +203,12 @@ #define MSG_HOMEYZ_PROGRESS "Kalibriere Z" #define MSG_HOMEYZ_DONE "Kalibrierung OK" -#define MSG_SHOW_END_STOPS "Anzeigen endstops" +#define MSG_SHOW_END_STOPS "Anzeigen Enschalter" #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, um die Z-Schlitten bis zum Anschlag zu bewegen. Klicken wenn fertig." -#define(length=20, lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf, um die Z-Schlitten bis zum Anschlag zu bewegen. Klicken wenn fertig." +#define(length=20, lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind." +#define(length=20, lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind." #define(length=20, lines=8) MSG_CONFIRM_NOZZLE_CLEAN "Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." #define(length=20, lines=8) MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Sind beide Z Schlitten ganz oben?" @@ -213,15 +223,15 @@ #define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ-Kalibrierung fehlgeschlagen. Bett-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 im Lot. Glueckwunsch!" +#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 "X/Y sehr schief. Schiefheit wird automatisch korrigiert." #define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ-Kalibrierung fehlgeschlagen. Linker voderer Kalibrierpunkt nicht erreichbar." #define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ-Kalibrierung fehlgeschlagen. Rechter voderer Kalibrierpunkt nicht erreichbar." #define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ-Kalibrierung fehlgeschlagen. Vodere Kalibrierpunkte nicht erreichbar." -#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung kompromittiert. Linker vorderer Kalibrierpunkt nicht erreichbar." -#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung kompromittiert. Rechter vorderer Kalibrierpunkt nicht erreichbar." -#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung kompromittiert. Vordere Kalibrierpunkte nicht erreichbar." +#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt nicht erreichbar." +#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt nicht erreichbar." +#define(length=20, lines=8) MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte nicht erreichbar." #define(length=20, lines=6) MSG_BED_LEVELING_FAILED_POINT_LOW "Bett-Nivellierung fehlgeschlagen. Sensor wurde nicht ausgeloest. Schmutz auf der Duese? Warte auf Reset." #define(length=20, lines=5) MSG_BED_LEVELING_FAILED_POINT_HIGH "Bett-Nivellierung fehlgeschlagen. Sensor wurde zu hoch ausgeloest. Warte auf Reset." @@ -242,31 +252,31 @@ #define(length=20, lines=2) MSG_FIL_LOADED_CHECK "Ist Filament eingelegt?" #define(length=20, lines=3) MSG_FIL_TUNING "Knopf drehen um Filament einzustellen." #define(length=20, lines=4) MSG_FIL_ADJUSTING "Einstellen Filament. Bitte warten." -#define(length=20, lines=8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filaments sind jetzt eingestellt. Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn fertig." +#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=4) MSG_STACK_ERROR "Error - static memory has been overwritten" #define(length=20, lines=1) MSG_CALIBRATE_E "Kalibrierung E" //#define(length=20, lines=1) MSG_RESET_CALIBRATE_E "Reset E Cal." -#define(length=20, lines=8) MSG_E_CAL_KNOB "Dreh den Knopf bis das Extruder Zeichen erreicht ist. Klicken wenn fertig." +#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 "Markier Filament 100mm vom Extrudergehaeuse. Klicken wenn Fertig." +#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 Bett." -#define(length=20, lines=2) MSG_FILAMENT_CLEAN "Ist Farbe klar?" +#define(length=20, lines=2) MSG_FILAMENT_CLEAN "Ist Farbe rein?" #define(length=20) MSG_UNLOADING_FILAMENT "Filament auswerfen" #define(length=20, lines=10) MSG_PAPER "Lege waehrend der Kalibrierung der ersten 4 Punkte ein Blatt Papier unter die Duese. Wenn die Duese das Papier bewegt, Drucker sofort ausschalten!" #define(length=20) MSG_BED_CORRECTION_MENU "Bett level korrekt" -#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 "Reset" +#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 "Zuruecksetzen" #define(length=20) MSG_MESH_BED_LEVELING "Mesh Bed Leveling" #define MSG_MENU_CALIBRATION "Kalibrierung" -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD Karte [normal]" +#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD Karte [FlshAir]" #define(length=20) MSG_PRINTER_DISCONNECTED "Drucker getrent" #define(length=20) MSG_FINISHING_MOVEMENTS "Bewegungen beenden" #define MSG_PRINT_PAUSED "Druck pausiert" @@ -286,4 +296,5 @@ #define(length=20) MSG_TEMP_CALIBRATION "PINDA Temp.Kal. " #define(length=20, lines=3) MSG_TEMP_CALIBRATION_DONE "Die PINDA Temperaturkalibrierung ist beendet. Klicke um fortzufahren." #define(length=20) MSG_TEMP_CALIBRATION_ON "PINDA T.Kal. [ON]" -#define(length=20) MSG_TEMP_CALIBRATION_OFF "PINDA T.Kal.[OFF]" \ No newline at end of file +#define(length=20) MSG_TEMP_CALIBRATION_OFF "PINDA T.Kal.[OFF]" +#define(length=20, lines=1) MSG_PREPARE_FILAMENT "Filament vorbereiten" diff --git a/Firmware/language_en.h b/Firmware/language_en.h index f203af9df..6a49b598e 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -69,8 +69,19 @@ #define MSG_SETTINGS "Settings" #define MSG_PREHEAT "Preheat" -#define MSG_UNLOAD_FILAMENT "Unload filament" -#define MSG_LOAD_FILAMENT "Load filament" +#define(length=20) MSG_UNLOAD_FILAMENT "Unload filament" +#define(length=20) MSG_LOAD_FILAMENT "Load filament" +#define(length=20) MSG_LOAD_FILAMENT_1 "Load filament 1" +#define(length=20) MSG_LOAD_FILAMENT_2 "Load filament 2" +#define(length=20) MSG_LOAD_FILAMENT_3 "Load filament 3" +#define(length=20) MSG_LOAD_FILAMENT_4 "Load filament 4" +#define(length=20) MSG_UNLOAD_FILAMENT_1 "Unload filament 1" +#define(length=20) MSG_UNLOAD_FILAMENT_2 "Unload filament 2" +#define(length=20) MSG_UNLOAD_FILAMENT_3 "Unload filament 3" +#define(length=20) MSG_UNLOAD_FILAMENT_4 "Unload filament 4" +#define MSG_UNLOAD_ALL "Unload all" +#define MSG_LOAD_ALL "Load all" + #define MSG_RECTRACT "Rectract" #define MSG_ERROR "ERROR:" @@ -192,7 +203,7 @@ #define MSG_HOMEYZ_PROGRESS "Calibrating Z" #define MSG_HOMEYZ_DONE "Calibration done" -#define MSG_SHOW_END_STOPS "Show end stops" +#define(length=20) MSG_SHOW_END_STOPS "Show end stops" #define MSG_CALIBRATE_BED "Calibrate XYZ" #define MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." @@ -255,24 +266,24 @@ #define(length=20, lines=10) 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(length=20) MSG_BED_CORRECTION_MENU "Bed level correct" -#define MSG_BED_CORRECTION_LEFT "Left side um" -#define MSG_BED_CORRECTION_RIGHT "Right side um" -#define MSG_BED_CORRECTION_FRONT "Front side um" -#define MSG_BED_CORRECTION_REAR "Rear side um" -#define MSG_BED_CORRECTION_RESET "Reset" +#define(length=20) MSG_BED_CORRECTION_LEFT "Left side [um]" +#define(length=20) MSG_BED_CORRECTION_RIGHT "Right side[um]" +#define(length=20) MSG_BED_CORRECTION_FRONT "Front side[um]" +#define(length=20) MSG_BED_CORRECTION_REAR "Rear side [um]" +#define(length=20) MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh Bed Leveling" #define MSG_MENU_CALIBRATION "Calibration" -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" -#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" +#define(length=20) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" +#define(length=20) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" #define(length=20) MSG_PRINTER_DISCONNECTED "Printer disconnected" #define(length=20, lines=1) MSG_FINISHING_MOVEMENTS "Finishing movements" #define(length=20, lines=1) MSG_PRINT_PAUSED "Print paused" #define(length=20, lines=1) MSG_RESUMING_PRINT "Resuming print" #define(length=20, lines=1) MSG_PID_EXTRUDER "PID calibration" #define(length=20, lines=1) MSG_SET_TEMPERATURE "Set temperature:" -#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. done " -#define(length=20, lines=1) MSG_PID_RUNNING "PID cal. " +#define(length=20, lines=1) MSG_PID_FINISHED "PID cal. finished" +#define(length=20, lines=1) MSG_PID_RUNNING "PID cal. " #define(length=20, lines=1) MSG_PID_BED "PID bed cal. " #define(length=20, lines=1) MSG_PID_BED_FINISHED "PID bed cal. done " #define(length=20, lines=1) MSG_PID_BED_RUNNING "PID bed cal. " @@ -285,4 +296,7 @@ #define(length=20, lines=1) MSG_TEMP_CALIBRATION "PINDA Temp.cal. " #define(length=20, lines=5) MSG_TEMP_CALIBRATION_DONE "PINDA temperature calibration is finished. Click to continue." #define(length=20, lines=1) MSG_TEMP_CALIBRATION_ON "PINDA T.cal. [ON]" -#define(length=20, lines=1) MSG_TEMP_CALIBRATION_OFF "PINDA T.cal.[OFF]" \ No newline at end of file +#define(length=20, lines=1) MSG_TEMP_CALIBRATION_OFF "PINDA T.cal.[OFF]" +#define(length=20, lines=1) MSG_PREPARE_FILAMENT "Prepare new filament" + + diff --git a/Firmware/language_es.h b/Firmware/language_es.h index 7a43092f4..b3e929e4a 100644 --- a/Firmware/language_es.h +++ b/Firmware/language_es.h @@ -206,7 +206,7 @@ #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Medir la altura del punto de la calibracion" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " de 9" -#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteracion " +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiteracion " #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibracion XYZ fallada. Consultar el manual por favor." #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!" @@ -270,4 +270,20 @@ #define MSG_TEMP_CALIBRATION "Cal. temp. " #define MSG_TEMP_CALIBRATION_DONE "Calibracon temperatura terminada. Presionar para continuar." #define MSG_TEMP_CALIBRATION_ON "Cal. temp. [ON]" -#define MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" \ No newline at end of file +#define MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" + +#define MSG_PREPARE_FILAMENT "Preparar filamento" + + + +#define MSG_LOAD_ALL "Intr. todos fil." +#define MSG_LOAD_FILAMENT_1 "Introducir fil. 1" +#define MSG_LOAD_FILAMENT_2 "Introducir fil. 2" +#define MSG_LOAD_FILAMENT_3 "Introducir fil. 3" +#define MSG_LOAD_FILAMENT_4 "Introducir fil. 4" +#define MSG_UNLOAD_FILAMENT_1 "Soltar fil. 1" +#define MSG_UNLOAD_FILAMENT_2 "Soltar fil. 2" +#define MSG_UNLOAD_FILAMENT_3 "Soltar fil. 3" +#define MSG_UNLOAD_FILAMENT_4 "Soltar fil. 4" +#define MSG_UNLOAD_ALL "Soltar todos fil." +#define MSG_PREPARE_FILAMENT "Preparar filamento" \ No newline at end of file diff --git a/Firmware/language_it.h b/Firmware/language_it.h index 26f5ae484..451481573 100644 --- a/Firmware/language_it.h +++ b/Firmware/language_it.h @@ -196,6 +196,7 @@ #define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " su 9" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Misurare l'altezza di riferimento del punto di calibrazione" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " su 9" +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiterazione " #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale." @@ -220,10 +221,10 @@ #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 "Lato sinistro" -#define MSG_BED_CORRECTION_RIGHT "Lato destro" -#define MSG_BED_CORRECTION_FRONT "Lato ateriore" -#define MSG_BED_CORRECTION_REAR "Lato posteriore" +#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]" #define MSG_BED_CORRECTION_RESET "Reset" #define MSG_MESH_BED_LEVELING "Mesh livel. letto" @@ -264,4 +265,16 @@ #define MSG_TEMP_CALIBRATION "Cal. temp. " #define MSG_TEMP_CALIBRATION_DONE "Taratura temperatura terminata. Fare click per continuare." #define MSG_TEMP_CALIBRATION_ON "Cal. temp. [ON]" -#define MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" \ No newline at end of file +#define MSG_TEMP_CALIBRATION_OFF "Cal. temp. [OFF]" + +#define MSG_LOAD_ALL "Caricare tutti" +#define MSG_LOAD_FILAMENT_1 "Caricare fil. 1" +#define MSG_LOAD_FILAMENT_2 "Caricare fil. 2" +#define MSG_LOAD_FILAMENT_3 "Caricare fil. 3" +#define MSG_LOAD_FILAMENT_4 "Caricare fil. 4" +#define MSG_UNLOAD_FILAMENT_1 "Rilasciare fil. 1" +#define MSG_UNLOAD_FILAMENT_2 "Rilasciare fil. 1" +#define MSG_UNLOAD_FILAMENT_3 "Rilasciare fil. 1" +#define MSG_UNLOAD_FILAMENT_4 "Rilasciare fil. 1" +#define MSG_UNLOAD_ALL "Rilasciare tutti" +#define MSG_PREPARE_FILAMENT "Preparare filamento" diff --git a/Firmware/language_nl.h b/Firmware/language_nl.h index 9941cc63a..be57c25e1 100644 --- a/Firmware/language_nl.h +++ b/Firmware/language_nl.h @@ -64,13 +64,23 @@ #define MSG_BABYSTEP_X "Babystep X" #define MSG_BABYSTEP_Y "Babystep Y" #define MSG_BABYSTEP_Z "Live Z aanpassen" -#define(length=20) MSG_ADJUSTZ "Auto instellen Z ?" +#define(length=20) MSG_ADJUSTZ "Auto instellen Z?" #define(length=20) MSG_PICK_Z "Pick print" #define MSG_SETTINGS "Instellingen" #define MSG_PREHEAT "Voorverwarmen" #define MSG_UNLOAD_FILAMENT "Haal Filament uit" #define MSG_LOAD_FILAMENT "Laad Filament" +#define(length=20) MSG_LOAD_FILAMENT_1 "Laad filament 1" +#define(length=20) MSG_LOAD_FILAMENT_2 "Laad filament 2" +#define(length=20) MSG_LOAD_FILAMENT_3 "Laad filament 3" +#define(length=20) MSG_LOAD_FILAMENT_4 "Laad filament 4" +#define(length=20) MSG_UNLOAD_FILAMENT_1 "Haal filament 1 uit" +#define(length=20) MSG_UNLOAD_FILAMENT_2 "Haal filament 2 uit" +#define(length=20) MSG_UNLOAD_FILAMENT_3 "Haal filament 3 uit" +#define(length=20) MSG_UNLOAD_FILAMENT_4 "Haal filament 4 uit" +#define MSG_UNLOAD_ALL "Haal alle uit" +#define MSG_LOAD_ALL "Laad alle" #define MSG_RECTRACT "Rectract" #define MSG_ERROR "FOUT:" @@ -285,4 +295,5 @@ #define(length=20) MSG_TEMP_CALIBRATION "PINDA Temp.kal." #define(length=20, lines=3) MSG_TEMP_CALIBRATION_DONE "PINDA temperatuur calibratie is klaar. Klik om door te gaan." #define(length=20) MSG_TEMP_CALIBRATION_ON "PINDA T.kal. [ON]" -#define(length=20) MSG_TEMP_CALIBRATION_OFF "PINDA T.kal.[OFF]" \ No newline at end of file +#define(length=20) MSG_TEMP_CALIBRATION_OFF "PINDA T.kal.[OFF]" +#define(length=20, lines=1) MSG_PREPARE_FILAMENT "Filament voorbereden" diff --git a/Firmware/language_pl.h b/Firmware/language_pl.h index 83fbfa8b9..3207ce0c9 100644 --- a/Firmware/language_pl.h +++ b/Firmware/language_pl.h @@ -211,6 +211,7 @@ #define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " z 9" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Okreslam wysokosc odniesienia punktu kalibracyjnego" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " z 9" +#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteracja " #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji." @@ -275,4 +276,17 @@ #define MSG_TEMP_CALIBRATION "Ciepl. kal. " #define MSG_TEMP_CALIBRATION_DONE "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem" #define MSG_TEMP_CALIBRATION_ON "Ciepl. kal. [ON]" -#define MSG_TEMP_CALIBRATION_OFF "Ciepl. kal. [OFF]" \ No newline at end of file +#define MSG_TEMP_CALIBRATION_OFF "Ciepl. kal. [OFF]" +#define MSG_PREPARE_FILAMENT "Przygotuj filament" + +#define MSG_LOAD_ALL "Zalad. wszystkie" +#define MSG_LOAD_FILAMENT_1 "Zaladowac fil. 1" +#define MSG_LOAD_FILAMENT_2 "Zaladowac fil. 2" +#define MSG_LOAD_FILAMENT_3 "Zaladowac fil. 3" +#define MSG_LOAD_FILAMENT_4 "Zaladowac fil. 4" +#define MSG_UNLOAD_FILAMENT_1 "Wyjac filament 1" +#define MSG_UNLOAD_FILAMENT_2 "Wyjac filament 2" +#define MSG_UNLOAD_FILAMENT_3 "Wyjac filament 3" +#define MSG_UNLOAD_FILAMENT_4 "Wyjac filament 4" +#define MSG_UNLOAD_ALL "Wyjac wszystkie" +#define MSG_PREPARE_FILAMENT "Przygotuj filament" \ No newline at end of file diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 1ebc12658..c91f92a0a 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -2309,7 +2309,7 @@ static int babystepLoadZ = 0; void babystep_apply() { // Apply Z height correction aka baby stepping before mesh bed leveling gets activated. - if(calibration_status() <= CALIBRATION_STATUS_PINDA) + if(calibration_status() < CALIBRATION_STATUS_LIVE_ADJUST) { check_babystep(); //checking if babystep is in allowed range, otherwise setting babystep to 0 diff --git a/Firmware/planner.h b/Firmware/planner.h index a13aa1bd2..30194952d 100644 --- a/Firmware/planner.h +++ b/Firmware/planner.h @@ -171,7 +171,9 @@ FORCE_INLINE block_t *plan_get_current_block() } // Returns true if the buffer has a queued block, false otherwise -FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); } +FORCE_INLINE bool blocks_queued() { + return (block_buffer_head != block_buffer_tail); +} //return the nr of buffered moves FORCE_INLINE uint8_t moves_planned() { diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 919c55918..b92f54ee1 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -515,14 +515,39 @@ ISR(TIMER1_COMPA_vect) } #endif - if ((out_bits & (1<"); + for (int i = 0; i < 4; i++) { + lcd.setCursor(1, i); + lcd.print("Extruder "); + lcd.print(i); + lcd.print(": "); + EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); + lcd.print(bowden_length[i] - 48); - + } enc_dif = encoderDiff; while (1) { @@ -2921,6 +2858,136 @@ char reset_menu() { manage_heater(); manage_inactivity(true); + if (abs((enc_dif - encoderDiff)) > 2) { + + if (enc_dif > encoderDiff) { + cursor_pos--; + } + + if (enc_dif < encoderDiff) { + cursor_pos++; + } + + if (cursor_pos > 3) { + cursor_pos = 3; + } + + if (cursor_pos < 0) { + cursor_pos = 0; + } + + lcd.setCursor(0, 0); + lcd.print(" "); + lcd.setCursor(0, 1); + lcd.print(" "); + lcd.setCursor(0, 2); + lcd.print(" "); + lcd.setCursor(0, 3); + lcd.print(" "); + lcd.setCursor(0, cursor_pos); + lcd.print(">"); + + enc_dif = encoderDiff; + delay(100); + } + + if (lcd_clicked()) { + while (lcd_clicked()); + delay(10); + while (lcd_clicked()); + + lcd_implementation_clear(); + while (1) { + + manage_heater(); + manage_inactivity(true); + + lcd.setCursor(1, 1); + lcd.print("Extruder "); + lcd.print(cursor_pos); + lcd.print(": "); + lcd.setCursor(13, 1); + lcd.print(bowden_length[cursor_pos] - 48); + + if (abs((enc_dif - encoderDiff)) > 2) { + if (enc_dif > encoderDiff) { + bowden_length[cursor_pos]--; + lcd.setCursor(13, 1); + lcd.print(bowden_length[cursor_pos] - 48); + enc_dif = encoderDiff; + } + + if (enc_dif < encoderDiff) { + bowden_length[cursor_pos]++; + lcd.setCursor(13, 1); + lcd.print(bowden_length[cursor_pos] - 48); + enc_dif = encoderDiff; + } + } + delay(100); + if (lcd_clicked()) { + while (lcd_clicked()); + delay(10); + while (lcd_clicked()); + EEPROM_save_B(EEPROM_BOWDEN_LENGTH + cursor_pos * 2, &bowden_length[cursor_pos]); + if (lcd_show_fullscreen_message_yes_no_and_wait_P(PSTR("Continue with another bowden?"))) { + lcd_update_enable(true); + lcd_implementation_clear(); + enc_dif = encoderDiff; + lcd.setCursor(0, cursor_pos); + lcd.print(">"); + for (int i = 0; i < 4; i++) { + lcd.setCursor(1, i); + lcd.print("Extruder "); + lcd.print(i); + lcd.print(": "); + EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); + lcd.print(bowden_length[i] - 48); + + } + break; + } + else return; + } + } + } + } +} + +char reset_menu() { +#ifdef SNMM + int items_no = 5; +#else + int items_no = 4; +#endif + static int first = 0; + int enc_dif = 0; + char cursor_pos = 0; + const char *item [items_no]; + + item[0] = "Language"; + item[1] = "Statistics"; + item[2] = "Shipping prep"; + item[3] = "All Data"; +#ifdef SNMM + item[4] = "Bowden length"; +#endif // SNMM + + enc_dif = encoderDiff; + lcd_implementation_clear(); + lcd.setCursor(0, 0); + lcd.print(">"); + + while (1) { + + for (int i = 0; i < 4; i++) { + lcd.setCursor(1, i); + lcd.print(item[first + i]); + } + + manage_heater(); + manage_inactivity(true); + if (abs((enc_dif - encoderDiff)) > 4) { if ((abs(enc_dif - encoderDiff)) > 1) { @@ -2934,10 +3001,18 @@ char reset_menu() { if (cursor_pos > 3) { cursor_pos = 3; + if (first < items_no - 4) { + first++; + lcd_implementation_clear(); + } } if (cursor_pos < 0) { cursor_pos = 0; + if (first > 0) { + first--; + lcd_implementation_clear(); + } } lcd.setCursor(0, 0); lcd.print(" "); @@ -2959,7 +3034,7 @@ char reset_menu() { while (lcd_clicked()); delay(10); while (lcd_clicked()); - return(cursor_pos); + return(cursor_pos + first); } } @@ -3013,9 +3088,14 @@ void change_extr(int extr) { //switches multiplexer for extruders disable_e1(); disable_e2(); +#ifdef SNMM + snmm_extruder = extr; +#endif + pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); pinMode(E_MUX2_PIN, OUTPUT); + switch (extr) { case 1: WRITE(E_MUX0_PIN, HIGH); @@ -3050,6 +3130,15 @@ static int get_ext_nr() { //reads multiplexer input pins and return current extr } +void display_loading() { + switch (snmm_extruder) { + case 1: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T1); break; + case 2: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T2); break; + case 3: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T3); break; + default: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T0); break; + } +} + static void extr_adj(int extruder) //loading filament for SNMM { bool correct; @@ -3076,9 +3165,13 @@ static void extr_adj(int extruder) //loading filament for SNMM //if (!correct) goto START; //extr_mov(BOWDEN_LENGTH/2.f, 500); //dividing by 2 is there because of max. extrusion length limitation (x_max + y_max) //extr_mov(BOWDEN_LENGTH/2.f, 500); - extr_mov(BOWDEN_LENGTH, 500); + extr_mov(bowden_length[extruder], 500); lcd_implementation_clear(); - lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT); + lcd.setCursor(0, 0); lcd_printPGM(MSG_LOADING_FILAMENT); + if(strlen(MSG_LOADING_FILAMENT)>18) lcd.setCursor(0, 1); + else lcd.print(" "); + lcd.print(snmm_extruder + 1); + lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); st_synchronize(); max_feedrate[E_AXIS] = 50; lcd_update_enable(true); @@ -3096,10 +3189,14 @@ static void extr_unload() { //unloads filament lcd_implementation_clear(); lcd_display_message_fullscreen_P(PSTR("")); max_feedrate[E_AXIS] = 50; - lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT); - current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder); - + lcd.setCursor(0, 0); lcd_printPGM(MSG_UNLOADING_FILAMENT); + lcd.print(" "); + lcd.print(snmm_extruder + 1); + lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); + if (current_position[Z_AXIS] < 15) { + current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder); + } current_position[E_AXIS] += 10; //extrusion plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder); @@ -3127,9 +3224,9 @@ static void extr_unload() { //unloads filament } max_feedrate[E_AXIS] = 80; - current_position[E_AXIS] -= (BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2; + current_position[E_AXIS] -= (bowden_length[snmm_extruder] + 60 + FIL_LOAD_LENGTH) / 2; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); - current_position[E_AXIS] -= (BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2; + current_position[E_AXIS] -= (bowden_length[snmm_extruder] + 60 + FIL_LOAD_LENGTH) / 2; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); st_synchronize(); //digipot_init(); @@ -3176,6 +3273,13 @@ static void extr_adj_3() { extr_adj(3); } +static void load_all() { + for (int i = 0; i < 4; i++) { + change_extr(i); + extr_adj(i); + } +} + //wrapper functions for changing extruders static void extr_change_0() { change_extr(0); @@ -3195,13 +3299,27 @@ static void extr_change_3() { } //wrapper functions for unloading filament -static void extr_unload_all() { - for (int i = 0; i < 4; i++) { - change_extr(i); - extr_unload(); +void extr_unload_all() { + if (degHotend0() > EXTRUDE_MINTEMP) { + for (int i = 0; i < 4; i++) { + change_extr(i); + extr_unload(); + } + } + else { + lcd_implementation_clear(); + lcd.setCursor(0, 0); + lcd_printPGM(MSG_ERROR); + lcd.setCursor(0, 2); + lcd_printPGM(MSG_PREHEAT_NOZZLE); + delay(2000); + lcd_implementation_clear(); + lcd_return_to_status(); } } + + static void extr_unload_0() { change_extr(0); extr_unload(); @@ -3224,10 +3342,11 @@ static void fil_load_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); - MENU_ITEM(function, PSTR("Load filament 1"), extr_adj_0); - MENU_ITEM(function, PSTR("Load filament 2 "), extr_adj_1); - MENU_ITEM(function, PSTR("Load filament 3"), extr_adj_2); - MENU_ITEM(function, PSTR("Load filament 4"), extr_adj_3); + MENU_ITEM(function, MSG_LOAD_ALL, load_all); + MENU_ITEM(function, MSG_LOAD_FILAMENT_1, extr_adj_0); + MENU_ITEM(function, MSG_LOAD_FILAMENT_2, extr_adj_1); + MENU_ITEM(function, MSG_LOAD_FILAMENT_3, extr_adj_2); + MENU_ITEM(function, MSG_LOAD_FILAMENT_4, extr_adj_3); END_MENU(); } @@ -3237,11 +3356,11 @@ static void fil_unload_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); - MENU_ITEM(function, PSTR("Unload all"), extr_unload_all); - MENU_ITEM(function, PSTR("Unload filament 1"), extr_unload_0); - MENU_ITEM(function, PSTR("Unload filament 2"), extr_unload_1); - MENU_ITEM(function, PSTR("Unload filament 3"), extr_unload_2); - MENU_ITEM(function, PSTR("Unload filament 4"), extr_unload_3); + MENU_ITEM(function, MSG_UNLOAD_ALL, extr_unload_all); + MENU_ITEM(function, MSG_UNLOAD_FILAMENT_1, extr_unload_0); + MENU_ITEM(function, MSG_UNLOAD_FILAMENT_2, extr_unload_1); + MENU_ITEM(function, MSG_UNLOAD_FILAMENT_3, extr_unload_2); + MENU_ITEM(function, MSG_UNLOAD_FILAMENT_4, extr_unload_3); END_MENU(); } @@ -3566,6 +3685,17 @@ static void lcd_silent_mode_set_tune() { lcd_goto_menu(lcd_tune_menu, 9); } +static void lcd_colorprint_change() { + + enquecommand_P(PSTR("M600")); + + custom_message = true; + custom_message_type = 2; //just print status message + lcd_setstatuspgm(MSG_FINISHING_MOVEMENTS); + lcd_return_to_status(); + lcdDrawUpdate = 3; +} + static void lcd_tune_menu() { EEPROM_read(EEPROM_SILENT, (uint8_t*)&SilentModeMenu, sizeof(SilentModeMenu)); @@ -3582,7 +3712,7 @@ static void lcd_tune_menu() MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);//5 MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999);//6 #ifdef FILAMENTCHANGEENABLE - MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600"));//7 + MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif if (SilentModeMenu == 0) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index eb12faa0f..4ad876521 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -95,7 +95,7 @@ void lcd_mylang(); #define LCD_COMMAND_LONG_PAUSE_RESUME 6 #define LCD_COMMAND_PID_EXTRUDER 7 #define LCD_COMMAND_PID_BED 8 - + extern unsigned long lcd_timeoutToStatus; extern int lcd_commands_type; @@ -104,6 +104,10 @@ void lcd_mylang(); extern int farm_timer; extern int farm_status; +#ifdef SNMM + extern uint8_t snmm_extruder; +#endif // SNMM + extern bool cancel_heatup; extern bool isPrintPaused; @@ -205,6 +209,7 @@ extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str); void change_extr(int extr); +static void lcd_colorprint_change(); static int get_ext_nr(); static void extr_adj(int extruder); static void extr_adj_0(); @@ -218,6 +223,8 @@ static void extr_unload_1(); static void extr_unload_2(); static void extr_unload_3(); static void lcd_disable_farm_mode(); +void extr_unload_all(); +static void extr_unload(); void stack_error(); static void lcd_ping_allert(); @@ -238,10 +245,13 @@ void lcd_extr_cal_reset(); union MenuData; +void bowden_menu(); char reset_menu(); void lcd_pinda_calibration_menu(); void lcd_calibrate_pinda(); void lcd_temp_calibration_set(); +void display_loading(); + #endif //ULTRALCD_H \ No newline at end of file diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index dcb4f39a3..c7601b76c 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -776,15 +776,17 @@ static void lcd_implementation_status_screen() } else { - lcd.setCursor(LCD_WIDTH - 8 - 2, 2); - lcd_printPGM(PSTR(" ")); - } - #ifdef SNMM lcd_printPGM(PSTR(" E")); - lcd.print(get_ext_nr()+1); - + lcd.print(get_ext_nr() + 1); + +#else + lcd.setCursor(LCD_WIDTH - 8 - 2, 2); + lcd_printPGM(PSTR(" ")); #endif + } + + //Print time elapsed lcd.setCursor(LCD_WIDTH - 8 -1, 2); diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index cc0626cca..e81d17ef3 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -18,6 +18,9 @@ GENERAL SETTINGS // Electronics #define MOTHERBOARD BOARD_RAMBO_MINI_1_0 +// Prusa Single extruder multiple material suport +//#define SNMM + // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) //#define E3D_PT100_EXTRUDER_WITH_AMP //#define E3D_PT100_EXTRUDER_NO_AMP @@ -30,7 +33,12 @@ AXIS SETTINGS *------------------------------------*/ // Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else #define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + // Endstop inverting const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -120,13 +128,12 @@ EXTRUDER SETTINGS #ifdef SNMM //#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 457 //total length for filament fast loading part; max length for extrusion is 465 mm! +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu #define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_RETURN_LENGTH 30.5 //for filament adjusting (PRUSAY code) +#define FIL_COOLING 10 //length for cooling moves #define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code #define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming - -#endif +#endif //SNMM //#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function @@ -364,9 +371,6 @@ THERMISTORS SETTINGS #define MAX_E_STEPS_PER_UNIT 250 #define MIN_E_STEPS_PER_UNIT 100 -#define PRINT_STARTED 0xFE -#define PRINT_FINISHED 0xFF - #define Z_BABYSTEP_MIN -3999 #define Z_BABYSTEP_MAX 0 diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index b4e738fc5..b1d9d59a7 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -18,6 +18,9 @@ GENERAL SETTINGS // Electronics #define MOTHERBOARD BOARD_RAMBO_MINI_1_3 +// Prusa Single extruder multiple material suport +//#define SNMM + // Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) //#define E3D_PT100_EXTRUDER_WITH_AMP //#define E3D_PT100_EXTRUDER_NO_AMP @@ -30,7 +33,12 @@ AXIS SETTINGS *------------------------------------*/ // Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else #define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + // Endstop inverting const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -126,18 +134,16 @@ EXTRUDER SETTINGS -// Prusa Single extruder multiple material suport -//#define SNMM + #ifdef SNMM //#define BOWDEN_LENGTH 408 -#define BOWDEN_LENGTH 457 //total length for filament fast loading part; max length for extrusion is 465 mm! +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu #define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle -#define FIL_RETURN_LENGTH 30.5 //for filament adjusting (PRUSAY code) +#define FIL_COOLING 10 //length for cooling moves #define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code #define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming - -#endif +#endif //SNMM //#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function @@ -383,9 +389,6 @@ THERMISTORS SETTINGS #define MAX_E_STEPS_PER_UNIT 250 #define MIN_E_STEPS_PER_UNIT 100 -#define PRINT_STARTED 0xFE -#define PRINT_FINISHED 0xFF - #define Z_BABYSTEP_MIN -3999 #define Z_BABYSTEP_MAX 0