Merge pull request #37 from PavelSindler/MK2

Added flag for printer reset detection for SNMM, improved loading and unloading filament, corrected messages in Italian language, changed load filament sequence
This commit is contained in:
PavelSindler 2017-01-25 19:20:27 +01:00 committed by GitHub
commit 2f885290e2
13 changed files with 196 additions and 148 deletions

View File

@ -43,7 +43,7 @@
#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_STEPS_PER_UNIT_E (EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY-4) #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.

View File

@ -120,6 +120,10 @@ void Config_StoreSettings()
#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
@ -271,8 +275,8 @@ void Config_RetrieveSettings()
EEPROM_READ_VAR(i,minsegmenttime); EEPROM_READ_VAR(i,minsegmenttime);
EEPROM_READ_VAR(i,max_jerk[X_AXIS]); EEPROM_READ_VAR(i,max_jerk[X_AXIS]);
EEPROM_READ_VAR(i,max_jerk[Y_AXIS]); EEPROM_READ_VAR(i,max_jerk[Y_AXIS]);
EEPROM_READ_VAR(i,max_jerk[Z_AXIS]); EEPROM_READ_VAR(i,max_jerk[Z_AXIS]);
EEPROM_READ_VAR(i,max_jerk[E_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;

View File

@ -284,6 +284,7 @@ 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 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 kicktime;

View File

@ -272,6 +272,7 @@ unsigned long total_filament_used;
unsigned int heating_status; unsigned int heating_status;
unsigned int heating_status_counter; unsigned int heating_status_counter;
bool custom_message; bool custom_message;
bool loading_flag = false;
unsigned int custom_message_type; unsigned int custom_message_type;
unsigned int custom_message_state; unsigned int custom_message_state;
@ -2051,6 +2052,18 @@ void process_commands()
#endif #endif
} }
else if (code_seen("SetF")) {
#ifdef SNMM
bool not_finished = (eeprom_read_byte((unsigned char*)EEPROM_PRINT_FLAG) != PRINT_FINISHED);
eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_STARTED);
if (not_finished) enquecommand_front_P(PSTR("PRUSA Y"));
#endif
}
else if (code_seen("ResF")) {
#ifdef SNMM
eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_FINISHED);
#endif
}
//else if (code_seen('Cal')) { //else if (code_seen('Cal')) {
// lcd_calibration(); // lcd_calibration();
// } // }
@ -5050,6 +5063,57 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
#endif #endif
} }
break; break;
case 701: //M701: load filament
{
enable_z();
custom_message = true;
custom_message_type = 2;
lcd_setstatuspgm(MSG_LOADING_FILAMENT);
current_position[E_AXIS] += 65;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
current_position[E_AXIS] += 40;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence
st_synchronize();
if (!farm_mode && loading_flag) {
bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true);
while (!clean) {
lcd_update_enable(true);
lcd_update(2);
current_position[E_AXIS] += 40;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 100 / 60, active_extruder); //slow sequence
st_synchronize();
clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true);
}
}
lcd_update_enable(true);
lcd_update(2);
lcd_setstatuspgm(WELCOME_MSG);
disable_z();
loading_flag = false;
custom_message = false;
custom_message_type = 0;
}
break;
case 702:
{
custom_message = true;
custom_message_type = 2;
lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); //need to be tranlated to spanish language
current_position[E_AXIS] -= 80;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 7000 / 60, active_extruder);
st_synchronize();
lcd_setstatuspgm(WELCOME_MSG);
custom_message = false;
custom_message_type = 0;
}
break;
case 999: // M999: Restart after being stopped case 999: // M999: Restart after being stopped
Stopped = false; Stopped = false;
lcd_reset_alert_level(); lcd_reset_alert_level();

View File

