3.0.10 sync

This commit is contained in:
michalprusa 2017-03-24 19:47:50 +01:00
parent 99ae9707de
commit 3faef75a0d
27 changed files with 4026 additions and 811 deletions

View File

@ -5,7 +5,7 @@
#include "Configuration_prusa.h" #include "Configuration_prusa.h"
// Firmware version // Firmware version
#define FW_version "3.0.8" #define FW_version "3.0.10-8"
#define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC "PRUSA3DFW"
#define FW_PRUSA3D_MAGIC_LEN 10 #define FW_PRUSA3D_MAGIC_LEN 10
@ -18,7 +18,7 @@
#define EEPROM_BABYSTEP_X 4092 #define EEPROM_BABYSTEP_X 4092
#define EEPROM_BABYSTEP_Y 4090 #define EEPROM_BABYSTEP_Y 4090
#define EEPROM_BABYSTEP_Z 4088 #define EEPROM_BABYSTEP_Z 4088
#define EEPROM_BABYSTEP_Z_SET 4087 #define EEPROM_CALIBRATION_STATUS 4087
#define EEPROM_BABYSTEP_Z0 4085 #define EEPROM_BABYSTEP_Z0 4085
#define EEPROM_FILAMENTUSED 4081 #define EEPROM_FILAMENTUSED 4081
// uint32_t // uint32_t
@ -31,27 +31,30 @@
// Offsets of the Z heiths of the calibration points from the first point. // Offsets of the Z heiths of the calibration points from the first point.
// The offsets are saved as 16bit signed int, scaled to tenths of microns. // The offsets are saved as 16bit signed int, scaled to tenths of microns.
#define EEPROM_BED_CALIBRATION_Z_JITTER (EEPROM_BED_CALIBRATION_VEC_Y-2*8) #define EEPROM_BED_CALIBRATION_Z_JITTER (EEPROM_BED_CALIBRATION_VEC_Y-2*8)
#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1)
#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-4) #define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3)
// Correction of the bed leveling, in micrometers. // Correction of the bed leveling, in micrometers.
// Maximum 50 micrometers allowed. // Maximum 50 micrometers allowed.
// Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid. // Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid.
#define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_MODE-1) #define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_NUMBER-1)
#define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1) #define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1)
#define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1) #define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1)
#define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1) #define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1)
#define EEPROM_BED_CORRECTION_REAR (EEPROM_BED_CORRECTION_FRONT-1) #define EEPROM_BED_CORRECTION_REAR (EEPROM_BED_CORRECTION_FRONT-1)
#define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1) #define EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY (EEPROM_BED_CORRECTION_REAR-1)
#define EEPROM_PRINT_FLAG (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-1)
// Currently running firmware, each digit stored as uint16_t. // Currently running firmware, each digit stored as uint16_t.
// The flavor differentiates a dev, alpha, beta, release candidate or a release version. // The flavor differentiates a dev, alpha, beta, release candidate or a release version.
#define EEPROM_FIRMWARE_VERSION_END (FW_PRUSA3D_MAGIC_LEN+8)
#define EEPROM_FIRMWARE_VERSION_FLAVOR (FW_PRUSA3D_MAGIC_LEN+6) #define EEPROM_FIRMWARE_VERSION_FLAVOR (FW_PRUSA3D_MAGIC_LEN+6)
#define EEPROM_FIRMWARE_VERSION_REVISION (FW_PRUSA3D_MAGIC_LEN+4) #define EEPROM_FIRMWARE_VERSION_REVISION (FW_PRUSA3D_MAGIC_LEN+4)
#define EEPROM_FIRMWARE_VERSION_MINOR (FW_PRUSA3D_MAGIC_LEN+2) #define EEPROM_FIRMWARE_VERSION_MINOR (FW_PRUSA3D_MAGIC_LEN+2)
#define EEPROM_FIRMWARE_VERSION_MAJOR FW_PRUSA3D_MAGIC_LEN #define EEPROM_FIRMWARE_VERSION_MAJOR FW_PRUSA3D_MAGIC_LEN
// Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware. // Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware.
#define EEPROM_FIRMWARE_PRUSA_MAGIC #define EEPROM_FIRMWARE_PRUSA_MAGIC 0
// This configuration file contains the basic settings. // This configuration file contains the basic settings.
// Advanced settings can be found in Configuration_adv.h // Advanced settings can be found in Configuration_adv.h
@ -692,14 +695,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
//#define FILAMENT_LCD_DISPLAY //#define FILAMENT_LCD_DISPLAY
// Calibration status of the machine, to be stored into the EEPROM,
// (unsigned char*)EEPROM_CALIBRATION_STATUS
enum CalibrationStatus
{
// Freshly assembled, needs to peform a self-test and the XYZ calibration.
CALIBRATION_STATUS_ASSEMBLED = 255,
// For the wizard: self test has been performed, now the XYZ calibration is needed.
// CALIBRATION_STATUS_XYZ_CALIBRATION = 250,
// For the wizard: factory assembled, needs to run Z calibration.
CALIBRATION_STATUS_Z_CALIBRATION = 240,
// The XYZ calibration has been performed, now it remains to run the V2Calibration.gcode.
CALIBRATION_STATUS_LIVE_ADJUST = 230,
// Calibrated, ready to print.
CALIBRATION_STATUS_CALIBRATED = 1,
// Legacy: resetted by issuing a G86 G-code.
// This value can only be expected after an upgrade from the initial MK2 firmware releases.
// Currently the G86 sets the calibration status to
CALIBRATION_STATUS_UNKNOWN = 0,
};
#include "Configuration_adv.h" #include "Configuration_adv.h"
#include "thermistortables.h" #include "thermistortables.h"
#endif //__CONFIGURATION_H #endif //__CONFIGURATION_H

View File

@ -34,7 +34,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
#define EEPROM_OFFSET 100 #define EEPROM_OFFSET 20
// IMPORTANT: Whenever there are changes made to the variables stored in EEPROM // IMPORTANT: Whenever there are changes made to the variables stored in EEPROM
@ -43,7 +43,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
// wrong data being written to the variables. // wrong data being written to the variables.
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order. // ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
#define EEPROM_VERSION "V13" #define EEPROM_VERSION "V1"
#ifdef EEPROM_SETTINGS #ifdef EEPROM_SETTINGS
void Config_StoreSettings() void Config_StoreSettings()
@ -59,9 +59,10 @@ void Config_StoreSettings()
EEPROM_WRITE_VAR(i,minimumfeedrate); EEPROM_WRITE_VAR(i,minimumfeedrate);
EEPROM_WRITE_VAR(i,mintravelfeedrate); EEPROM_WRITE_VAR(i,mintravelfeedrate);
EEPROM_WRITE_VAR(i,minsegmenttime); EEPROM_WRITE_VAR(i,minsegmenttime);
EEPROM_WRITE_VAR(i,max_xy_jerk); EEPROM_WRITE_VAR(i,max_jerk[X_AXIS]);
EEPROM_WRITE_VAR(i,max_z_jerk); EEPROM_WRITE_VAR(i,max_jerk[Y_AXIS]);
EEPROM_WRITE_VAR(i,max_e_jerk); EEPROM_WRITE_VAR(i,max_jerk[Z_AXIS]);
EEPROM_WRITE_VAR(i,max_jerk[E_AXIS]);
EEPROM_WRITE_VAR(i,add_homing); EEPROM_WRITE_VAR(i,add_homing);
#ifndef ULTIPANEL #ifndef ULTIPANEL
int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED; int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
@ -70,12 +71,13 @@ void Config_StoreSettings()
#endif #endif
EEPROM_WRITE_VAR(i,plaPreheatHotendTemp); /* EEPROM_WRITE_VAR(i,plaPreheatHotendTemp);
EEPROM_WRITE_VAR(i,plaPreheatHPBTemp); EEPROM_WRITE_VAR(i,plaPreheatHPBTemp);
EEPROM_WRITE_VAR(i,plaPreheatFanSpeed); EEPROM_WRITE_VAR(i,plaPreheatFanSpeed);
EEPROM_WRITE_VAR(i,absPreheatHotendTemp); EEPROM_WRITE_VAR(i,absPreheatHotendTemp);
EEPROM_WRITE_VAR(i,absPreheatHPBTemp); EEPROM_WRITE_VAR(i,absPreheatHPBTemp);
EEPROM_WRITE_VAR(i,absPreheatFanSpeed); EEPROM_WRITE_VAR(i,absPreheatFanSpeed);
*/
EEPROM_WRITE_VAR(i,zprobe_zoffset); EEPROM_WRITE_VAR(i,zprobe_zoffset);
#ifdef PIDTEMP #ifdef PIDTEMP
@ -89,6 +91,11 @@ void Config_StoreSettings()
EEPROM_WRITE_VAR(i,dummy); EEPROM_WRITE_VAR(i,dummy);
EEPROM_WRITE_VAR(i,dummy); EEPROM_WRITE_VAR(i,dummy);
#endif #endif
#ifdef PIDTEMPBED
EEPROM_WRITE_VAR(i, bedKp);
EEPROM_WRITE_VAR(i, bedKi);
EEPROM_WRITE_VAR(i, bedKd);
#endif
#ifndef DOGLCD #ifndef DOGLCD
int lcd_contrast = 32; int lcd_contrast = 32;
#endif #endif
@ -117,7 +124,10 @@ void Config_StoreSettings()
EEPROM_WRITE_VAR(i, filament_size[2]); EEPROM_WRITE_VAR(i, filament_size[2]);
#endif #endif
#endif #endif
/*MYSERIAL.print("Top address used:\n");
MYSERIAL.print(i);
MYSERIAL.print("\n");
*/
char ver2[4]=EEPROM_VERSION; char ver2[4]=EEPROM_VERSION;
i=EEPROM_OFFSET; i=EEPROM_OFFSET;
EEPROM_WRITE_VAR(i,ver2); // validate data EEPROM_WRITE_VAR(i,ver2); // validate data
@ -191,6 +201,15 @@ void Config_PrintSettings()
SERIAL_ECHOPAIR(" D" ,unscalePID_d(Kd)); SERIAL_ECHOPAIR(" D" ,unscalePID_d(Kd));
SERIAL_ECHOLN(""); SERIAL_ECHOLN("");
#endif #endif
#ifdef PIDTEMPBED
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("PID heatbed settings:");
SERIAL_ECHO_START;
SERIAL_ECHOPAIR(" M304 P", bedKp);
SERIAL_ECHOPAIR(" I", unscalePID_i(bedKi));
SERIAL_ECHOPAIR(" D", unscalePID_d(bedKd));
SERIAL_ECHOLN("");
#endif
#ifdef FWRETRACT #ifdef FWRETRACT
SERIAL_ECHO_START; SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)"); SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)");
@ -267,22 +286,24 @@ void Config_RetrieveSettings()
EEPROM_READ_VAR(i,minimumfeedrate); EEPROM_READ_VAR(i,minimumfeedrate);
EEPROM_READ_VAR(i,mintravelfeedrate); EEPROM_READ_VAR(i,mintravelfeedrate);
EEPROM_READ_VAR(i,minsegmenttime); EEPROM_READ_VAR(i,minsegmenttime);
EEPROM_READ_VAR(i,max_xy_jerk); EEPROM_READ_VAR(i,max_jerk[X_AXIS]);
EEPROM_READ_VAR(i,max_z_jerk); EEPROM_READ_VAR(i,max_jerk[Y_AXIS]);
EEPROM_READ_VAR(i,max_e_jerk); EEPROM_READ_VAR(i,max_jerk[Z_AXIS]);
EEPROM_READ_VAR(i,max_jerk[E_AXIS]);
EEPROM_READ_VAR(i,add_homing); EEPROM_READ_VAR(i,add_homing);
#ifndef ULTIPANEL #ifndef ULTIPANEL
int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed; int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed;
int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed; int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed;
#endif #endif
/*
EEPROM_READ_VAR(i,plaPreheatHotendTemp); EEPROM_READ_VAR(i,plaPreheatHotendTemp);
EEPROM_READ_VAR(i,plaPreheatHPBTemp); EEPROM_READ_VAR(i,plaPreheatHPBTemp);
EEPROM_READ_VAR(i,plaPreheatFanSpeed); EEPROM_READ_VAR(i,plaPreheatFanSpeed);
EEPROM_READ_VAR(i,absPreheatHotendTemp); EEPROM_READ_VAR(i,absPreheatHotendTemp);
EEPROM_READ_VAR(i,absPreheatHPBTemp); EEPROM_READ_VAR(i,absPreheatHPBTemp);
EEPROM_READ_VAR(i,absPreheatFanSpeed); EEPROM_READ_VAR(i,absPreheatFanSpeed);
*/
EEPROM_READ_VAR(i,zprobe_zoffset); EEPROM_READ_VAR(i,zprobe_zoffset);
@ -293,7 +314,12 @@ void Config_RetrieveSettings()
EEPROM_READ_VAR(i,Kp); EEPROM_READ_VAR(i,Kp);
EEPROM_READ_VAR(i,Ki); EEPROM_READ_VAR(i,Ki);
EEPROM_READ_VAR(i,Kd); EEPROM_READ_VAR(i,Kd);
#ifndef DOGLCD #ifdef PIDTEMPBED
EEPROM_READ_VAR(i, bedKp);
EEPROM_READ_VAR(i, bedKi);
EEPROM_READ_VAR(i, bedKd);
#endif
#ifndef DOGLCD
int lcd_contrast; int lcd_contrast;
#endif #endif
EEPROM_READ_VAR(i,lcd_contrast); EEPROM_READ_VAR(i,lcd_contrast);

