From 9fdd23aaa56f43f95bc71c3024fff625b5a82453 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 12 May 2017 10:23:01 +0200 Subject: [PATCH] snmm: czech messages corrected, M600 filament not loaded, timers updated, updated behavior when choosing "change filament" from menu --- Firmware/Marlin_main.cpp | 35 ++++++++++++++++++++++++++++++----- Firmware/language_cz.h | 8 ++++---- Firmware/ultralcd.cpp | 24 +++++++++++++++++++----- Firmware/ultralcd.h | 1 + 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index ab50a319..7cd1aafe 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5180,7 +5180,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder); - + //Wait for user to check the state lcd_change_fil_state = 0; @@ -5192,13 +5192,33 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp // Filament failed to load so load it again case 2: +#ifdef SNMM + display_loading(); + do { + target[E_AXIS] += 0.002; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder); + delay_keep_alive(2); + } while (!lcd_clicked()); + + st_synchronize(); + target[E_AXIS] += bowden_length[snmm_extruder]; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + target[E_AXIS] += FIL_LOAD_LENGTH - 60; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1400, active_extruder); + target[E_AXIS] += 40; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 400, active_extruder); + target[E_AXIS] += 10; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + +#else target[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EFEED, active_extruder); - +#endif target[E_AXIS]+= FILAMENTCHANGE_FINALFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder); lcd_loading_filament(); + break; // Filament loaded properly but color is not clear @@ -5252,7 +5272,10 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp char cmd[9]; sprintf_P(cmd, PSTR("M220 S%i"), feedmultiplyBckp); enquecommand(cmd); - + + lcd_setstatuspgm(WELCOME_MSG); + custom_message = false; + custom_message_type = 0; } break; @@ -6345,7 +6368,9 @@ void temp_compensation_start() { custom_message_type = 5; custom_message_state = PINDA_HEAT_T + 1; lcd_update(2); - if (degHotend(active_extruder)>EXTRUDE_MINTEMP) current_position[E_AXIS] -= DEFAULT_RETRACTION; + if (degHotend(active_extruder) > EXTRUDE_MINTEMP) { + current_position[E_AXIS] -= DEFAULT_RETRACTION; + } plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder); current_position[X_AXIS] = PINDA_PREHEAT_X; @@ -6473,7 +6498,7 @@ void long_pause() //long pause print pause_lastpos[E_AXIS] = current_position[E_AXIS]; //retract - current_position[E_AXIS] -= PAUSE_RETRACT; + current_position[E_AXIS] -= DEFAULT_RETRACTION; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder); //lift z diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 9712ab37..a0791af7 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -258,10 +258,10 @@ #define MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]" #define MSG_LOOSE_PULLEY "Uvolnena remenicka" -#define MSG_FILAMENT_LOADING_T0 "Vložte filament do extruderu 1. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T1 "Vložte filament do extruderu 2. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T2 "Vložte filament do extruderu 3. Potvrdte tlacitkem." -#define MSG_FILAMENT_LOADING_T3 "Vložte filament do extruderu 4. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T0 "Vlozte filament do extruderu 1. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T1 "Vlozte filament do extruderu 2. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T2 "Vlozte filament do extruderu 3. Potvrdte tlacitkem." +#define MSG_FILAMENT_LOADING_T3 "Vlozte filament do extruderu 4. Potvrdte tlacitkem." #define MSG_CHANGE_EXTR "Zmenit extruder" #define MSG_FIL_ADJUSTING "Probiha srovnani filamentu. Prosim cekejte." diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 874f1008..3826d193 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -563,7 +563,7 @@ void lcd_commands() enquecommand(cmd1); if (axis_relative_modes[3] == true) enquecommand_P(PSTR("M83")); // set extruder to relative mode. else enquecommand_P(PSTR("M82")); // set extruder to absolute mode - enquecommand_P(PSTR("G1 E" STRINGIFY(PAUSE_RETRACT))); //unretract + enquecommand_P(PSTR("G1 E" STRINGIFY(DEFAULT_RETRACTION))); //unretract enquecommand_P(PSTR("G90")); //absolute positioning lcd_commands_step = 1; } @@ -1037,7 +1037,6 @@ void lcd_loading_filament() { lcd.setCursor(0, 2); lcd_printPGM(MSG_PLEASE_WAIT); - for (int i = 0; i < 20; i++) { lcd.setCursor(i, 3); @@ -1045,7 +1044,11 @@ void lcd_loading_filament() { for (int j = 0; j < 10 ; j++) { manage_heater(); manage_inactivity(true); - delay(110); +#ifdef SNMM + delay(153); +#else + delay(137); +#endif } @@ -3066,7 +3069,7 @@ static int get_ext_nr() { //reads multiplexer input pins and return current extr void display_loading() { switch (snmm_extruder) { - case 1: (MSG_FILAMENT_LOADING_T1); break; + case 1: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T1); break; case 2: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T2); break; case 3: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T3); break; default: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T0); break; @@ -3612,6 +3615,17 @@ static void lcd_silent_mode_set_tune() { lcd_goto_menu(lcd_tune_menu, 9); } +static void lcd_colorprint_change() { + + enquecommand_P(PSTR("M600")); + + custom_message = true; + custom_message_type = 2; //just print status message + lcd_setstatuspgm(MSG_FINISHING_MOVEMENTS); + lcd_return_to_status(); + lcdDrawUpdate = 3; +} + static void lcd_tune_menu() { EEPROM_read(EEPROM_SILENT, (uint8_t*)&SilentModeMenu, sizeof(SilentModeMenu)); @@ -3628,7 +3642,7 @@ static void lcd_tune_menu() MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);//5 MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999);//6 #ifdef FILAMENTCHANGEENABLE - MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600"));//7 + MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif if (SilentModeMenu == 0) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 8da77829..850dad35 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -208,6 +208,7 @@ extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str); void change_extr(int extr); +static void lcd_colorprint_change(); static int get_ext_nr(); static void extr_adj(int extruder); static void extr_adj_0();