@ -197,7 +197,7 @@ const char * const MSG_BED_DONE_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating"; const char MSG_BED_HEATING_EN[] PROGMEM = "Bed Heating";
const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed"; const char MSG_BED_HEATING_CZ[] PROGMEM = "Zahrivani bed";
const char MSG_BED_HEATING_IT[] PROGMEM = "Piatto riscaldam."; const char MSG_BED_HEATING_IT[] PROGMEM = "Riscald. letto";
const char MSG_BED_HEATING_ES[] PROGMEM = "Base Calentando"; const char MSG_BED_HEATING_ES[] PROGMEM = "Base Calentando";
const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika.."; const char MSG_BED_HEATING_PL[] PROGMEM = "Grzanie stolika..";
const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_BED_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -465,7 +465,7 @@ const char * const MSG_CHANGE_EXTR_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!"; const char MSG_CHANGE_SUCCESS_EN[] PROGMEM = "Change success!";
const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!"; const char MSG_CHANGE_SUCCESS_CZ[] PROGMEM = "Zmena uspesna!";
const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambia. riuscito!"; const char MSG_CHANGE_SUCCESS_IT[] PROGMEM = "Cambio riuscito!";
const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambiar bien!"; const char MSG_CHANGE_SUCCESS_ES[] PROGMEM = "Cambiar bien!";
const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!"; const char MSG_CHANGE_SUCCESS_PL[] PROGMEM = "Wymiana ok!";
const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -478,7 +478,7 @@ const char * const MSG_CHANGE_SUCCESS_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!"; const char MSG_CHANGING_FILAMENT_EN[] PROGMEM = "Changing filament!";
const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!"; const char MSG_CHANGING_FILAMENT_CZ[] PROGMEM = "Vymena filamentu!";
const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Mutevole fil.!"; const char MSG_CHANGING_FILAMENT_IT[] PROGMEM = "Cambiando filam.";
const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando fil.!"; const char MSG_CHANGING_FILAMENT_ES[] PROGMEM = "Cambiando fil.!";
const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu"; const char MSG_CHANGING_FILAMENT_PL[] PROGMEM = "Wymiana filamentu";
const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_CHANGING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -633,11 +633,12 @@ const char * const MSG_END_FILE_LIST_LANG_TABLE[1] PROGMEM = {
const char MSG_ERROR_EN[] PROGMEM = "ERROR:"; const char MSG_ERROR_EN[] PROGMEM = "ERROR:";
const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:"; const char MSG_ERROR_CZ[] PROGMEM = "CHYBA:";
const char MSG_ERROR_IT[] PROGMEM = "ERRORE:";
const char MSG_ERROR_PL[] PROGMEM = "BLAD:"; const char MSG_ERROR_PL[] PROGMEM = "BLAD:";
const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_ERROR_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_ERROR_EN, MSG_ERROR_EN,
MSG_ERROR_CZ, MSG_ERROR_CZ,
MSG_ERROR_EN, MSG_ERROR_IT,
MSG_ERROR_EN, MSG_ERROR_EN,
MSG_ERROR_PL MSG_ERROR_PL
}; };
@ -947,7 +948,7 @@ const char * const MSG_HEATING_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done."; const char MSG_HEATING_COMPLETE_EN[] PROGMEM = "Heating done.";
const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK."; const char MSG_HEATING_COMPLETE_CZ[] PROGMEM = "Zahrivani OK.";
const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscaldamento fatto."; const char MSG_HEATING_COMPLETE_IT[] PROGMEM = "Riscald. completo";
const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentando listo."; const char MSG_HEATING_COMPLETE_ES[] PROGMEM = "Calentando listo.";
const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK."; const char MSG_HEATING_COMPLETE_PL[] PROGMEM = "Grzanie OK.";
const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_HEATING_COMPLETE_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -1090,7 +1091,7 @@ const char * const MSG_LANGUAGE_SELECT_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color"; const char MSG_LOADING_COLOR_EN[] PROGMEM = "Loading color";
const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy"; const char MSG_LOADING_COLOR_CZ[] PROGMEM = "Cisteni barvy";
const char MSG_LOADING_COLOR_IT[] PROGMEM = "Cargando color"; const char MSG_LOADING_COLOR_IT[] PROGMEM = "Caricando colore";
const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cargando color"; const char MSG_LOADING_COLOR_ES[] PROGMEM = "Cargando color";
const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru"; const char MSG_LOADING_COLOR_PL[] PROGMEM = "Czyszcz. koloru";
const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -1103,7 +1104,7 @@ const char * const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament"; const char MSG_LOADING_FILAMENT_EN[] PROGMEM = "Loading filament";
const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu"; const char MSG_LOADING_FILAMENT_CZ[] PROGMEM = "Zavadeni filamentu";
const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Cargando fil."; const char MSG_LOADING_FILAMENT_IT[] PROGMEM = "Caricando filam.";
const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Cargando fil."; const char MSG_LOADING_FILAMENT_ES[] PROGMEM = "Cargando fil.";
const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu"; const char MSG_LOADING_FILAMENT_PL[] PROGMEM = "Wprow. filamentu";
const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -1199,7 +1200,7 @@ const char * const MSG_MAIN_LANG_TABLE[LANG_NUM] PROGMEM = {
}; };
const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done."; const char MSG_MARK_FIL_EN[] PROGMEM = "Mark filament 100mm from extruder body. Click when done.";
const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu. Potvrdte tlacitkem."; const char MSG_MARK_FIL_CZ[] PROGMEM = "Oznacte filament 100 mm od tela extruderu a po te potvrdte tlacitkem.";
const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."; const char MSG_MARK_FIL_IT[] PROGMEM = "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare.";
const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado."; const char MSG_MARK_FIL_ES[] PROGMEM = "Marque el filamento 100 mm por encima del final del extrusor. Hacer clic una vez terminado.";
const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."; const char MSG_MARK_FIL_PL[] PROGMEM = "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem.";
@ -1418,7 +1419,7 @@ const char * const MSG_NO_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear"; const char MSG_NOT_COLOR_EN[] PROGMEM = "Color not clear";
const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista"; const char MSG_NOT_COLOR_CZ[] PROGMEM = "Barva neni cista";
const char MSG_NOT_COLOR_IT[] PROGMEM = "Color no claro"; const char MSG_NOT_COLOR_IT[] PROGMEM = "Colore non puro";
const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no claro"; const char MSG_NOT_COLOR_ES[] PROGMEM = "Color no claro";
const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz."; const char MSG_NOT_COLOR_PL[] PROGMEM = "Kolor zanieczysz.";
const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -1431,7 +1432,7 @@ const char * const MSG_NOT_COLOR_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded"; const char MSG_NOT_LOADED_EN[] PROGMEM = "Filament not loaded";
const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden"; const char MSG_NOT_LOADED_CZ[] PROGMEM = "Filament nezaveden";
const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. no cargado"; const char MSG_NOT_LOADED_IT[] PROGMEM = "Fil. non caricato";
const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no cargado"; const char MSG_NOT_LOADED_ES[] PROGMEM = "Fil. no cargado";
const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu"; const char MSG_NOT_LOADED_PL[] PROGMEM = "Brak filamentu";
const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_NOT_LOADED_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -1583,10 +1584,10 @@ const char * const MSG_PREHEAT_NOZZLE_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_PREHEAT_NOZZLE_PL MSG_PREHEAT_NOZZLE_PL
}; };
const char MSG_PRESS_EN[] PROGMEM = "And press the knob"; const char MSG_PRESS_EN[] PROGMEM = "and press the knob";
const char MSG_PRESS_CZ[] PROGMEM = "A stisknete tlacitko"; const char MSG_PRESS_CZ[] PROGMEM = "a stisknete tlacitko";
const char MSG_PRESS_IT[] PROGMEM = "Y pulse el mando"; const char MSG_PRESS_IT[] PROGMEM = "e cliccare manopola";
const char MSG_PRESS_ES[] PROGMEM = "Y pulse el mando"; const char MSG_PRESS_ES[] PROGMEM = "y pulse el mando";
const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk"; const char MSG_PRESS_PL[] PROGMEM = "Nacisnij przycisk";
const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_PRESS_EN, MSG_PRESS_EN,
@ -2161,7 +2162,7 @@ const char * const MSG_SHOW_END_STOPS_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]"; const char MSG_SILENT_MODE_OFF_EN[] PROGMEM = "Mode [high power]";
const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]"; const char MSG_SILENT_MODE_OFF_CZ[] PROGMEM = "Mod [vys. vykon]";
const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [prestante]"; const char MSG_SILENT_MODE_OFF_IT[] PROGMEM = "Mode [forte]";
const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [mas fuerza]"; const char MSG_SILENT_MODE_OFF_ES[] PROGMEM = "Modo [mas fuerza]";
const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]"; const char MSG_SILENT_MODE_OFF_PL[] PROGMEM = "Mod [w wydajnosc]";
const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_SILENT_MODE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -2404,6 +2405,19 @@ const char * const MSG_UNKNOWN_COMMAND_LANG_TABLE[1] PROGMEM = {
MSG_UNKNOWN_COMMAND_EN MSG_UNKNOWN_COMMAND_EN
}; };
const char MSG_UNLOADING_FILAMENT_EN[] PROGMEM = "Unloading filament";
const char MSG_UNLOADING_FILAMENT_CZ[] PROGMEM = "Vysouvam filament";
const char MSG_UNLOADING_FILAMENT_IT[] PROGMEM = "Rilasc. filamento";
const char MSG_UNLOADING_FILAMENT_ES[] PROGMEM = "Soltando filamento";
const char MSG_UNLOADING_FILAMENT_PL[] PROGMEM = "Wysuwam filament";
const char * const MSG_UNLOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_UNLOADING_FILAMENT_EN,
MSG_UNLOADING_FILAMENT_CZ,
MSG_UNLOADING_FILAMENT_IT,
MSG_UNLOADING_FILAMENT_ES,
MSG_UNLOADING_FILAMENT_PL
};
const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament"; const char MSG_UNLOAD_FILAMENT_EN[] PROGMEM = "Unload filament";
const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament"; const char MSG_UNLOAD_FILAMENT_CZ[] PROGMEM = "Vyjmout filament";
const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento"; const char MSG_UNLOAD_FILAMENT_IT[] PROGMEM = "Scarica filamento";