View File

@ -1,5 +1,6 @@
#ifndef CONFIG_STORE_H #ifndef CONFIG_STORE_H
#define CONFIG_STORE_H #define CONFIG_STORE_H
#define EEPROM_SETTINGS
#include "Configuration.h" #include "Configuration.h"
@ -19,4 +20,7 @@ FORCE_INLINE void Config_StoreSettings() {}
FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); } FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }
#endif #endif
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); }
#endif//CONFIG_STORE_H #endif//CONFIG_STORE_H

View File

@ -108,9 +108,10 @@ FORCE_INLINE void serialprintPGM(const char *str)
} }
} }
bool is_buffer_empty();
void get_command(); void get_command();
void process_commands(); void process_commands();
void ramming();
void manage_inactivity(bool ignore_stepper_queue=false); void manage_inactivity(bool ignore_stepper_queue=false);
@ -282,15 +283,21 @@ extern float retract_recover_length, retract_recover_length_swap, retract_recove
extern unsigned long starttime; extern unsigned long starttime;
extern unsigned long stoptime; extern unsigned long stoptime;
extern bool is_usb_printing; extern bool is_usb_printing;
extern bool homing_flag;
extern bool loading_flag;
extern unsigned int usb_printing_counter; extern unsigned int usb_printing_counter;
extern unsigned long kicktime;
extern unsigned long total_filament_used; extern unsigned long total_filament_used;
void save_statistics(unsigned long _total_filament_used, unsigned long _total_print_time); void save_statistics(unsigned long _total_filament_used, unsigned long _total_print_time);
extern unsigned int heating_status; extern unsigned int heating_status;
extern unsigned int status_number;
extern unsigned int heating_status_counter; extern unsigned int heating_status_counter;
extern bool custom_message; extern bool custom_message;
extern unsigned int custom_message_type; extern unsigned int custom_message_type;
extern unsigned int custom_message_state; extern unsigned int custom_message_state;
extern unsigned long PingTime;
// Handling multiple extruders pins // Handling multiple extruders pins
@ -312,3 +319,13 @@ extern void calculate_volumetric_multipliers();
// Similar to the default Arduino delay function, // Similar to the default Arduino delay function,
// but it keeps the background tasks running. // but it keeps the background tasks running.
extern void delay_keep_alive(int ms); extern void delay_keep_alive(int ms);
extern void check_babystep();
#ifdef DIS
void d_setup();
float d_ReadData();
void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -44,6 +44,34 @@ int SdFatUtil::FreeRam() {
} }
#endif // __arm #endif // __arm
void SdFatUtil::set_stack_guard()
{
char i = 0;
uint32_t *stack_guard;
stack_guard = (uint32_t*)&__bss_end;
//for (i = 0; i < 10; i++) {
*stack_guard = STACK_GUARD_TEST_VALUE;
//}
}
bool SdFatUtil::test_stack_integrity()
{
uint32_t* stack_guard = (uint32_t*)&__bss_end;
return (*stack_guard == STACK_GUARD_TEST_VALUE);
}
uint32_t SdFatUtil::get_stack_guard_test_value()
{
//static char i = 0;
uint32_t* stack_guard;
uint32_t output;
stack_guard = (uint32_t*)&__bss_end;
//output = *(stack_guard + i);
//i++;
output = *stack_guard;
return(output);
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/** %Print a string in flash memory. /** %Print a string in flash memory.
* *

View File

@ -39,6 +39,9 @@ namespace SdFatUtil {
void println_P( PGM_P str); void println_P( PGM_P str);
void SerialPrint_P(PGM_P str); void SerialPrint_P(PGM_P str);
void SerialPrintln_P(PGM_P str); void SerialPrintln_P(PGM_P str);
void set_stack_guard();
bool test_stack_integrity();
uint32_t get_stack_guard_test_value();
} }
using namespace SdFatUtil; // NOLINT using namespace SdFatUtil; // NOLINT

View File

@ -81,7 +81,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
if(lsAction==LS_SerialPrint) if(lsAction==LS_SerialPrint)
{ {
SERIAL_ECHO_START; SERIAL_ECHO_START;
SERIAL_ECHOLN(MSG_SD_CANT_OPEN_SUBDIR); SERIAL_ECHORPGM(MSG_SD_CANT_ENTER_SUBDIR);
SERIAL_ECHOLN(lfilename); SERIAL_ECHOLN(lfilename);
} }
} }
@ -501,6 +501,19 @@ void CardReader::write_command(char *buf)
} }
} }
#define CHUNK_SIZE 64
void CardReader::write_command_no_newline(char *buf)
{
file.write(buf, CHUNK_SIZE);
if (file.writeError)
{
SERIAL_ERROR_START;
SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE);
MYSERIAL.println("An error while writing to the SD Card.");
}
}
void CardReader::checkautostart(bool force) void CardReader::checkautostart(bool force)
{ {

View File

@ -14,6 +14,7 @@ public:
void initsd(); void initsd();
void write_command(char *buf); void write_command(char *buf);
void write_command_no_newline(char *buf);
//files auto[0-9].g on the sd card are performed in a row //files auto[0-9].g on the sd card are performed in a row
//this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset //this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset

View File

@ -4,7 +4,7 @@
use strict; use strict;
use warnings; use warnings;
my @langs = ("en","cz","it","es","pl"); my @langs = ("en","cz","it","es","pl","de");
sub parselang sub parselang
{ {

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,7 @@
#define LANG_ID_IT 2 #define LANG_ID_IT 2
#define LANG_ID_ES 3 #define LANG_ID_ES 3
#define LANG_ID_PL 4 #define LANG_ID_PL 4
#define LANG_ID_DE 5
// Language is not defined and it shall be selected from the menu. // Language is not defined and it shall be selected from the menu.
#define LANG_ID_FORCE_SELECTION 254 #define LANG_ID_FORCE_SELECTION 254
// Language is not defined on a virgin RAMBo board. // Language is not defined on a virgin RAMBo board.
@ -16,7 +17,7 @@
#define LANG_ID_DEFAULT LANG_ID_CZ #define LANG_ID_DEFAULT LANG_ID_CZ
// Number of languages available in the language table. // Number of languages available in the language table.
#define LANG_NUM 5 #define LANG_NUM 6
// Currectly active language selection. // Currectly active language selection.
extern unsigned char lang_selected; extern unsigned char lang_selected;
@ -104,12 +105,18 @@ extern const char* const MSG_CALIBRATE_BED_LANG_TABLE[LANG_NUM];
#define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE) #define MSG_CALIBRATE_BED LANG_TABLE_SELECT(MSG_CALIBRATE_BED_LANG_TABLE)
extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM]; extern const char* const MSG_CALIBRATE_BED_RESET_LANG_TABLE[LANG_NUM];
#define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE) #define MSG_CALIBRATE_BED_RESET LANG_TABLE_SELECT(MSG_CALIBRATE_BED_RESET_LANG_TABLE)
extern const char* const MSG_CALIBRATE_E_LANG_TABLE[LANG_NUM];
#define MSG_CALIBRATE_E LANG_TABLE_SELECT(MSG_CALIBRATE_E_LANG_TABLE)
extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM]; extern const char* const MSG_CARD_MENU_LANG_TABLE[LANG_NUM];
#define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE) #define MSG_CARD_MENU LANG_TABLE_SELECT(MSG_CARD_MENU_LANG_TABLE)
extern const char* const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM];
#define MSG_CHANGE_EXTR LANG_TABLE_SELECT(MSG_CHANGE_EXTR_LANG_TABLE)
extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM]; extern const char* const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM];
#define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE) #define MSG_CHANGE_SUCCESS LANG_TABLE_SELECT(MSG_CHANGE_SUCCESS_LANG_TABLE)
extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE) #define MSG_CHANGING_FILAMENT LANG_TABLE_SELECT(MSG_CHANGING_FILAMENT_LANG_TABLE)
extern const char* const MSG_CLEAN_NOZZLE_E_LANG_TABLE[LANG_NUM];
#define MSG_CLEAN_NOZZLE_E LANG_TABLE_SELECT(MSG_CLEAN_NOZZLE_E_LANG_TABLE)
extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1]; extern const char* const MSG_CNG_SDCARD_LANG_TABLE[1];
#define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0) #define MSG_CNG_SDCARD LANG_TABLE_SELECT_EXPLICIT(MSG_CNG_SDCARD_LANG_TABLE, 0)
extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1]; extern const char* const MSG_CONFIGURATION_VER_LANG_TABLE[1];
@ -118,6 +125,8 @@ extern const char* const MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE[LANG_NUM];
#define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE) #define MSG_CONFIRM_CARRIAGE_AT_THE_TOP LANG_TABLE_SELECT(MSG_CONFIRM_CARRIAGE_AT_THE_TOP_LANG_TABLE)
extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM]; extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE[LANG_NUM];
#define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE) #define MSG_CONFIRM_NOZZLE_CLEAN LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_LANG_TABLE)
extern const char* const MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE[LANG_NUM];
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ LANG_TABLE_SELECT(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ_LANG_TABLE)
extern const char* const MSG_CONTROL_LANG_TABLE[1]; extern const char* const MSG_CONTROL_LANG_TABLE[1];
#define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0) #define MSG_CONTROL LANG_TABLE_SELECT_EXPLICIT(MSG_CONTROL_LANG_TABLE, 0)
extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM]; extern const char* const MSG_COOLDOWN_LANG_TABLE[LANG_NUM];
@ -160,18 +169,38 @@ extern const char* const MSG_ERR_STOPPED_LANG_TABLE[1];
#define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0) #define MSG_ERR_STOPPED LANG_TABLE_SELECT_EXPLICIT(MSG_ERR_STOPPED_LANG_TABLE, 0)
extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1]; extern const char* const MSG_EXTERNAL_RESET_LANG_TABLE[1];
#define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0) #define MSG_EXTERNAL_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_EXTERNAL_RESET_LANG_TABLE, 0)
extern const char* const MSG_E_CAL_KNOB_LANG_TABLE[LANG_NUM];
#define MSG_E_CAL_KNOB LANG_TABLE_SELECT(MSG_E_CAL_KNOB_LANG_TABLE)
extern const char* const MSG_Enqueing_LANG_TABLE[1]; extern const char* const MSG_Enqueing_LANG_TABLE[1];
#define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0) #define MSG_Enqueing LANG_TABLE_SELECT_EXPLICIT(MSG_Enqueing_LANG_TABLE, 0)
extern const char* const MSG_FACTOR_LANG_TABLE[1]; extern const char* const MSG_FACTOR_LANG_TABLE[1];
#define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0) #define MSG_FACTOR LANG_TABLE_SELECT_EXPLICIT(MSG_FACTOR_LANG_TABLE, 0)
extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_FAN_SPEED_LANG_TABLE[LANG_NUM];
#define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE) #define MSG_FAN_SPEED LANG_TABLE_SELECT(MSG_FAN_SPEED_LANG_TABLE)
extern const char* const MSG_FARM_CARD_MENU_LANG_TABLE[1];
#define MSG_FARM_CARD_MENU LANG_TABLE_SELECT_EXPLICIT(MSG_FARM_CARD_MENU_LANG_TABLE, 0)
extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM]; extern const char* const MSG_FILAMENTCHANGE_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE) #define MSG_FILAMENTCHANGE LANG_TABLE_SELECT(MSG_FILAMENTCHANGE_LANG_TABLE)
extern const char* const MSG_FILAMENT_CLEAN_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_CLEAN LANG_TABLE_SELECT(MSG_FILAMENT_CLEAN_LANG_TABLE)
extern const char* const MSG_FILAMENT_LOADING_T0_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_LOADING_T0 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T0_LANG_TABLE)
extern const char* const MSG_FILAMENT_LOADING_T1_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_LOADING_T1 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T1_LANG_TABLE)
extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE)
extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM];
#define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE)
extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1];
#define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) #define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0)
extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; extern const char* const MSG_FILE_SAVED_LANG_TABLE[1];
#define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0) #define MSG_FILE_SAVED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_SAVED_LANG_TABLE, 0)
extern const char* const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM];
#define MSG_FIL_ADJUSTING LANG_TABLE_SELECT(MSG_FIL_ADJUSTING_LANG_TABLE)
extern const char* const MSG_FIL_LOADED_CHECK_LANG_TABLE[LANG_NUM];
#define MSG_FIL_LOADED_CHECK LANG_TABLE_SELECT(MSG_FIL_LOADED_CHECK_LANG_TABLE)
extern const char* const MSG_FIL_TUNING_LANG_TABLE[LANG_NUM];
#define MSG_FIL_TUNING LANG_TABLE_SELECT(MSG_FIL_TUNING_LANG_TABLE)
extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM]; extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE[LANG_NUM];
#define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE) #define MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 LANG_TABLE_SELECT(MSG_FIND_BED_OFFSET_AND_SKEW_LINE1_LANG_TABLE)
extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM]; extern const char* const MSG_FIND_BED_OFFSET_AND_SKEW_LINE2_LANG_TABLE[LANG_NUM];
@ -184,6 +213,8 @@ extern const char* const MSG_FLOW1_LANG_TABLE[1];
#define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0) #define MSG_FLOW1 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW1_LANG_TABLE, 0)
extern const char* const MSG_FLOW2_LANG_TABLE[1]; extern const char* const MSG_FLOW2_LANG_TABLE[1];
#define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0) #define MSG_FLOW2 LANG_TABLE_SELECT_EXPLICIT(MSG_FLOW2_LANG_TABLE, 0)
extern const char* const MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE[LANG_NUM];
#define MSG_FOLLOW_CALIBRATION_FLOW LANG_TABLE_SELECT(MSG_FOLLOW_CALIBRATION_FLOW_LANG_TABLE)
extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1]; extern const char* const MSG_FREE_MEMORY_LANG_TABLE[1];
#define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0) #define MSG_FREE_MEMORY LANG_TABLE_SELECT_EXPLICIT(MSG_FREE_MEMORY_LANG_TABLE, 0)
extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM]; extern const char* const MSG_HEATING_LANG_TABLE[LANG_NUM];
@ -224,6 +255,8 @@ extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1];
#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) #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]; extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_LANG_TABLE) #define MSG_LOAD_FILAMENT LANG_TABLE_SELECT(MSG_LOAD_FILAMENT_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]; extern const char* const MSG_M104_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0) #define MSG_M104_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M104_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1]; extern const char* const MSG_M105_INVALID_EXTRUDER_LANG_TABLE[1];
@ -242,6 +275,8 @@ extern const char* const MSG_M221_INVALID_EXTRUDER_LANG_TABLE[1];
#define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0) #define MSG_M221_INVALID_EXTRUDER LANG_TABLE_SELECT_EXPLICIT(MSG_M221_INVALID_EXTRUDER_LANG_TABLE, 0)
extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM]; extern const char* const MSG_MAIN_LANG_TABLE[LANG_NUM];
#define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE) #define MSG_MAIN LANG_TABLE_SELECT(MSG_MAIN_LANG_TABLE)
extern const char* const MSG_MARK_FIL_LANG_TABLE[LANG_NUM];
#define MSG_MARK_FIL LANG_TABLE_SELECT(MSG_MARK_FIL_LANG_TABLE)
extern const char* const MSG_MAX_LANG_TABLE[1]; extern const char* const MSG_MAX_LANG_TABLE[1];
#define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0) #define MSG_MAX LANG_TABLE_SELECT_EXPLICIT(MSG_MAX_LANG_TABLE, 0)
extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM]; extern const char* const MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1_LANG_TABLE[LANG_NUM];
@ -302,6 +337,8 @@ extern const char* const MSG_OK_LANG_TABLE[1];
#define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0) #define MSG_OK LANG_TABLE_SELECT_EXPLICIT(MSG_OK_LANG_TABLE, 0)
extern const char* const MSG_ON_LANG_TABLE[1]; extern const char* const MSG_ON_LANG_TABLE[1];
#define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0) #define MSG_ON LANG_TABLE_SELECT_EXPLICIT(MSG_ON_LANG_TABLE, 0)
extern const char* const MSG_PAPER_LANG_TABLE[LANG_NUM];
#define MSG_PAPER LANG_TABLE_SELECT(MSG_PAPER_LANG_TABLE)
extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_PAUSE_PRINT_LANG_TABLE[LANG_NUM];
#define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE) #define MSG_PAUSE_PRINT LANG_TABLE_SELECT(MSG_PAUSE_PRINT_LANG_TABLE)
extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM]; extern const char* const MSG_PICK_Z_LANG_TABLE[LANG_NUM];
@ -320,6 +357,8 @@ extern const char* const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM];
#define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE) #define MSG_PREHEAT_NOZZLE LANG_TABLE_SELECT(MSG_PREHEAT_NOZZLE_LANG_TABLE)
extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM];
#define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) #define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE)
extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1];
#define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINTER_DISCONNECTED_LANG_TABLE, 0)
extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM];
#define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE) #define MSG_PRINT_ABORTED LANG_TABLE_SELECT(MSG_PRINT_ABORTED_LANG_TABLE)
extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM]; extern const char* const MSG_PRUSA3D_LANG_TABLE[LANG_NUM];
@ -336,6 +375,8 @@ extern const char* const MSG_REFRESH_LANG_TABLE[1];
#define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0) #define MSG_REFRESH LANG_TABLE_SELECT_EXPLICIT(MSG_REFRESH_LANG_TABLE, 0)
extern const char* const MSG_RESEND_LANG_TABLE[1]; extern const char* const MSG_RESEND_LANG_TABLE[1];
#define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0) #define MSG_RESEND LANG_TABLE_SELECT_EXPLICIT(MSG_RESEND_LANG_TABLE, 0)
extern const char* const MSG_RESET_CALIBRATE_E_LANG_TABLE[1];
#define MSG_RESET_CALIBRATE_E LANG_TABLE_SELECT_EXPLICIT(MSG_RESET_CALIBRATE_E_LANG_TABLE, 0)
extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1]; extern const char* const MSG_RESTORE_FAILSAFE_LANG_TABLE[1];
#define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0) #define MSG_RESTORE_FAILSAFE LANG_TABLE_SELECT_EXPLICIT(MSG_RESTORE_FAILSAFE_LANG_TABLE, 0)
extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_RESUME_PRINT_LANG_TABLE[LANG_NUM];
@ -394,6 +435,8 @@ extern const char* const MSG_SELFTEST_CHECK_Y_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE) #define MSG_SELFTEST_CHECK_Y LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Y_LANG_TABLE)
extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_CHECK_Z_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE) #define MSG_SELFTEST_CHECK_Z LANG_TABLE_SELECT(MSG_SELFTEST_CHECK_Z_LANG_TABLE)
extern const char* const MSG_SELFTEST_COOLING_FAN_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_COOLING_FAN LANG_TABLE_SELECT(MSG_SELFTEST_COOLING_FAN_LANG_TABLE)
extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_ENDSTOP_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE) #define MSG_SELFTEST_ENDSTOP LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_LANG_TABLE)
extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_ENDSTOPS_LANG_TABLE[LANG_NUM];
@ -402,8 +445,16 @@ extern const char* const MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE) #define MSG_SELFTEST_ENDSTOP_NOTHIT LANG_TABLE_SELECT(MSG_SELFTEST_ENDSTOP_NOTHIT_LANG_TABLE)
extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_ERROR_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE) #define MSG_SELFTEST_ERROR LANG_TABLE_SELECT(MSG_SELFTEST_ERROR_LANG_TABLE)
extern const char* const MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_EXTRUDER_FAN LANG_TABLE_SELECT(MSG_SELFTEST_EXTRUDER_FAN_LANG_TABLE)
extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_FAILED_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE) #define MSG_SELFTEST_FAILED LANG_TABLE_SELECT(MSG_SELFTEST_FAILED_LANG_TABLE)
extern const char* const MSG_SELFTEST_FAN_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_FAN LANG_TABLE_SELECT(MSG_SELFTEST_FAN_LANG_TABLE)
extern const char* const MSG_SELFTEST_FAN_NO_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_FAN_NO LANG_TABLE_SELECT(MSG_SELFTEST_FAN_NO_LANG_TABLE)
extern const char* const MSG_SELFTEST_FAN_YES_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_FAN_YES LANG_TABLE_SELECT(MSG_SELFTEST_FAN_YES_LANG_TABLE)
extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE[LANG_NUM];
#define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE) #define MSG_SELFTEST_HEATERTHERMISTOR LANG_TABLE_SELECT(MSG_SELFTEST_HEATERTHERMISTOR_LANG_TABLE)
extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SELFTEST_MOTOR_LANG_TABLE[LANG_NUM];
@ -436,6 +487,8 @@ extern const char* const MSG_SOFTWARE_RESET_LANG_TABLE[1];
#define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0) #define MSG_SOFTWARE_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_SOFTWARE_RESET_LANG_TABLE, 0)
extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_SPEED_LANG_TABLE[LANG_NUM];
#define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE) #define MSG_SPEED LANG_TABLE_SELECT(MSG_SPEED_LANG_TABLE)
extern const char* const MSG_STACK_ERROR_LANG_TABLE[1];
#define MSG_STACK_ERROR LANG_TABLE_SELECT_EXPLICIT(MSG_STACK_ERROR_LANG_TABLE, 0)
extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM]; extern const char* const MSG_STATISTICS_LANG_TABLE[LANG_NUM];
#define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE) #define MSG_STATISTICS LANG_TABLE_SELECT(MSG_STATISTICS_LANG_TABLE)
extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_STATS_FILAMENTUSED_LANG_TABLE[LANG_NUM];
@ -472,6 +525,8 @@ extern const char* const MSG_TUNE_LANG_TABLE[LANG_NUM];
#define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE) #define MSG_TUNE LANG_TABLE_SELECT(MSG_TUNE_LANG_TABLE)
extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1]; extern const char* const MSG_UNKNOWN_COMMAND_LANG_TABLE[1];
#define MSG_UNKNOWN_COMMAND LANG_TABLE_SELECT_EXPLICIT(MSG_UNKNOWN_COMMAND_LANG_TABLE, 0) #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_FILAMENT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_UNLOAD_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE) #define MSG_UNLOAD_FILAMENT LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_LANG_TABLE)
extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM];
@ -486,6 +541,8 @@ extern const char* const MSG_VOLUMETRIC_ENABLED_LANG_TABLE[1];
#define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0) #define MSG_VOLUMETRIC_ENABLED LANG_TABLE_SELECT_EXPLICIT(MSG_VOLUMETRIC_ENABLED_LANG_TABLE, 0)
extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1]; extern const char* const MSG_VTRAV_MIN_LANG_TABLE[1];
#define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0) #define MSG_VTRAV_MIN LANG_TABLE_SELECT_EXPLICIT(MSG_VTRAV_MIN_LANG_TABLE, 0)
extern const char* const MSG_WAITING_TEMP_LANG_TABLE[LANG_NUM];
#define MSG_WAITING_TEMP LANG_TABLE_SELECT(MSG_WAITING_TEMP_LANG_TABLE)
extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM]; extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM];
#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) #define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE)
extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1];

View File

@ -88,7 +88,7 @@
#define MSG_PLEASE_WAIT "Prosim cekejte" #define MSG_PLEASE_WAIT "Prosim cekejte"
#define MSG_LOADING_COLOR "Cisteni barvy" #define MSG_LOADING_COLOR "Cisteni barvy"
#define MSG_CHANGE_SUCCESS "Zmena uspesna!" #define MSG_CHANGE_SUCCESS "Zmena uspesna!"
#define MSG_PRESS "A stisknete tlacitko" #define MSG_PRESS "a stisknete tlacitko"
#define MSG_INSERT_FILAMENT "Vlozte filament" #define MSG_INSERT_FILAMENT "Vlozte filament"
#define MSG_CHANGING_FILAMENT "Vymena filamentu!" #define MSG_CHANGING_FILAMENT "Vymena filamentu!"
@ -171,6 +171,12 @@
#define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit" #define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit"
#define MSG_SELFTEST_OK "Self test OK" #define MSG_SELFTEST_OK "Self test OK"
#define(length=20) MSG_SELFTEST_FAN "Test ventilatoru";
#define(length=20) MSG_SELFTEST_COOLING_FAN "Predni tiskovy vent?";
#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Levy vent na trysce?";
#define MSG_SELFTEST_FAN_YES "Toci se";
#define MSG_SELFTEST_FAN_NO "Netoci se";
#define MSG_STATS_TOTALFILAMENT "Filament celkem :" #define MSG_STATS_TOTALFILAMENT "Filament celkem :"
#define MSG_STATS_TOTALPRINTTIME "Celkovy cas :" #define MSG_STATS_TOTALPRINTTIME "Celkovy cas :"
#define MSG_STATS_FILAMENTUSED "Filament : " #define MSG_STATS_FILAMENTUSED "Filament : "
@ -209,9 +215,9 @@
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen." #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibrace XYZ selhala. Nahlednete do manualu." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibrace XYZ selhala. Nahlednete do manualu."
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibrace XYZ v poradku. X/Y osy jsou kolme." #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibrace XYZ v poradku. X/Y osy mirne zkosene." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "X/Y osy jsou silne zkosene. Zkoseni bude automaticky vyrovnano pri tisku." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
@ -225,7 +231,8 @@
#define MSG_NEW_FIRMWARE_AVAILABLE "Vysla nova verze firmware:" #define MSG_NEW_FIRMWARE_AVAILABLE "Vysla nova verze firmware:"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosim aktualizujte." #define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosim aktualizujte."
#define MSG_BABYSTEP_Z_NOT_SET "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace." #define MSG_FOLLOW_CALIBRATION_FLOW "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
#define MSG_BABYSTEP_Z_NOT_SET "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
#define MSG_BED_CORRECTION_MENU "Korekce podlozky" #define MSG_BED_CORRECTION_MENU "Korekce podlozky"
#define MSG_BED_CORRECTION_LEFT "Vlevo [um]" #define MSG_BED_CORRECTION_LEFT "Vlevo [um]"
@ -234,5 +241,27 @@
#define MSG_BED_CORRECTION_REAR "Vzadu [um]" #define MSG_BED_CORRECTION_REAR "Vzadu [um]"
#define MSG_BED_CORRECTION_RESET "Reset" #define MSG_BED_CORRECTION_RESET "Reset"
#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling"
#define MSG_MENU_CALIBRATION "Kalibrace" #define MSG_MENU_CALIBRATION "Kalibrace"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]"
#define MSG_LOOSE_PULLEY "Uvolnena remenicka"
#define MSG_FILAMENT_LOADING_T0 "Vložte filament do extruderu 1. Potvrdte tlacitkem."
#define MSG_FILAMENT_LOADING_T1 "Vložte filament do extruderu 2. Potvrdte tlacitkem."
#define MSG_FILAMENT_LOADING_T2 "Vložte filament do extruderu 3. Potvrdte tlacitkem."
#define MSG_FILAMENT_LOADING_T3 "Vložte filament do extruderu 4. Potvrdte tlacitkem."
#define MSG_CHANGE_EXTR "Zmenit extruder"
#define MSG_FIL_LOADED_CHECK "Je filament zaveden?"
#define MSG_FIL_TUNING "Otacenim tlacitka doladte pozici filamentu."
#define MSG_FIL_ADJUSTING "Probiha srovnani filamentu. Prosim cekejte."
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem."
#define MSG_CALIBRATE_E "Kalibrovat E"
#define MSG_E_CAL_KNOB "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."
#define MSG_MARK_FIL "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem."
#define MSG_CLEAN_NOZZLE_E "E kalibrace ukoncena. Prosim ocistete trysku. Po te potvrdte tlacitkem."
#define MSG_WAITING_TEMP "Cekani na zchladnuti trysky a podlozky."
#define MSG_FILAMENT_CLEAN "Je barva cista?"
#define MSG_UNLOADING_FILAMENT "Vysouvam filament"
#define MSG_PAPER "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, vypnete tiskarnu."

View File

@ -27,7 +27,7 @@
#define MSG_NOZZLE1 "Nozzle2" #define MSG_NOZZLE1 "Nozzle2"
#define MSG_NOZZLE2 "Nozzle3" #define MSG_NOZZLE2 "Nozzle3"
#define MSG_BED "Bed" #define MSG_BED "Bed"
#define MSG_FAN_SPEED "Fan speed" #define(length=14) MSG_FAN_SPEED "Fan speed"
#define MSG_FLOW "Flow" #define MSG_FLOW "Flow"
#define MSG_FLOW0 "Flow 0" #define MSG_FLOW0 "Flow 0"
#define MSG_FLOW1 "Flow 1" #define MSG_FLOW1 "Flow 1"
@ -64,7 +64,7 @@
#define MSG_BABYSTEP_X "Babystep X" #define MSG_BABYSTEP_X "Babystep X"
#define MSG_BABYSTEP_Y "Babystep Y" #define MSG_BABYSTEP_Y "Babystep Y"
#define MSG_BABYSTEP_Z "Live adjust Z" #define MSG_BABYSTEP_Z "Live adjust Z"
#define MSG_ADJUSTZ "Auto adjust Z ?" #define MSG_ADJUSTZ "Auto adjust Z?"
#define MSG_PICK_Z "Pick print" #define MSG_PICK_Z "Pick print"
#define MSG_SETTINGS "Settings" #define MSG_SETTINGS "Settings"
@ -85,7 +85,7 @@
#define(length=20) MSG_PLEASE_WAIT "Please wait" #define(length=20) MSG_PLEASE_WAIT "Please wait"
#define MSG_LOADING_COLOR "Loading color" #define MSG_LOADING_COLOR "Loading color"
#define MSG_CHANGE_SUCCESS "Change success!" #define MSG_CHANGE_SUCCESS "Change success!"
#define(length=20) MSG_PRESS "And press the knob" #define(length=20) MSG_PRESS "and press the knob"
#define(length=20) MSG_INSERT_FILAMENT "Insert filament" #define(length=20) MSG_INSERT_FILAMENT "Insert filament"
#define(length=20) MSG_CHANGING_FILAMENT "Changing filament!" #define(length=20) MSG_CHANGING_FILAMENT "Changing filament!"
@ -164,6 +164,14 @@
#define MSG_SELFTEST_ENDSTOP "Endstop" #define MSG_SELFTEST_ENDSTOP "Endstop"
#define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit" #define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit"
#define MSG_SELFTEST_OK "Self test OK" #define MSG_SELFTEST_OK "Self test OK"
#define MSG_LOOSE_PULLEY "Loose pulley"
#define(length=20) MSG_SELFTEST_FAN "Fan test";
#define(length=20) MSG_SELFTEST_COOLING_FAN "Front print fan?";
#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Left hotend fan?";
#define MSG_SELFTEST_FAN_YES "Spinning";
#define MSG_SELFTEST_FAN_NO "Not spinning";
#define(length=20) MSG_STATS_TOTALFILAMENT "Total filament :" #define(length=20) MSG_STATS_TOTALFILAMENT "Total filament :"
#define(length=20) MSG_STATS_TOTALPRINTTIME "Total print time :" #define(length=20) MSG_STATS_TOTALPRINTTIME "Total print time :"
#define(length=20) MSG_STATS_FILAMENTUSED "Filament used: " #define(length=20) MSG_STATS_FILAMENTUSED "Filament used: "
@ -203,9 +211,9 @@
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ calibration failed. Bed calibration point was not found." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "XYZ calibration failed. Bed calibration point was not found."
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ calibration failed. Please consult the manual." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "XYZ calibration failed. Please consult the manual."
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ calibration ok. X/Y axes are perpendicular." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ calibration all right. X/Y axes are slightly skewed." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "X/Y skewed severly. Skew will be corrected automatically." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "XYZ calibration all right. Skew will be corrected automatically."
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ calibration failed. Left front calibration point not reachable." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "XYZ calibration failed. Left front calibration point not reachable."
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ calibration failed. Right front calibration point not reachable." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "XYZ calibration failed. Right front calibration point not reachable."
#define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ calibration failed. Front calibration points not reachable." #define(length=20,lines=8) MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "XYZ calibration failed. Front calibration points not reachable."
@ -220,7 +228,31 @@
#define(length=20,lines=2) MSG_NEW_FIRMWARE_AVAILABLE "New firmware version available:" #define(length=20,lines=2) MSG_NEW_FIRMWARE_AVAILABLE "New firmware version available:"
#define(length=20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Please upgrade." #define(length=20) MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Please upgrade."
#define(length=20,lines=8) MSG_BABYSTEP_Z_NOT_SET "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." #define(length=20,lines=8) MSG_FOLLOW_CALIBRATION_FLOW "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
#define(length=20,lines=12) MSG_BABYSTEP_Z_NOT_SET "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
#define(length=20, lines=4) MSG_FILAMENT_LOADING_T0 "Insert filament into extruder 1. Click when done."
#define(length=20, lines=4) MSG_FILAMENT_LOADING_T1 "Insert filament into extruder 2. Click when done."
#define(length=20, lines=4) MSG_FILAMENT_LOADING_T2 "Insert filament into extruder 3. Click when done."
#define(length=20, lines=4) MSG_FILAMENT_LOADING_T3 "Insert filament into extruder 4. Click when done."
#define(length=20, lines=1) MSG_CHANGE_EXTR "Change extruder"
#define(length=20, lines=1) MSG_FIL_LOADED_CHECK "Is filament loaded?"
#define(length=20, lines=2) MSG_FIL_TUNING "Rotate the knob to adjust filament."
#define(length=20, lines=4) MSG_FIL_ADJUSTING "Adjusting filaments. Please wait."
#define(length=20,lines=8) MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filaments are now adjusted. Please clean the nozzle for calibration. Click when done."
#define(length=20, lines=4) MSG_STACK_ERROR "Error - static memory has been overwritten"
#define(length=20, lines=1) MSG_CALIBRATE_E "Calibrate E"
//#define(length=20, lines=1) MSG_RESET_CALIBRATE_E "Reset E Cal."
#define(length=20, lines=8) MSG_E_CAL_KNOB "Rotate knob until mark reaches extruder body. Click when done."
//#define(length=20, lines=1) MSG_FARM_CARD_MENU "Farm mode print"
#define(length=20, lines=8) MSG_MARK_FIL "Mark filament 100mm from extruder body. Click when done."
#define(length=20, lines=8) MSG_CLEAN_NOZZLE_E "E calibration finished. Please clean the nozzle. Click when done."
#define(length=20, lines=3) MSG_WAITING_TEMP "Waiting for nozzle and bed cooling"
#define(length=20, lines=2) MSG_FILAMENT_CLEAN "Is color clear?"
#define(lenght=20) MSG_UNLOADING_FILAMENT "Unloading filament"
#define(length=20, lines=8) MSG_PAPER "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
#define MSG_BED_CORRECTION_MENU "Bed level correct" #define MSG_BED_CORRECTION_MENU "Bed level correct"
#define MSG_BED_CORRECTION_LEFT "Left side um" #define MSG_BED_CORRECTION_LEFT "Left side um"
@ -233,3 +265,4 @@
#define MSG_MENU_CALIBRATION "Calibration" #define MSG_MENU_CALIBRATION "Calibration"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]" #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_ON "SD card [FlshAir]"
#define MSG_PRINTER_DISCONNECTED "Printer disconnected"

View File

@ -6,8 +6,8 @@
* *
*/ */
#define WELCOME_MSG CUSTOM_MENDEL_NAME " lista" #define WELCOME_MSG CUSTOM_MENDEL_NAME " prep."
#define MSG_SD_INSERTED "Tarjeta colocada" #define MSG_SD_INSERTED "Tarjeta insertada"
#define MSG_SD_REMOVED "Tarjeta retirada" #define MSG_SD_REMOVED "Tarjeta retirada"
#define MSG_MAIN "Menu principal" #define MSG_MAIN "Menu principal"
#define MSG_DISABLE_STEPPERS "Apagar motores" #define MSG_DISABLE_STEPPERS "Apagar motores"
@ -17,11 +17,11 @@
#define MSG_MOVE_X "Mover X" #define MSG_MOVE_X "Mover X"
#define MSG_MOVE_Y "Mover Y" #define MSG_MOVE_Y "Mover Y"
#define MSG_MOVE_Z "Mover Z" #define MSG_MOVE_Z "Mover Z"
#define MSG_MOVE_E "Extrusor" #define MSG_MOVE_E "Extruir"
#define MSG_SPEED "Velocidad" #define MSG_SPEED "Velocidad"
#define MSG_NOZZLE "Fusor" #define MSG_NOZZLE "Boquilla"
#define MSG_BED "Base" #define MSG_BED "Base"
#define MSG_FAN_SPEED "Ventilador" #define MSG_FAN_SPEED "Velocidad Vent."
#define MSG_FLOW "Flujo" #define MSG_FLOW "Flujo"
#define MSG_TEMPERATURE "Temperatura" #define MSG_TEMPERATURE "Temperatura"
#define MSG_WATCH "Monitorizar" #define MSG_WATCH "Monitorizar"
@ -29,49 +29,49 @@
#define MSG_PAUSE_PRINT "Pausar impresion" #define MSG_PAUSE_PRINT "Pausar impresion"
#define MSG_RESUME_PRINT "Reanudar impres." #define MSG_RESUME_PRINT "Reanudar impres."
#define MSG_STOP_PRINT "Detener impresion" #define MSG_STOP_PRINT "Detener impresion"
#define MSG_CARD_MENU "Menu de SD" #define MSG_CARD_MENU "Menu tarjeta SD"
#define MSG_NO_CARD "No hay tarjeta SD" #define MSG_NO_CARD "No hay tarjeta SD"
#define MSG_DWELL "Reposo..." #define MSG_DWELL "En espera"
#define MSG_USERWAIT "Esperando ordenes" #define MSG_USERWAIT "Esperando ordenes"
#define MSG_RESUMING "Resumiendo impre." #define MSG_RESUMING "Resumiendo impresion"
#define MSG_PRINT_ABORTED "Print aborted" #define MSG_PRINT_ABORTED "Impresion cancelada"
#define MSG_NO_MOVE "Sin movimiento" #define MSG_NO_MOVE "Sin movimiento"
#define MSG_KILLED "PARADA DE EMERG." #define MSG_KILLED "PARADA DE EMERGENCIA"
#define MSG_STOPPED "PARADA" #define MSG_STOPPED "PARADA"
#define MSG_FILAMENTCHANGE "Cambiar filamento" #define MSG_FILAMENTCHANGE "Cambiar filamento"
#define MSG_BABYSTEP_Z "Micropaso Z" #define MSG_BABYSTEP_Z "Micropaso Eje Z"
#define MSG_ADJUSTZ "Auto Micropaso Z?" #define MSG_ADJUSTZ "Ajustar Eje Z"
#define MSG_PICK_Z "Vyberte vytisk" #define MSG_PICK_Z "Esc. Modelo Adecuado"
#define MSG_SETTINGS "Ajuste" #define MSG_SETTINGS "Configuracion"
#define MSG_PREHEAT "Precalentar" #define MSG_PREHEAT "Precalentar"
#define MSG_UNLOAD_FILAMENT "Sacar filamento" #define MSG_UNLOAD_FILAMENT "Soltar filamento"
#define MSG_LOAD_FILAMENT "Poner filamento" #define MSG_LOAD_FILAMENT "Introducir filam."
#define MSG_ERROR "ERROR:" #define MSG_ERROR "ERROR:"
#define MSG_PREHEAT_NOZZLE "Precal. extrusor!" #define MSG_PREHEAT_NOZZLE "Precalentar extrusor"
#define MSG_SUPPORT "Support" #define MSG_SUPPORT "Soporte"
#define MSG_CORRECTLY "Cambiado correc.?" #define MSG_CORRECTLY "Cambiado correct.?"
#define MSG_YES "Si" #define MSG_YES "Si"
#define MSG_NO "No" #define MSG_NO "No"
#define MSG_NOT_LOADED "Fil. no cargado" #define MSG_NOT_LOADED "Fil. no introducido"
#define MSG_NOT_COLOR "Color no claro" #define MSG_NOT_COLOR "Color no homogeneo"
#define MSG_LOADING_FILAMENT "Cargando fil." #define MSG_LOADING_FILAMENT "Introduciendo filam."
#define MSG_PLEASE_WAIT "Espera" #define MSG_PLEASE_WAIT "Por Favor Esperar"
#define MSG_LOADING_COLOR "Cargando color" #define MSG_LOADING_COLOR "Cambiando color"
#define MSG_CHANGE_SUCCESS "Cambiar bien!" #define MSG_CHANGE_SUCCESS "Cambio correcto"
#define MSG_PRESS "Y pulse el mando" #define MSG_PRESS "Pulsar el mando"
#define MSG_INSERT_FILAMENT "Inserta filamento" #define MSG_INSERT_FILAMENT "Introducir filamento"
#define MSG_CHANGING_FILAMENT "Cambiando fil.!" #define MSG_CHANGING_FILAMENT "Cambiando filamento"
#define MSG_SILENT_MODE_ON "Modo [silencio]" #define MSG_SILENT_MODE_ON "Modo [silencio]"
#define MSG_SILENT_MODE_OFF "Modo [mas fuerza]" #define MSG_SILENT_MODE_OFF "Modo [rend.pleno]"
#define MSG_REBOOT "Reiniciar la imp." #define MSG_REBOOT "Reiniciar impresora"
#define MSG_TAKE_EFFECT "para tomar efecto" #define MSG_TAKE_EFFECT " para aplicar cambios"
#define MSG_HEATING "Calentando..." #define MSG_HEATING "Calentando..."
#define MSG_HEATING_COMPLETE "Calentando listo." #define MSG_HEATING_COMPLETE "Calentamiento final."
#define MSG_BED_HEATING "Base Calentando" #define MSG_BED_HEATING "Calentando Base"
#define MSG_BED_DONE "Base listo." #define MSG_BED_DONE "Base preparada"
#define MSG_LANGUAGE_NAME "Espanol" #define MSG_LANGUAGE_NAME "Espanol"
#define MSG_LANGUAGE_SELECT "Cambia la lengua " #define MSG_LANGUAGE_SELECT "Cambiae el idioma"
#define MSG_PRUSA3D "prusa3d.com" #define MSG_PRUSA3D "prusa3d.com"
#define MSG_PRUSA3D_FORUM "forum.prusa3d.com" #define MSG_PRUSA3D_FORUM "forum.prusa3d.com"
#define MSG_PRUSA3D_HOWTO "howto.prusa3d.com" #define MSG_PRUSA3D_HOWTO "howto.prusa3d.com"
@ -166,6 +166,12 @@
#define MSG_SELFTEST_ENDSTOP_NOTHIT "Tope fin. no toc." #define MSG_SELFTEST_ENDSTOP_NOTHIT "Tope fin. no toc."
#define MSG_SELFTEST_OK "Self test OK" #define MSG_SELFTEST_OK "Self test OK"
#define(length=20) MSG_SELFTEST_FAN "Test del ventilador";
#define(length=20) MSG_SELFTEST_COOLING_FAN "Vent. al frente?";
#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Vent. en la izg?";
#define MSG_SELFTEST_FAN_YES "Ventilador gira";
#define MSG_SELFTEST_FAN_NO "Ventilador no gira";
#define MSG_STATS_TOTALFILAMENT "Filamento total:" #define MSG_STATS_TOTALFILAMENT "Filamento total:"
#define MSG_STATS_TOTALPRINTTIME "Tiempo total :" #define MSG_STATS_TOTALPRINTTIME "Tiempo total :"
#define MSG_STATS_FILAMENTUSED "Filamento : " #define MSG_STATS_FILAMENTUSED "Filamento : "
@ -202,9 +208,9 @@
#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_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_FITTING_FAILED "Calibracion XYZ fallada. Consultar el manual por favor."
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares." #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibracion XYZ conseguida. Ejes X/Y un poco torcidos." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "X/Y muy distorsionado. La distorsion sera corregida automaticamente." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibracion XYZ fallad. Punto delantero izquierdo no alcanzable."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibracion XYZ fallad. Punto delantero derecho no alcanzable." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibracion XYZ fallad. Punto delantero derecho no alcanzable."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibracion XYZ fallad. Punto delanteros no alcanzables." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibracion XYZ fallad. Punto delanteros no alcanzables."
@ -216,7 +222,8 @@
#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset." #define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."
#define MSG_NEW_FIRMWARE_AVAILABLE "Nuevo firmware disponible:" #define MSG_NEW_FIRMWARE_AVAILABLE "Nuevo firmware disponible:"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Actualizar por favor" #define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Actualizar por favor"
#define MSG_BABYSTEP_Z_NOT_SET "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow." #define MSG_FOLLOW_CALIBRATION_FLOW "Impresora no esta calibrada todavia. Por favor usar el manual, el capitulo First steps, seleccion Calibration flow."
#define MSG_BABYSTEP_Z_NOT_SET "Distancia entre la punta de la boquilla y la superficie de la cama no fijada aun. Por favor siga el manual, capitulo First steps, seccion First layer calibration."
#define MSG_BED_CORRECTION_MENU "Corr. de la cama" #define MSG_BED_CORRECTION_MENU "Corr. de la cama"
#define MSG_BED_CORRECTION_LEFT "Izquierda [um]" #define MSG_BED_CORRECTION_LEFT "Izquierda [um]"
#define MSG_BED_CORRECTION_RIGHT "Derecha [um]" #define MSG_BED_CORRECTION_RIGHT "Derecha [um]"
@ -224,4 +231,26 @@
#define MSG_BED_CORRECTION_REAR "Atras [um]" #define MSG_BED_CORRECTION_REAR "Atras [um]"
#define MSG_BED_CORRECTION_RESET "Reset" #define MSG_BED_CORRECTION_RESET "Reset"
#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling"
#define MSG_MENU_CALIBRATION "Calibracion" #define MSG_MENU_CALIBRATION "Calibracion"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]"
#define MSG_LOOSE_PULLEY "Polea suelta"
#define MSG_FILAMENT_LOADING_T0 "Insertar filamento en el extrusor 1. Haga clic una vez terminado."
#define MSG_FILAMENT_LOADING_T1 "Insertar filamento en el extrusor 2. Haga clic una vez terminado."
#define MSG_FILAMENT_LOADING_T2 "Insertar filamento en el extrusor 3. Haga clic una vez terminado."
#define MSG_FILAMENT_LOADING_T3 "Insertar filamento en el extrusor 4. Haga clic una vez terminado."
#define MSG_CHANGE_EXTR "Cambiar extrusor."
#define MSG_FIL_LOADED_CHECK "Esta cargado el filamento?"
#define MSG_FIL_TUNING "Rotar el mando para ajustar el filamento."
#define MSG_FIL_ADJUSTING "Ajustando filamentos. Esperar por favor."
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamentos ajustados. Limpie la boquilla para calibracion. Haga clic una vez terminado."
#define MSG_CALIBRATE_E "Calibrar E"
#define MSG_E_CAL_KNOB "Rotar el mando hasta que la marca llegue al cuerpo del extrusor. Haga clic una vez terminado."
#define MSG_MARK_FIL "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."
#define MSG_CLEAN_NOZZLE_E "E calibrado. Limpiar la boquilla. Haga clic una vez terminado."
#define MSG_WAITING_TEMP "Esperando enfriamiento de la cama y del extrusor."
#define MSG_FILAMENT_CLEAN "Es el nuevo color nitido?"
#define MSG_UNLOADING_FILAMENT "Soltando filamento"
#define MSG_PAPER "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."

View File

@ -1,4 +1,4 @@
#define WELCOME_MSG CUSTOM_MENDEL_NAME "pronta." #define WELCOME_MSG CUSTOM_MENDEL_NAME " pronta."
#define MSG_SD_INSERTED "SD inserita" #define MSG_SD_INSERTED "SD inserita"
#define MSG_SD_REMOVED "SD rimossa" #define MSG_SD_REMOVED "SD rimossa"
#define MSG_MAIN "Menu principale" #define MSG_MAIN "Menu principale"
@ -22,7 +22,7 @@
#define MSG_NOZZLE1 "Nozzle2" #define MSG_NOZZLE1 "Nozzle2"
#define MSG_NOZZLE2 "Nozzle3" #define MSG_NOZZLE2 "Nozzle3"
#define MSG_BED "Letto" #define MSG_BED "Letto"
#define MSG_FAN_SPEED "Velocita ventola" #define MSG_FAN_SPEED "Velocita vent."
#define MSG_FLOW "Flusso" #define MSG_FLOW "Flusso"
#define MSG_TEMPERATURE "Temperatura" #define MSG_TEMPERATURE "Temperatura"
#define MSG_MOTION "Motion" #define MSG_MOTION "Motion"
@ -64,27 +64,27 @@
#define MSG_SUPPORT "Support" #define MSG_SUPPORT "Support"
#define MSG_YES "Si" #define MSG_YES "Si"
#define MSG_NO "No" #define MSG_NO "No"
#define MSG_NOT_LOADED "Fil. no cargado" #define MSG_NOT_LOADED "Fil. non caricato"
#define MSG_NOT_COLOR "Color no claro" #define MSG_NOT_COLOR "Colore non puro"
#define MSG_LOADING_COLOR "Cargando color" #define MSG_LOADING_COLOR "Caricando colore"
#define MSG_CHANGE_SUCCESS "Cambia. riuscito!" #define MSG_CHANGE_SUCCESS "Cambio riuscito!"
#define MSG_PRESS "Y pulse el mando" #define MSG_PRESS "e cliccare manopola"
#define MSG_INSERT_FILAMENT "Inserire filamento" #define MSG_INSERT_FILAMENT "Inserire filamento"
#define MSG_CHANGING_FILAMENT "Mutevole fil.!" #define MSG_CHANGING_FILAMENT "Cambiando filam."
#define MSG_PLEASE_WAIT "Aspetta" #define MSG_PLEASE_WAIT "Aspetta"
#define MSG_PREHEAT_NOZZLE "Preris. ugello!" #define MSG_PREHEAT_NOZZLE "Preris. ugello!"
#define MSG_HEATING_COMPLETE "Riscaldamento fatto." #define MSG_HEATING_COMPLETE "Riscald. completo"
#define MSG_BED_HEATING "Piatto riscaldam." #define MSG_BED_HEATING "Riscald. letto"
#define MSG_BED_DONE "Piatto fatto." #define MSG_BED_DONE "Piatto fatto."
#define MSG_ERROR "ERROR:" #define MSG_ERROR "ERRORE:"
#define MSG_CORRECTLY "Cambiato corr.?" #define MSG_CORRECTLY "Cambiato corr.?"
#define MSG_LOADING_FILAMENT "Cargando fil." #define MSG_LOADING_FILAMENT "Caricando filam."
#define MSG_UNLOAD_FILAMENT "Scarica filamento" #define MSG_UNLOAD_FILAMENT "Scarica filamento"
#define MSG_LOAD_FILAMENT "Carica filamento" #define MSG_LOAD_FILAMENT "Carica filamento"
#define MSG_SILENT_MODE_ON "Modo [silenzioso]" #define MSG_SILENT_MODE_ON "Modo [silenzioso]"
#define MSG_SILENT_MODE_OFF "Mode [prestante]" #define MSG_SILENT_MODE_OFF "Mode [forte]"
#define MSG_REBOOT "Riavvia stampante" #define MSG_REBOOT "Riavvia stampante"
#define MSG_TAKE_EFFECT " per attualizzare" #define MSG_TAKE_EFFECT " per attualizzare"
@ -151,6 +151,13 @@
#define MSG_SELFTEST_ENDSTOP "Finecorsa" #define MSG_SELFTEST_ENDSTOP "Finecorsa"
#define MSG_SELFTEST_ENDSTOP_NOTHIT "Finec. fuori por." #define MSG_SELFTEST_ENDSTOP_NOTHIT "Finec. fuori por."
#define MSG_SELFTEST_OK "Autotest OK" #define MSG_SELFTEST_OK "Autotest OK"
#define(length=20) MSG_SELFTEST_FAN "Prova del ventilator";
#define(length=20) MSG_SELFTEST_COOLING_FAN "Vent di stampa ant.?";
#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Vent SX sull'ugello?";
#define MSG_SELFTEST_FAN_YES "Gira";
#define MSG_SELFTEST_FAN_NO "Non si gira";
#define MSG_STATS_TOTALFILAMENT "Filamento tot:" #define MSG_STATS_TOTALFILAMENT "Filamento tot:"
#define MSG_STATS_TOTALPRINTTIME "Tempo stampa tot:" #define MSG_STATS_TOTALPRINTTIME "Tempo stampa tot:"
#define MSG_STATS_FILAMENTUSED "Filamento usato:" #define MSG_STATS_FILAMENTUSED "Filamento usato:"
@ -192,9 +199,9 @@
#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_POINT_NOT_FOUND "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale."
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari." #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibrazione XYZ compiuta. Gli assi X/Y sono leggermente distorti." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "X/Y fortemente distorto. La distorsione verra' corretta automaticamente." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibrazione XYZ fallita. Punti anteriori non raggiungibili." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
@ -209,14 +216,36 @@
#define MSG_NEW_FIRMWARE_AVAILABLE "Nuova versione del firmware disponibile" #define MSG_NEW_FIRMWARE_AVAILABLE "Nuova versione del firmware disponibile"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prega aggiorna." #define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prega aggiorna."
#define MSG_BABYSTEP_Z_NOT_SET "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione." #define MSG_FOLLOW_CALIBRATION_FLOW "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."
#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_MENU "Correz. liv.letto"
#define MSG_BED_CORRECTION_LEFT "Lato sinistro um" #define MSG_BED_CORRECTION_LEFT "Lato sinistro"
#define MSG_BED_CORRECTION_RIGHT "Lato destro um" #define MSG_BED_CORRECTION_RIGHT "Lato destro"
#define MSG_BED_CORRECTION_FRONT "Lato ateriore um" #define MSG_BED_CORRECTION_FRONT "Lato ateriore"
#define MSG_BED_CORRECTION_REAR "Lato posteriore" #define MSG_BED_CORRECTION_REAR "Lato posteriore"
#define MSG_BED_CORRECTION_RESET "Reset" #define MSG_BED_CORRECTION_RESET "Reset"
#define MSG_MESH_BED_LEVELING "Mesh livel. letto" #define MSG_MESH_BED_LEVELING "Mesh livel. letto"
#define MSG_MENU_CALIBRATION "Calibrazione" #define MSG_MENU_CALIBRATION "Calibrazione"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]"
#define MSG_LOOSE_PULLEY "Puleggia lenta"
#define MSG_FILAMENT_LOADING_T0 "Inserire filamento nell'estrusore 1. Click per continuare."
#define MSG_FILAMENT_LOADING_T1 "Inserire filamento nell'estrusore 2. Click per continuare."
#define MSG_FILAMENT_LOADING_T2 "Inserire filamento nell'estrusore 3. Click per continuare."
#define MSG_FILAMENT_LOADING_T3 "Inserire filamento nell'estrusore 4. Click per continuare."
#define MSG_CHANGE_EXTR "Cambio estrusore."
#define MSG_FIL_LOADED_CHECK "Filamento caricato?"
#define MSG_FIL_TUNING "Girare la manopola per regolare il filamento"
#define MSG_FIL_ADJUSTING "Filamento in fase di regolazione. Attendere prego."
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "I filamenti sono regolati. Si prega di pulire l'ugello per la calibrazione. Click per continuare."
#define MSG_CALIBRATE_E "Calibra E"
#define MSG_E_CAL_KNOB "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."
#define MSG_MARK_FIL "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."
#define MSG_CLEAN_NOZZLE_E "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."
#define MSG_WAITING_TEMP "In attesa del raffreddamento della testina e del piatto"
#define MSG_FILAMENT_CLEAN "Il colore e' nitido?"
#define MSG_UNLOADING_FILAMENT "Rilasc. filamento"
#define MSG_PAPER "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."

View File

@ -64,7 +64,7 @@
#define MSG_SILENT_MODE_ON "Mod [cichy]" #define MSG_SILENT_MODE_ON "Mod [cichy]"
#define MSG_SILENT_MODE_OFF "Mod [w wydajnosc]" #define MSG_SILENT_MODE_OFF "Mod [w wydajnosc]"
#define MSG_REBOOT "Restart drukarki" #define MSG_REBOOT "Restart drukarki"
#define MSG_TAKE_EFFECT "wprow. zmian" #define MSG_TAKE_EFFECT " wprow. zmian"
#define MSG_HEATING "Grzanie..." #define MSG_HEATING "Grzanie..."
#define MSG_HEATING_COMPLETE "Grzanie OK." #define MSG_HEATING_COMPLETE "Grzanie OK."
#define MSG_BED_HEATING "Grzanie stolika.." #define MSG_BED_HEATING "Grzanie stolika.."
@ -172,6 +172,12 @@
#define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit" #define MSG_SELFTEST_ENDSTOP_NOTHIT "Endstop not hit"
#define MSG_SELFTEST_OK "Self test OK" #define MSG_SELFTEST_OK "Self test OK"
#define(length=20) MSG_SELFTEST_FAN "Test wentylatora";
#define(length=20) MSG_SELFTEST_COOLING_FAN "Przodni went. druku?";
#define(length=20) MSG_SELFTEST_EXTRUDER_FAN "Lewy went na dysze?";
#define MSG_SELFTEST_FAN_YES "Kreci sie";
#define MSG_SELFTEST_FAN_NO "Nekreci sie";
#define MSG_STATS_TOTALFILAMENT "Filament lacznie :" #define MSG_STATS_TOTALFILAMENT "Filament lacznie :"
#define MSG_STATS_TOTALPRINTTIME "Czas calkowity :" #define MSG_STATS_TOTALPRINTTIME "Czas calkowity :"
#define MSG_STATS_FILAMENTUSED "Filament : " #define MSG_STATS_FILAMENTUSED "Filament : "
@ -208,9 +214,9 @@
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony." #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibracja XYZ ok. Osie X/Y sa prostopadle." #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibracja XYZ w porzadku. Osie X/Y lekko skosne." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
#define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Osie X/Y sa mocno skosne. Skos bedzie aut. wyrownany przy druku." #define MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."
#define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke." #define MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."
@ -222,7 +228,8 @@
#define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset." #define MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."
#define MSG_NEW_FIRMWARE_AVAILABLE "Wyszla nowa wersja firmware:" #define MSG_NEW_FIRMWARE_AVAILABLE "Wyszla nowa wersja firmware:"
#define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosze zaktualizowac" #define MSG_NEW_FIRMWARE_PLEASE_UPGRADE "Prosze zaktualizowac"
#define MSG_BABYSTEP_Z_NOT_SET "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest." #define MSG_FOLLOW_CALIBRATION_FLOW "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."
#define MSG_BABYSTEP_Z_NOT_SET "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."
#define MSG_BED_CORRECTION_MENU "Korekta podkladki" #define MSG_BED_CORRECTION_MENU "Korekta podkladki"
#define MSG_BED_CORRECTION_LEFT "W lewo [um]" #define MSG_BED_CORRECTION_LEFT "W lewo [um]"
#define MSG_BED_CORRECTION_RIGHT "W prawo [um]" #define MSG_BED_CORRECTION_RIGHT "W prawo [um]"
@ -230,6 +237,26 @@
#define MSG_BED_CORRECTION_REAR "Do tylu [um]" #define MSG_BED_CORRECTION_REAR "Do tylu [um]"
#define MSG_BED_CORRECTION_RESET "Reset" #define MSG_BED_CORRECTION_RESET "Reset"
#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling"
#define MSG_MENU_CALIBRATION "Kalibracja" #define MSG_MENU_CALIBRATION "Kalibracja"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "karta SD [normal]" #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "karta SD [normal]"
#define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "karta SD[FlshAir]" #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "karta SD[FlshAir]"
#define MSG_LOOSE_PULLEY "Kolo pasowe"
#define MSG_FILAMENT_LOADING_T0 "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."
#define MSG_FILAMENT_LOADING_T1 "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."
#define MSG_FILAMENT_LOADING_T2 "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."
#define MSG_FILAMENT_LOADING_T3 "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."
#define MSG_CHANGE_EXTR "Zmienic ekstruder"
#define MSG_FIL_LOADED_CHECK "Czy filament jest wprowadzony?"
#define MSG_FIL_TUNING "Obrotem przycisku dostroj pozycje filamentu."
#define MSG_FIL_ADJUSTING "Przebiega wyrownanie filamentow. Prosze czekac."
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Dla prawidlowej kalibracji prosze oczyscic dysze. Potem potwierdzic przyciskiem."
#define MSG_CALIBRATE_E "Kalibruj E"
#define MSG_E_CAL_KNOB "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."
#define MSG_MARK_FIL "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."
#define MSG_CLEAN_NOZZLE_E "Kalibracja E skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "
#define MSG_WAITING_TEMP "Oczekiwanie na wychlodzenie dyszy i podkladki."
#define MSG_FILAMENT_CLEAN "Czy kolor jest czysty?"
#define MSG_UNLOADING_FILAMENT "Wysuwam filament"
#define MSG_PAPER "Umiesc kartke papieru na podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."

View File

@ -1,5 +1,6 @@
#include "Marlin.h" #include "Marlin.h"
#include "Configuration.h" #include "Configuration.h"
#include "ConfigurationStore.h"
#include "language_all.h" #include "language_all.h"
#include "mesh_bed_calibration.h" #include "mesh_bed_calibration.h"
#include "mesh_bed_leveling.h" #include "mesh_bed_leveling.h"
@ -411,18 +412,55 @@ BedSkewOffsetDetectionResultType calculate_machine_skew_and_offset_LS(
cntr[1] = 0.f; cntr[1] = 0.f;
float wx = 0.f; float wx = 0.f;
float wy = 0.f; float wy = 0.f;
for (int8_t i = 0; i < 9; ++ i) { for (int8_t i = 0; i < npts; ++ i) {
float x = vec_x[0] * measured_pts[i * 2] + vec_y[0] * measured_pts[i * 2 + 1]; float x = vec_x[0] * measured_pts[i * 2] + vec_y[0] * measured_pts[i * 2 + 1];
float y = vec_x[1] * measured_pts[i * 2] + vec_y[1] * measured_pts[i * 2 + 1]; float y = vec_x[1] * measured_pts[i * 2] + vec_y[1] * measured_pts[i * 2 + 1];
float w = point_weight_x(i, y); float w = point_weight_x(i, y);
cntr[0] += w * (pgm_read_float(true_pts + i * 2) - x); cntr[0] += w * (pgm_read_float(true_pts + i * 2) - x);
wx += w; wx += w;
if (verbosity_level >= 20) {
MYSERIAL.print(i);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("Weight_x:");
MYSERIAL.print(w);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("cntr[0]:");
MYSERIAL.print(cntr[0]);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("wx:");
MYSERIAL.print(wx);
}
w = point_weight_y(i, y); w = point_weight_y(i, y);
cntr[1] += w * (pgm_read_float(true_pts + i * 2 + 1) - y); cntr[1] += w * (pgm_read_float(true_pts + i * 2 + 1) - y);
wy += w; wy += w;
}
if (verbosity_level >= 20) {
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("Weight_y:");
MYSERIAL.print(w);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("cntr[1]:");
MYSERIAL.print(cntr[1]);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("wy:");
MYSERIAL.print(wy);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("");
}
}
cntr[0] /= wx; cntr[0] /= wx;
cntr[1] /= wy; cntr[1] /= wy;
if (verbosity_level >= 20) {
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("Final cntr values:");
SERIAL_ECHOLNPGM("cntr[0]:");
MYSERIAL.print(cntr[0]);
SERIAL_ECHOLNPGM("");
SERIAL_ECHOLNPGM("cntr[1]:");
MYSERIAL.print(cntr[1]);
SERIAL_ECHOLNPGM("");
}
} }
#endif #endif
@ -511,6 +549,7 @@ void reset_bed_offset_and_skew()
} }
bool is_bed_z_jitter_data_valid() bool is_bed_z_jitter_data_valid()
// offsets of the Z heiths of the calibration points from the first point are saved as 16bit signed int, scaled to tenths of microns
{ {
for (int8_t i = 0; i < 8; ++ i) for (int8_t i = 0; i < 8; ++ i)
if (eeprom_read_word((uint16_t*)(EEPROM_BED_CALIBRATION_Z_JITTER+i*2)) == 0x0FFFF) if (eeprom_read_word((uint16_t*)(EEPROM_BED_CALIBRATION_Z_JITTER+i*2)) == 0x0FFFF)
@ -603,18 +642,24 @@ void world2machine_initialize()
// Length of the vec_x shall be close to unity. // Length of the vec_x shall be close to unity.
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]); float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
if (l < 0.9 || l > 1.1) { if (l < 0.9 || l > 1.1) {
SERIAL_ECHOLNPGM("X vector length:");
MYSERIAL.println(l);
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range."); SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range.");
reset = true; reset = true;
} }
// Length of the vec_y shall be close to unity. // Length of the vec_y shall be close to unity.
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]); l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
if (l < 0.9 || l > 1.1) { if (l < 0.9 || l > 1.1) {
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range."); SERIAL_ECHOLNPGM("Y vector length:");
MYSERIAL.println(l);
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range.");
reset = true; reset = true;
} }
// Correction of the zero point shall be reasonably small. // Correction of the zero point shall be reasonably small.
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]); l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
if (l > 15.f) { if (l > 15.f) {
SERIAL_ECHOLNPGM("Zero point correction:");
MYSERIAL.println(l);
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range."); SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range.");
reset = true; reset = true;
} }
@ -1652,7 +1697,27 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0), vec_y[0]); eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0), vec_y[0]);
eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4), vec_y[1]); eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4), vec_y[1]);
#endif #endif
if (verbosity_level >= 10) {
// Length of the vec_x
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
SERIAL_ECHOLNPGM("X vector length:");
MYSERIAL.println(l);
// Length of the vec_y
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
SERIAL_ECHOLNPGM("Y vector length:");
MYSERIAL.println(l);
// Zero point correction
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
SERIAL_ECHOLNPGM("Zero point correction:");
MYSERIAL.println(l);
// vec_x and vec_y shall be nearly perpendicular.
l = vec_x[0] * vec_y[0] + vec_x[1] * vec_y[1];
SERIAL_ECHOLNPGM("Perpendicularity");
MYSERIAL.println(fabs(l));
SERIAL_ECHOLNPGM("Saving bed calibration vectors to EEPROM");
}
// Correct the current_position to match the transformed coordinate system after world2machine_rotation_and_skew and world2machine_shift were set. // Correct the current_position to match the transformed coordinate system after world2machine_rotation_and_skew and world2machine_shift were set.
world2machine_update_current(); world2machine_update_current();
@ -2151,11 +2216,14 @@ static int babystepLoadZ = 0;
void babystep_apply() void babystep_apply()
{ {
// Apply Z height correction aka baby stepping before mesh bed leveing gets activated. // Apply Z height correction aka baby stepping before mesh bed leveling gets activated.
if(eeprom_read_byte((unsigned char*)EEPROM_BABYSTEP_Z_SET) == 0x01) if(calibration_status() == CALIBRATION_STATUS_CALIBRATED)
{ {
// End of G80: Apply the baby stepping value. check_babystep(); //checking if babystep is in allowed range, otherwise setting babystep to 0
// End of G80: Apply the baby stepping value.
EEPROM_read_B(EEPROM_BABYSTEP_Z,&babystepLoadZ); EEPROM_read_B(EEPROM_BABYSTEP_Z,&babystepLoadZ);
#if 0 #if 0
SERIAL_ECHO("Z baby step: "); SERIAL_ECHO("Z baby step: ");
SERIAL_ECHO(babystepLoadZ); SERIAL_ECHO(babystepLoadZ);

View File

@ -39,21 +39,21 @@
#define X_STEP_PIN 37 #define X_STEP_PIN 37
#define X_DIR_PIN 48 #define X_DIR_PIN 48
#define X_MIN_PIN 12 #define X_MIN_PIN 12
#define X_MAX_PIN 24 #define X_MAX_PIN 30
#define X_ENABLE_PIN 29 #define X_ENABLE_PIN 29
#define X_MS1_PIN 40 #define X_MS1_PIN 40
#define X_MS2_PIN 41 #define X_MS2_PIN 41
#define Y_STEP_PIN 36 #define Y_STEP_PIN 36
#define Y_DIR_PIN 49 #define Y_DIR_PIN 49
#define Y_MIN_PIN 11 #define Y_MIN_PIN 11
#define Y_MAX_PIN 23 #define Y_MAX_PIN 24
#define Y_ENABLE_PIN 28 #define Y_ENABLE_PIN 28
#define Y_MS1_PIN 69 #define Y_MS1_PIN 69
#define Y_MS2_PIN 39 #define Y_MS2_PIN 39
#define Z_STEP_PIN 35 #define Z_STEP_PIN 35
#define Z_DIR_PIN 47 #define Z_DIR_PIN 47
#define Z_MIN_PIN 10 #define Z_MIN_PIN 10
#define Z_MAX_PIN 30 #define Z_MAX_PIN 23
#define Z_ENABLE_PIN 27 #define Z_ENABLE_PIN 27
#define Z_MS1_PIN 68 #define Z_MS1_PIN 68
#define Z_MS2_PIN 67 #define Z_MS2_PIN 67
@ -63,7 +63,23 @@
#define TEMP_1_PIN 1 #define TEMP_1_PIN 1
#define TEMP_2_PIN -1 #define TEMP_2_PIN -1
// The SDSS pin uses a different pin mapping from file Sd2PinMap.h #ifdef SNMM
#define E_MUX0_PIN 17
#define E_MUX1_PIN 16
#define E_MUX2_PIN 84
#endif
#ifdef DIS
#define D_REQUIRE 30
#define D_DATA 20
#define D_DATACLOCK 21
#endif
// The SDSS pin uses a different pin mapping from file Sd2PinMap.h
#define SDSS 53 #define SDSS 53
#ifndef SDSUPPORT #ifndef SDSUPPORT
@ -209,25 +225,33 @@
#define FR_SENS 21 #define FR_SENS 21
#ifdef SNMM
#define E_MUX0_PIN 17
#define E_MUX1_PIN 16
#define E_MUX2_PIN 84
#endif
#define LARGE_FLASH true #define LARGE_FLASH true
#define X_STEP_PIN 37 #define X_STEP_PIN 37
#define X_DIR_PIN 48 #define X_DIR_PIN 48
#define X_MIN_PIN 12 #define X_MIN_PIN 12
#define X_MAX_PIN 24 #define X_MAX_PIN 30
#define X_ENABLE_PIN 29 #define X_ENABLE_PIN 29
#define X_MS1_PIN 40 #define X_MS1_PIN 40
#define X_MS2_PIN 41 #define X_MS2_PIN 41
#define Y_STEP_PIN 36 #define Y_STEP_PIN 36
#define Y_DIR_PIN 49 #define Y_DIR_PIN 49
#define Y_MIN_PIN 11 #define Y_MIN_PIN 11
#define Y_MAX_PIN 23 #define Y_MAX_PIN 24
#define Y_ENABLE_PIN 28 #define Y_ENABLE_PIN 28
#define Y_MS1_PIN 69 #define Y_MS1_PIN 69
#define Y_MS2_PIN 39 #define Y_MS2_PIN 39
#define Z_STEP_PIN 35 #define Z_STEP_PIN 35
#define Z_DIR_PIN 47 #define Z_DIR_PIN 47
#define Z_MIN_PIN 10 #define Z_MIN_PIN 10
#define Z_MAX_PIN 30 #define Z_MAX_PIN 23
#define Z_ENABLE_PIN 27 #define Z_ENABLE_PIN 27
#define Z_MS1_PIN 68 #define Z_MS1_PIN 68
#define Z_MS2_PIN 67 #define Z_MS2_PIN 67

View File

@ -1017,7 +1017,7 @@ void digipot_init() //Initialize Digipot Motor Current
pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
if(SilentMode == 0){ if((SilentMode == 0) || (farm_mode) ){
motor_current_setting[0] = motor_current_setting_loud[0]; motor_current_setting[0] = motor_current_setting_loud[0];
motor_current_setting[1] = motor_current_setting_loud[1]; motor_current_setting[1] = motor_current_setting_loud[1];

View File

@ -158,6 +158,13 @@ static float analog2temp(int raw, uint8_t e);
static float analog2tempBed(int raw); static float analog2tempBed(int raw);
static void updateTemperaturesFromRawValues(); static void updateTemperaturesFromRawValues();
enum TempRunawayStates
{
TempRunaway_INACTIVE = 0,
TempRunaway_PREHEAT = 1,
TempRunaway_ACTIVE = 2,
};
#ifdef WATCH_TEMP_PERIOD #ifdef WATCH_TEMP_PERIOD
int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0); int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0);
unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0); unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0);
@ -1049,6 +1056,9 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
float __hysteresis = 0; float __hysteresis = 0;
int __timeout = 0; int __timeout = 0;
bool temp_runaway_check_active = false; bool temp_runaway_check_active = false;
static float __preheat_start = 0;
static int __preheat_counter = 0;
static int __preheat_errors = 0;
_heater_id = (_isbed) ? _heater_id++ : _heater_id; _heater_id = (_isbed) ? _heater_id++ : _heater_id;
@ -1069,8 +1079,8 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
if (millis() - temp_runaway_timer[_heater_id] > 2000) if (millis() - temp_runaway_timer[_heater_id] > 2000)
{ {
temp_runaway_timer[_heater_id] = millis();
temp_runaway_timer[_heater_id] = millis();
if (_output == 0) if (_output == 0)
{ {
temp_runaway_check_active = false; temp_runaway_check_active = false;
@ -1081,19 +1091,47 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
{ {
if (_target_temperature > 0) if (_target_temperature > 0)
{ {
temp_runaway_status[_heater_id] = 1; temp_runaway_status[_heater_id] = TempRunaway_PREHEAT;
temp_runaway_target[_heater_id] = _target_temperature; temp_runaway_target[_heater_id] = _target_temperature;
__preheat_start = _current_temperature;
__preheat_counter = 0;
} }
else else
{ {
temp_runaway_status[_heater_id] = 0; temp_runaway_status[_heater_id] = TempRunaway_INACTIVE;
temp_runaway_target[_heater_id] = _target_temperature; temp_runaway_target[_heater_id] = _target_temperature;
} }
} }
if (_current_temperature >= _target_temperature && temp_runaway_status[_heater_id] == 1) if (temp_runaway_status[_heater_id] == TempRunaway_PREHEAT)
{ {
temp_runaway_status[_heater_id] = 2; if (_current_temperature < 150)
{
__preheat_counter++;
if (__preheat_counter > 8)
{
if (_current_temperature - __preheat_start < 2) {
__preheat_errors++;
}
else {
__preheat_errors = 0;
}
if (__preheat_errors > 5)
{
if (farm_mode) { prusa_statistics(0); }
temp_runaway_stop(true);
if (farm_mode) { prusa_statistics(91); }
}
__preheat_start = _current_temperature;
__preheat_counter = 0;
}
}
}
if (_current_temperature >= _target_temperature && temp_runaway_status[_heater_id] == TempRunaway_PREHEAT)
{
temp_runaway_status[_heater_id] = TempRunaway_ACTIVE;
temp_runaway_check_active = false; temp_runaway_check_active = false;
} }
@ -1109,16 +1147,18 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
if (_target_temperature - __hysteresis < _current_temperature && _current_temperature < _target_temperature + __hysteresis) if (_target_temperature - __hysteresis < _current_temperature && _current_temperature < _target_temperature + __hysteresis)
{ {
temp_runaway_check_active = false; temp_runaway_check_active = false;
temp_runaway_error_counter[_heater_id] = 0;
} }
else else
{ {
if (temp_runaway_status[_heater_id] > 1) if (temp_runaway_status[_heater_id] > TempRunaway_PREHEAT)
{ {
temp_runaway_error_counter[_heater_id]++; temp_runaway_error_counter[_heater_id]++;
if (temp_runaway_error_counter[_heater_id] * 2 > __timeout) if (temp_runaway_error_counter[_heater_id] * 2 > __timeout)
{ {
temp_runaway_stop(); if (farm_mode) { prusa_statistics(0); }
temp_runaway_stop(false);
if (farm_mode) { prusa_statistics(90); }
} }
} }
} }
@ -1127,7 +1167,7 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
} }
} }
void temp_runaway_stop() void temp_runaway_stop(bool isPreheat)
{ {
cancel_heatup = true; cancel_heatup = true;
quickStop(); quickStop();
@ -1136,7 +1176,7 @@ void temp_runaway_stop()
card.sdprinting = false; card.sdprinting = false;
card.closefile(); card.closefile();
} }
LCD_ALERTMESSAGEPGM("THERMAL RUNAWAY");
disable_heater(); disable_heater();
disable_x(); disable_x();
disable_y(); disable_y();
@ -1149,6 +1189,26 @@ void temp_runaway_stop()
delayMicroseconds(500); delayMicroseconds(500);
WRITE(BEEPER, LOW); WRITE(BEEPER, LOW);
delayMicroseconds(100); delayMicroseconds(100);
if (isPreheat)
{
Stop();
LCD_ALERTMESSAGEPGM(" PREHEAT ERROR");
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(": THERMAL RUNAWAY ( PREHEAT )");
SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
SET_OUTPUT(FAN_PIN);
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
analogWrite(FAN_PIN, 255);
fanSpeed = 255;
delayMicroseconds(2000);
}
else
{
LCD_ALERTMESSAGEPGM("THERMAL RUNAWAY");
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(": THERMAL RUNAWAY");
}
} }
#endif #endif
@ -1213,6 +1273,7 @@ void max_temp_error(uint8_t e) {
WRITE(BEEPER, 1); WRITE(BEEPER, 1);
// fanSpeed will consumed by the check_axes_activity() routine. // fanSpeed will consumed by the check_axes_activity() routine.
fanSpeed=255; fanSpeed=255;
if (farm_mode) { prusa_statistics(93); }
} }
void min_temp_error(uint8_t e) { void min_temp_error(uint8_t e) {
@ -1226,6 +1287,8 @@ void min_temp_error(uint8_t e) {
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
Stop(); Stop();
#endif #endif
if (farm_mode) { prusa_statistics(92); }
} }
void bed_max_temp_error(void) { void bed_max_temp_error(void) {
@ -1240,6 +1303,7 @@ void bed_max_temp_error(void) {
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
Stop(); Stop();
#endif #endif
} }
void bed_min_temp_error(void) { void bed_min_temp_error(void) {

View File

@ -180,7 +180,7 @@ static float temp_runaway_timer[4];
static int temp_runaway_error_counter[4]; static int temp_runaway_error_counter[4];
void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed); void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed);
void temp_runaway_stop(); void temp_runaway_stop(bool isPreheat);
#endif #endif
int getHeaterPower(int heater); int getHeaterPower(int heater);

File diff suppressed because it is too large Load Diff

View File

@ -31,14 +31,17 @@
void lcd_mylang(); void lcd_mylang();
bool lcd_detected(void); bool lcd_detected(void);
static void lcd_selftest(); static void lcd_selftest();
static bool lcd_selfcheck_endstops(); static bool lcd_selfcheck_endstops();
static bool lcd_selfcheck_axis(int _axis, int _travel); static bool lcd_selfcheck_axis(int _axis, int _travel);
static bool lcd_selfcheck_check_heater(bool _isbed); static bool lcd_selfcheck_check_heater(bool _isbed);
static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay);
static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator);
static bool lcd_selftest_fan_dialog(int _fan);
static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2);
static void lcd_menu_statistics(); void lcd_menu_statistics();
static bool lcd_selfcheck_pulleys(int axis);
extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines);
inline const char* lcd_display_message_fullscreen_P(const char *msg) inline const char* lcd_display_message_fullscreen_P(const char *msg)
@ -47,7 +50,7 @@ void lcd_mylang();
extern void lcd_wait_for_click(); extern void lcd_wait_for_click();
extern void lcd_show_fullscreen_message_and_wait_P(const char *msg); extern void lcd_show_fullscreen_message_and_wait_P(const char *msg);
// 0: no, 1: yes, -1: timeouted // 0: no, 1: yes, -1: timeouted
extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true); extern int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting = true, bool default_yes = false);
// Ask the user to move the Z axis up to the end stoppers and let // Ask the user to move the Z axis up to the end stoppers and let
// the user confirm that it has been done. // the user confirm that it has been done.
@ -89,9 +92,10 @@ void lcd_mylang();
#define LCD_COMMAND_STOP_PRINT 2 #define LCD_COMMAND_STOP_PRINT 2
#define LCD_COMMAND_FARM_MODE_CONFIRM 4 #define LCD_COMMAND_FARM_MODE_CONFIRM 4
extern unsigned long lcd_timeoutToStatus;
extern int lcd_commands_type; extern int lcd_commands_type;
extern bool farm_mode; extern uint8_t farm_mode;
extern int farm_no; extern int farm_no;
extern int farm_timer; extern int farm_timer;
extern int farm_status; extern int farm_status;
@ -194,4 +198,40 @@ extern void lcd_implementation_print_at(uint8_t x, uint8_t y, int i);
extern void lcd_implementation_print(float f); extern void lcd_implementation_print(float f);
extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str); extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str);
#endif //ULTRALCD_H
void change_extr(int extr);
static int get_ext_nr();
static void extr_adj(int extruder);
static void extr_adj_0();
static void extr_adj_1();
static void extr_adj_2();
static void extr_adj_3();
static void fil_load_menu();
static void fil_unload_menu();
static void extr_unload_0();
static void extr_unload_1();
static void extr_unload_2();
static void extr_unload_3();
static void lcd_disable_farm_mode();
void stack_error();
static void lcd_ping_allert();
void lcd_printer_connected();
void lcd_ping();
void lcd_calibrate_extruder();
void lcd_farm_sdcard_menu();
//void getFileDescription(char *name, char *description);
void lcd_farm_sdcard_menu_w();
//void get_description();
void lcd_wait_for_cool_down();
void adjust_bed_reset();
void lcd_extr_cal_reset();
union MenuData;
char reset_menu();
#endif //ULTRALCD_H

View File

@ -757,17 +757,38 @@ static void lcd_implementation_status_screen()
} }
} }
// Farm number display // Farm number display
if (farm_mode) if (farm_mode)
{ {
lcd_printPGM(PSTR(" F")); lcd_printPGM(PSTR(" F"));
lcd.print(farm_no); lcd.print(farm_no);
lcd_printPGM(PSTR(" ")); lcd_printPGM(PSTR(" "));
// Beat display
lcd.setCursor(LCD_WIDTH - 1, 0);
if ( (millis() - kicktime) < 60000 ) {
lcd_printPGM(PSTR("L"));
}else{
lcd_printPGM(PSTR(" "));
}
}
else {
lcd.setCursor(LCD_WIDTH - 8 - 2, 2);
lcd_printPGM(PSTR(" "));
} }
#ifdef SNMM
lcd_printPGM(PSTR(" E"));
lcd.print(get_ext_nr()+1);
#endif
//Print time elapsed //Print time elapsed
lcd.setCursor(LCD_WIDTH - 8 -2, 2); lcd.setCursor(LCD_WIDTH - 8 -1, 2);
lcd_printPGM(PSTR(" ")); lcd_printPGM(PSTR(" "));
lcd.print(LCD_STR_CLOCK[0]); lcd.print(LCD_STR_CLOCK[0]);
if(starttime != 0) if(starttime != 0)
{ {

View File

@ -37,7 +37,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
#define MANUAL_Z_HOME_POS 0.15 #define MANUAL_Z_HOME_POS 0.15
// Travel limits after homing // Travel limits after homing
#define X_MAX_POS 255 #define X_MAX_POS 250
#define X_MIN_POS 0 #define X_MIN_POS 0
#define Y_MAX_POS 210 #define Y_MAX_POS 210
#define Y_MIN_POS -2.2 #define Y_MIN_POS -2.2
@ -93,20 +93,18 @@ EXTRUDER SETTINGS
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
// Prusa Single extruder multiple material suport
//#define SNMM
#ifdef SNMM
//#define BOWDEN_LENGTH 408
#define BOWDEN_LENGTH 457 //total length for filament fast loading part; max length for extrusion is 465 mm!
#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle
#define FIL_RETURN_LENGTH 30.5 //for filament adjusting (PRUSAY code)
#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
LOAD/UNLOAD FILAMENT SETTINGS
*------------------------------------*/
// Load filament commands
#define LOAD_FILAMENT_0 "M83"
#define LOAD_FILAMENT_1 "G1 E70 F400"
#define LOAD_FILAMENT_2 "G1 E40 F100"
// Unload filament commands
#define UNLOAD_FILAMENT_0 "M83"
#define UNLOAD_FILAMENT_1 "G1 E-80 F7000"
/*------------------------------------ /*------------------------------------
CHANGE FILAMENT SETTINGS CHANGE FILAMENT SETTINGS
@ -312,5 +310,24 @@ THERMISTORS SETTINGS
#define TEMP_SENSOR_2 0 #define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1 #define TEMP_SENSOR_BED 1
#define STACK_GUARD_TEST_VALUE 0xA2A2
#define MAX_BED_TEMP_CALIBRATION 50
#define MAX_HOTEND_TEMP_CALIBRATION 50
#define MAX_E_STEPS_PER_UNIT 250
#define MIN_E_STEPS_PER_UNIT 100
#define PRINT_STARTED 0xFE
#define PRINT_FINISHED 0xFF
#define Z_BABYSTEP_MIN -3999
#define Z_BABYSTEP_MAX 0
#define PING_TIME 60 //time in s
#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes
#define PING_ALLERT_PERIOD 60 //time in s
#define LONG_PRESS_TIME 1000 //time in ms for button long press
#endif //__CONFIGURATION_PRUSA_H #endif //__CONFIGURATION_PRUSA_H

View File

@ -37,7 +37,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
#define MANUAL_Z_HOME_POS 0.15 #define MANUAL_Z_HOME_POS 0.15
// Travel limits after homing // Travel limits after homing
#define X_MAX_POS 255 #define X_MAX_POS 250
#define X_MIN_POS 0 #define X_MIN_POS 0
#define Y_MAX_POS 210 #define Y_MAX_POS 210
#define Y_MIN_POS -2.2 #define Y_MIN_POS -2.2
@ -93,20 +93,18 @@ EXTRUDER SETTINGS
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
// Prusa Single extruder multiple material suport
//#define SNMM
#ifdef SNMM
//#define BOWDEN_LENGTH 408
#define BOWDEN_LENGTH 457 //total length for filament fast loading part; max length for extrusion is 465 mm!
#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle
#define FIL_RETURN_LENGTH 30.5 //for filament adjusting (PRUSAY code)
#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
LOAD/UNLOAD FILAMENT SETTINGS
*------------------------------------*/
// Load filament commands
#define LOAD_FILAMENT_0 "M83"
#define LOAD_FILAMENT_1 "G1 E70 F400"
#define LOAD_FILAMENT_2 "G1 E40 F100"
// Unload filament commands
#define UNLOAD_FILAMENT_0 "M83"
#define UNLOAD_FILAMENT_1 "G1 E-80 F7000"
/*------------------------------------ /*------------------------------------
CHANGE FILAMENT SETTINGS CHANGE FILAMENT SETTINGS
@ -312,5 +310,24 @@ THERMISTORS SETTINGS
#define TEMP_SENSOR_2 0 #define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1 #define TEMP_SENSOR_BED 1
#define STACK_GUARD_TEST_VALUE 0xA2A2
#define MAX_BED_TEMP_CALIBRATION 50
#define MAX_HOTEND_TEMP_CALIBRATION 50
#define MAX_E_STEPS_PER_UNIT 250
#define MIN_E_STEPS_PER_UNIT 100
#define PRINT_STARTED 0xFE
#define PRINT_FINISHED 0xFF
#define Z_BABYSTEP_MIN -3999
#define Z_BABYSTEP_MAX 0
#define PING_TIME 60 //time in s
#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes
#define PING_ALLERT_PERIOD 60 //time in s
#define LONG_PRESS_TIME 1000 //time in ms for button long press
#endif //__CONFIGURATION_PRUSA_H #endif //__CONFIGURATION_PRUSA_H