View File

@ -518,6 +518,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];

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!"
@ -258,7 +258,8 @@
#define MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ "Filamenty jsou srovnany. Pro uspesnou kalibraci prosim ocistete trysku. Po te potvrdte tlacitkem." #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_CALIBRATE_E "Kalibrovat E"
#define MSG_E_CAL_KNOB "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem." #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. 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_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_WAITING_TEMP "Cekani na zchladnuti trysky a podlozky."
#define MSG_FILAMENT_CLEAN "Je barva cista?" #define MSG_FILAMENT_CLEAN "Je barva cista?"
#define MSG_UNLOADING_FILAMENT "Vysouvam filament"

View File

@ -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!"
@ -250,6 +250,7 @@
#define(length=20, lines=8) MSG_CLEAN_NOZZLE_E "E calibration finished. Please clean the nozzle. 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 heater and bed cooling" #define(length=20, lines=3) MSG_WAITING_TEMP "Waiting for heater and bed cooling"
#define(length=20, lines=2) MSG_FILAMENT_CLEAN "Is color clear?" #define(length=20, lines=2) MSG_FILAMENT_CLEAN "Is color clear?"
#define(lenght=20, lines=1) MSG_UNLOADING_FILAMENT "Unloading filament"
#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"

View File

@ -59,7 +59,7 @@
#define MSG_PLEASE_WAIT "Espera" #define MSG_PLEASE_WAIT "Espera"
#define MSG_LOADING_COLOR "Cargando color" #define MSG_LOADING_COLOR "Cargando color"
#define MSG_CHANGE_SUCCESS "Cambiar bien!" #define MSG_CHANGE_SUCCESS "Cambiar bien!"
#define MSG_PRESS "Y pulse el mando" #define MSG_PRESS "y pulse el mando"
#define MSG_INSERT_FILAMENT "Inserta filamento" #define MSG_INSERT_FILAMENT "Inserta filamento"
#define MSG_CHANGING_FILAMENT "Cambiando fil.!" #define MSG_CHANGING_FILAMENT "Cambiando fil.!"
#define MSG_SILENT_MODE_ON "Modo [silencio]" #define MSG_SILENT_MODE_ON "Modo [silencio]"
@ -252,3 +252,4 @@
#define MSG_CLEAN_NOZZLE_E "E calibrado. Limpiar la boquilla. Haga 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_WAITING_TEMP "Esperando enfriamiento de la cama y del extrusor."
#define MSG_FILAMENT_CLEAN "Es el nuevo color nitido?" #define MSG_FILAMENT_CLEAN "Es el nuevo color nitido?"
#define MSG_UNLOADING_FILAMENT "Soltando filamento"

View File

@ -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"
@ -247,3 +247,4 @@
#define MSG_CLEAN_NOZZLE_E "Calibrazione E terminata. Si prega di pulire l'ugello. 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_WAITING_TEMP "In attesa del raffreddamento della testina e del piatto."
#define MSG_FILAMENT_CLEAN "Il colore e' nitido?" #define MSG_FILAMENT_CLEAN "Il colore e' nitido?"
#define MSG_UNLOADING_FILAMENT "Rilasc. filamento"

View File

@ -258,3 +258,4 @@
#define MSG_CLEAN_NOZZLE_E "Kalibracja E skonczona. Prosze oczyscic dysze. Potem 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_WAITING_TEMP "Oczekiwanie na wychlodzenie dyszy i podkladki."
#define MSG_FILAMENT_CLEAN "Czy kolor jest czysty?" #define MSG_FILAMENT_CLEAN "Czy kolor jest czysty?"
#define MSG_UNLOADING_FILAMENT "Wysuwam filament"

View File

@ -497,62 +497,6 @@ static void lcd_status_screen()
void lcd_commands() void lcd_commands()
{ {
if (lcd_commands_type == LCD_COMMAND_LOAD_FILAMENT) //// load filament sequence
{
if (lcd_commands_step == 0) { lcd_commands_step = 7; custom_message = true;}
if (lcd_commands_step == 1 && !blocks_queued())
{
lcd_commands_step = 0;
lcd_commands_type = 0;
lcd_setstatuspgm(WELCOME_MSG);
disable_z();
custom_message = false;
custom_message_type = 0;
}
if (lcd_commands_step == 2 && !blocks_queued())
{
lcd_commands_step = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN) ? 1 : 4;
lcd_update_enable(true);
lcdDrawUpdate = 2;
}
if (lcd_commands_step == 3 && !blocks_queued()) {
lcd_commands_step = farm_mode ? 1:2; //don't show question about clear color if we are in farm mode
}
if (lcd_commands_step == 4 && !blocks_queued())
{
//lcd_setstatuspgm(MSG_LOADING_FILAMENT);
enquecommand_P(PSTR(LOAD_FILAMENT_2)); //slow_sequence
lcd_commands_step = 3;
}
if (lcd_commands_step == 5 && !blocks_queued())
{
enquecommand_P(PSTR(LOAD_FILAMENT_1)); //fast sequence
lcd_setstatuspgm(MSG_LOADING_FILAMENT);
//enquecommand_P(PSTR("G4")); //dwell
lcd_commands_step = 4;
}
if (lcd_commands_step == 6 && !blocks_queued())
{
lcd_setstatuspgm(MSG_INSERT_FILAMENT);
enquecommand_P(PSTR(LOAD_FILAMENT_0)); //set E relative
enquecommand_P(PSTR("G1 E0.1 F400"));
lcd_commands_step = 5;
}
if (lcd_commands_step == 7 && !blocks_queued())
{
lcd_setstatuspgm(MSG_PLEASE_WAIT);
enable_z();
custom_message = true;
custom_message_type = 2;
lcd_commands_step = 6;
}
}
if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print
{ {
@ -582,6 +526,9 @@ void lcd_commands()
{ {
// M84: Disable steppers. // M84: Disable steppers.
enquecommand_P(PSTR("M84")); enquecommand_P(PSTR("M84"));
#ifdef SNMM
enquecommand_P(PSTR("PRUSA ResF")); //resets flag at the end of the print (used for SNMM)
#endif
autotempShutdown(); autotempShutdown();
lcd_commands_step = 2; lcd_commands_step = 2;
} }
@ -913,8 +860,7 @@ void lcd_unLoadFilament()
if (degHotend0() > EXTRUDE_MINTEMP) { if (degHotend0() > EXTRUDE_MINTEMP) {
enquecommand_P(PSTR(UNLOAD_FILAMENT_0)); enquecommand_P(PSTR("M702")); //unload filament
enquecommand_P(PSTR(UNLOAD_FILAMENT_1));
} else { } else {
@ -1122,10 +1068,9 @@ void lcd_LoadFilament()
if (degHotend0() > EXTRUDE_MINTEMP) if (degHotend0() > EXTRUDE_MINTEMP)
{ {
custom_message = true; custom_message = true;
lcd_commands_type = LCD_COMMAND_LOAD_FILAMENT; loading_flag = true;
enquecommand_P(PSTR("M701")); //load filament
SERIAL_ECHOLN("Loading filament"); SERIAL_ECHOLN("Loading filament");
// commands() will handle the rest
} }
else else
{ {
@ -1767,49 +1712,58 @@ void lcd_wait_for_click()
} }
} }
int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting) int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow_timeouting, bool default_yes)
{ {
lcd_display_message_fullscreen_P(msg);
lcd.setCursor(1, 2); lcd_display_message_fullscreen_P(msg);
lcd_printPGM(MSG_YES);
lcd.setCursor(0, 3);
lcd_printPGM(PSTR(">"));
lcd_printPGM(MSG_NO);
bool yes = false;
// Wait for user confirmation or a timeout. if (default_yes) {
unsigned long previous_millis_cmd = millis(); lcd.setCursor(0, 2);
int8_t enc_dif = encoderDiff; lcd_printPGM(PSTR(">"));
for (;;) { lcd_printPGM(MSG_YES);
if (allow_timeouting && millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) lcd.setCursor(1, 3);
return -1; lcd_printPGM(MSG_NO);
manage_heater(); }
manage_inactivity(true); else {
if (abs((enc_dif - encoderDiff)) > 4) { lcd.setCursor(1, 2);
if (abs(enc_dif - encoderDiff) > 1) { lcd_printPGM(MSG_YES);
lcd.setCursor(0, 2); lcd.setCursor(0, 3);
if (enc_dif > encoderDiff && yes) { lcd_printPGM(PSTR(">"));
lcd_printPGM((PSTR(" "))); lcd_printPGM(MSG_NO);
lcd.setCursor(0, 3); }
lcd_printPGM((PSTR(">"))); bool yes = default_yes ? true : false;
yes = false;
} else if (enc_dif < encoderDiff && ! yes) { // Wait for user confirmation or a timeout.
lcd_printPGM((PSTR(">"))); unsigned long previous_millis_cmd = millis();
lcd.setCursor(0, 3); int8_t enc_dif = encoderDiff;
lcd_printPGM((PSTR(" "))); for (;;) {
yes = true; if (allow_timeouting && millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS)
} return -1;
enc_dif = encoderDiff; manage_heater();
} manage_inactivity(true);
} if (abs(enc_dif - encoderDiff) > 4) {
if (lcd_clicked()) { lcd.setCursor(0, 2);
while (lcd_clicked()) ; if (enc_dif > encoderDiff && yes) {
delay(10); lcd_printPGM((PSTR(" ")));
while (lcd_clicked()) ; lcd.setCursor(0, 3);
return yes; lcd_printPGM((PSTR(">")));
} yes = false;
} }
else if (enc_dif < encoderDiff && !yes) {
lcd_printPGM((PSTR(">")));
lcd.setCursor(0, 3);
lcd_printPGM((PSTR(" ")));
yes = true;
}
enc_dif = encoderDiff;
}
if (lcd_clicked()) {
while (lcd_clicked());
delay(10);
while (lcd_clicked());
return yes;
}
}
} }
void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask) void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask)
@ -2264,14 +2218,15 @@ void lcd_mesh_calibration_z()
void lcd_calibrate_extruder() { void lcd_calibrate_extruder() {
if (degHotend0() > EXTRUDE_MINTEMP) if (degHotend0() > EXTRUDE_MINTEMP)
{ {
current_position[E_AXIS] = 0; current_position[E_AXIS] = 0; //set initial position to zero
plan_set_e_position(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]);
long steps_start = current_position[E_AXIS]*axis_steps_per_unit[E_AXIS]; //long steps_start = st_get_position(E_AXIS);
long steps_final; long steps_final;
float e_steps_per_unit; float e_steps_per_unit;
float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 5; float feedrate = (180 / axis_steps_per_unit[E_AXIS]) * 3; //initial automatic extrusion feedrate (depends on current value of axis_steps_per_unit to avoid too fast extrusion)
float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; float e_shift_calibration = (axis_steps_per_unit[E_AXIS] > 180 ) ? ((180 / axis_steps_per_unit[E_AXIS]) * 70): 70; //length of initial automatic extrusion sequence
const char *msg_e_cal_knob = MSG_E_CAL_KNOB; const char *msg_e_cal_knob = MSG_E_CAL_KNOB;
const char *msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_e_cal_knob); const char *msg_next_e_cal_knob = lcd_display_message_fullscreen_P(msg_e_cal_knob);
const bool multi_screen = msg_next_e_cal_knob != NULL; const bool multi_screen = msg_next_e_cal_knob != NULL;
@ -2298,7 +2253,7 @@ void lcd_calibrate_extruder() {
//manage_inactivity(true); //manage_inactivity(true);
manage_heater(); manage_heater();
if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { //adjusting mark by knob rotation
delay_keep_alive(50); delay_keep_alive(50);
//previous_millis_cmd = millis(); //previous_millis_cmd = millis();
encoderPosition += (encoderDiff / ENCODER_PULSES_PER_STEP); encoderPosition += (encoderDiff / ENCODER_PULSES_PER_STEP);
@ -2313,8 +2268,9 @@ void lcd_calibrate_extruder() {
} }
steps_final = current_position[E_AXIS] * axis_steps_per_unit[E_AXIS]; steps_final = current_position[E_AXIS] * axis_steps_per_unit[E_AXIS];
//steps_final = st_get_position(E_AXIS);
lcdDrawUpdate = 1; lcdDrawUpdate = 1;
e_steps_per_unit = ((float)(steps_final - steps_start)) / 100.f; e_steps_per_unit = ((float)(steps_final)) / 100.0f;
if (e_steps_per_unit < MIN_E_STEPS_PER_UNIT) e_steps_per_unit = MIN_E_STEPS_PER_UNIT; if (e_steps_per_unit < MIN_E_STEPS_PER_UNIT) e_steps_per_unit = MIN_E_STEPS_PER_UNIT;
if (e_steps_per_unit > MAX_E_STEPS_PER_UNIT) e_steps_per_unit = MAX_E_STEPS_PER_UNIT; if (e_steps_per_unit > MAX_E_STEPS_PER_UNIT) e_steps_per_unit = MAX_E_STEPS_PER_UNIT;
@ -4203,6 +4159,8 @@ static void menu_action_function(menuFunc_t data) {
} }
static void menu_action_sdfile(const char* filename, char* longFilename) static void menu_action_sdfile(const char* filename, char* longFilename)
{ {
loading_flag = false;
char cmd[30]; char cmd[30];
char* c; char* c;
sprintf_P(cmd, PSTR("M23 %s"), filename); sprintf_P(cmd, PSTR("M23 %s"), filename);

View File

@ -49,7 +49,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.