From 0d269261e4cd48768d07b6b40c05099caa8332a7 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 10 Jan 2018 18:50:16 +0100 Subject: [PATCH 1/4] PFW-110 - load filament - beep when loading finished. --- Firmware/Marlin_main.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 7240e7a6..51194ad6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2153,6 +2153,10 @@ void gcode_M701() 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(); + tone(BEEPER, 500); + delay_keep_alive(50); + noTone(BEEPER); + if (!farm_mode && loading_flag) { bool clean = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILAMENT_CLEAN, false, true); @@ -2175,6 +2179,7 @@ void gcode_M701() custom_message = false; custom_message_type = 0; #endif + } void process_commands() @@ -5687,13 +5692,15 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp target[E_AXIS]+= FILAMENTCHANGE_FINALFEED ; plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder); - - - //Wait for user to check the state lcd_change_fil_state = 0; lcd_loading_filament(); - while ((lcd_change_fil_state == 0)||(lcd_change_fil_state != 1)){ + + tone(BEEPER, 500); + delay_keep_alive(50); + noTone(BEEPER); + + while ((lcd_change_fil_state == 0)||(lcd_change_fil_state != 1)){ lcd_change_fil_state = 0; KEEPALIVE_STATE(PAUSED_FOR_USER); lcd_alright(); From 0f46fa0c3720149dfb4b3996f8795494cf90eadc Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 12 Jan 2018 19:54:32 +0100 Subject: [PATCH 2/4] blocking messages in settings/tune menu (PFW104) switch normal/stealth (PFW110) --- Firmware/language_all.cpp | 8 +++---- Firmware/language_cz.h | 4 ++-- Firmware/language_en.h | 4 ++-- Firmware/ultralcd.cpp | 45 ++++++++++++++++++++++++++++----------- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 27d4c1e0..c79395db 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -436,15 +436,15 @@ const char * const MSG_CRASH_DETECTED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CRASH_DETECTED_CZ }; -const char MSG_CRASH_DET_ONLY_IN_NORMAL_EN[] PROGMEM = "Crash detection can be turned on only in Normal mode."; -const char MSG_CRASH_DET_ONLY_IN_NORMAL_CZ[] PROGMEM = "Crash detekce muze byt zapnuta pouze v Normal modu"; +const char MSG_CRASH_DET_ONLY_IN_NORMAL_EN[] PROGMEM = "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"; +const char MSG_CRASH_DET_ONLY_IN_NORMAL_CZ[] PROGMEM = "\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu"; const char * const MSG_CRASH_DET_ONLY_IN_NORMAL_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CRASH_DET_ONLY_IN_NORMAL_EN, MSG_CRASH_DET_ONLY_IN_NORMAL_CZ }; -const char MSG_CRASH_DET_STEALTH_FORCE_OFF_EN[] PROGMEM = "WARNING: Crash detection disabled in Stealth mode"; -const char MSG_CRASH_DET_STEALTH_FORCE_OFF_CZ[] PROGMEM = "POZOR: Crash detekce deaktivovana ve Stealth modu"; +const char MSG_CRASH_DET_STEALTH_FORCE_OFF_EN[] PROGMEM = "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"; +const char MSG_CRASH_DET_STEALTH_FORCE_OFF_CZ[] PROGMEM = "\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu"; const char * const MSG_CRASH_DET_STEALTH_FORCE_OFF_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CRASH_DET_STEALTH_FORCE_OFF_EN, MSG_CRASH_DET_STEALTH_FORCE_OFF_CZ diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 15eee1dc..79c9410e 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -389,8 +389,8 @@ ve #define(length=15, lines=1) MSG_MENU_TEMPERATURES "Teploty" #define(length=15, lines=1) MSG_MENU_BELT_STATUS "Stav remenu" -#define(length=20, lines=4) MSG_CRASH_DET_ONLY_IN_NORMAL "Crash detekce muze byt zapnuta pouze v Normal modu" -#define(length=20, lines=4) MSG_CRASH_DET_STEALTH_FORCE_OFF "POZOR: Crash detekce deaktivovana ve Stealth modu" +#define(length=20, lines=4) MSG_CRASH_DET_ONLY_IN_NORMAL "\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu" +#define(length=20, lines=4) MSG_CRASH_DET_STEALTH_FORCE_OFF "\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu" #define(length=20, lines=4) MSG_AUTOLOADING_ENABLED "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..." #define(length=20, lines=4) MSG_AUTOLOADING_ONLY_IF_FSENS_ON "Automaticke zavadeni filamentu dostupne pouze pri zapnutem filament senzoru..." diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 2a17a710..b9244283 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -395,8 +395,8 @@ #define(length=17, lines=1) MSG_SECOND_SERIAL_ON "RPi port [on]" #define(length=17, lines=1) MSG_SECOND_SERIAL_OFF "RPi port [off]" -#define(length=20, lines=4) MSG_CRASH_DET_ONLY_IN_NORMAL "Crash detection can be turned on only in Normal mode." -#define(length=20, lines=4) MSG_CRASH_DET_STEALTH_FORCE_OFF "WARNING: Crash detection disabled in Stealth mode" +#define(length=20, lines=4) MSG_CRASH_DET_ONLY_IN_NORMAL "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode" +#define(length=20, lines=4) MSG_CRASH_DET_STEALTH_FORCE_OFF "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode" #define(length=20, lines=4) MSG_AUTOLOADING_ENABLED "Autoloading filament is active, just press the knob and insert filament..." #define(length=20, lines=4) MSG_AUTOLOADING_ONLY_IF_FSENS_ON "Autoloading filament available only when filament sensor is turned on..." diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b00995e1..01245d6c 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3293,9 +3293,36 @@ static void lcd_sort_type_set() { } #endif //SDCARD_SORT_ALPHA +static void lcd_crash_mode_info() +{ + lcd_update_enable(true); + static uint32_t tim = 0; + if ((tim + 1000) < millis()) + { + fputs_P(MSG_CRASH_DET_ONLY_IN_NORMAL, lcdout); + tim = millis(); + } + if (lcd_clicked()) + { + if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) lcd_goto_menu(lcd_tune_menu, 18); + else lcd_goto_menu(lcd_settings_menu, 16, true, true); + } +} + static void lcd_crash_mode_info2() { - lcd_show_fullscreen_message_and_wait_P(MSG_CRASH_DET_STEALTH_FORCE_OFF); + lcd_update_enable(true); + static uint32_t tim = 0; + if ((tim + 1000) < millis()) + { + fputs_P(MSG_CRASH_DET_STEALTH_FORCE_OFF, lcdout); + tim = millis(); + } + if (lcd_clicked()) + { + if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) lcd_goto_menu(lcd_tune_menu, 16); + else lcd_goto_menu(lcd_settings_menu, 14, true, true); + } } static void lcd_filament_autoload_info() @@ -3311,8 +3338,6 @@ static void lcd_fsensor_fail() static void lcd_silent_mode_set() { SilentModeMenu = !SilentModeMenu; eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); - if (CrashDetectMenu && SilentModeMenu) - lcd_crash_mode_info2(); #ifdef TMC2130 st_synchronize(); if (tmc2130_wait_standstill_xy(1000)) {} @@ -3325,16 +3350,10 @@ static void lcd_silent_mode_set() { sei(); #endif //TMC2130 digipot_init(); - if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL)) lcd_goto_menu(lcd_tune_menu, 8); - else lcd_goto_menu(lcd_settings_menu, 7); + if (CrashDetectMenu && SilentModeMenu) + lcd_goto_menu(lcd_crash_mode_info2); } -static void lcd_crash_mode_info() -{ - lcd_show_fullscreen_message_and_wait_P(MSG_CRASH_DET_ONLY_IN_NORMAL); -} - - static void lcd_crash_mode_set() { CrashDetectMenu = !CrashDetectMenu; //set also from crashdet_enable() and crashdet_disable() @@ -3823,7 +3842,7 @@ static void lcd_settings_menu() if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set); else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set); } - else MENU_ITEM(function, MSG_CRASHDETECT_NA, lcd_crash_mode_info); + else MENU_ITEM(submenu, MSG_CRASHDETECT_NA, lcd_crash_mode_info); if (temp_cal_active == false) { MENU_ITEM(function, MSG_TEMP_CALIBRATION_OFF, lcd_temp_calibration_set); @@ -5167,7 +5186,7 @@ static void lcd_tune_menu() if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set); else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set); } - else MENU_ITEM(function, MSG_CRASHDETECT_NA, lcd_crash_mode_info); + else MENU_ITEM(submenu, MSG_CRASHDETECT_NA, lcd_crash_mode_info); END_MENU(); } From ebf6d08fae541cf26cf2b71b3fc93b5802e19355 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 12 Jan 2018 21:02:49 +0100 Subject: [PATCH 3/4] Crash detection - message on lcd (PFW-115) --- Firmware/Marlin_main.cpp | 6 +++--- Firmware/language_all.cpp | 11 +++++++++-- Firmware/language_all.h | 2 ++ Firmware/language_cz.h | 3 ++- Firmware/language_en.h | 3 ++- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 51194ad6..7d9d37aa 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -593,7 +593,7 @@ extern int8_t CrashDetectMenu; void crashdet_enable() { - MYSERIAL.println("crashdet_enable"); +// MYSERIAL.println("crashdet_enable"); tmc2130_sg_stop_on_crash = true; eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0xFF); CrashDetectMenu = 1; @@ -602,7 +602,7 @@ void crashdet_enable() void crashdet_disable() { - MYSERIAL.println("crashdet_disable"); +// MYSERIAL.println("crashdet_disable"); tmc2130_sg_stop_on_crash = false; tmc2130_sg_crash = false; eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00); @@ -657,7 +657,7 @@ void crashdet_detected() #endif lcd_update_enable(true); lcd_update(2); - lcd_setstatuspgm(PSTR("Crash detected!")); + lcd_setstatuspgm(MSG_CRASH_DETECTED); if (yesno) { enquecommand_P(PSTR("G28 X")); diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index c79395db..7aa0dcc3 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -429,13 +429,20 @@ const char * const MSG_CRASHDETECT_ON_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CRASHDETECT_ON_CZ }; -const char MSG_CRASH_DETECTED_EN[] PROGMEM = "Crash detected. Continue printing?"; -const char MSG_CRASH_DETECTED_CZ[] PROGMEM = "Naraz detekovan, pokracovat v tisku?"; +const char MSG_CRASH_DETECTED_EN[] PROGMEM = "Crash detected."; +const char MSG_CRASH_DETECTED_CZ[] PROGMEM = "Detekovan naraz."; const char * const MSG_CRASH_DETECTED_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_CRASH_DETECTED_EN, MSG_CRASH_DETECTED_CZ }; +const char MSG_CRASH_DETECTED2_EN[] PROGMEM = "Crash detected. Continue printing?"; +const char MSG_CRASH_DETECTED2_CZ[] PROGMEM = "Naraz detekovan, pokracovat v tisku?"; +const char * const MSG_CRASH_DETECTED2_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_CRASH_DETECTED2_EN, + MSG_CRASH_DETECTED2_CZ +}; + const char MSG_CRASH_DET_ONLY_IN_NORMAL_EN[] PROGMEM = "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"; const char MSG_CRASH_DET_ONLY_IN_NORMAL_CZ[] PROGMEM = "\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu"; const char * const MSG_CRASH_DET_ONLY_IN_NORMAL_LANG_TABLE[LANG_NUM] PROGMEM = { diff --git a/Firmware/language_all.h b/Firmware/language_all.h index d9577ca2..238bfc68 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -156,6 +156,8 @@ extern const char* const MSG_CRASHDETECT_ON_LANG_TABLE[LANG_NUM]; #define MSG_CRASHDETECT_ON LANG_TABLE_SELECT(MSG_CRASHDETECT_ON_LANG_TABLE) extern const char* const MSG_CRASH_DETECTED_LANG_TABLE[LANG_NUM]; #define MSG_CRASH_DETECTED LANG_TABLE_SELECT(MSG_CRASH_DETECTED_LANG_TABLE) +extern const char* const MSG_CRASH_DETECTED2_LANG_TABLE[LANG_NUM]; +#define MSG_CRASH_DETECTED2 LANG_TABLE_SELECT(MSG_CRASH_DETECTED2_LANG_TABLE) extern const char* const MSG_CRASH_DET_ONLY_IN_NORMAL_LANG_TABLE[LANG_NUM]; #define MSG_CRASH_DET_ONLY_IN_NORMAL LANG_TABLE_SELECT(MSG_CRASH_DET_ONLY_IN_NORMAL_LANG_TABLE) extern const char* const MSG_CRASH_DET_STEALTH_FORCE_OFF_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 79c9410e..7c9fba58 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -359,7 +359,8 @@ ve #define(length=17, lines=1) MSG_FSENS_AUTOLOAD_OFF "F. autozav. [vyp]" #define(length=17, lines=1) MSG_FSENS_AUTOLOAD_NA "F. autozav. [N/A]" #define MSG_RECOVERING_PRINT "Obnovovani tisku " -#define(length=20, lines=2) MSG_CRASH_DETECTED "Naraz detekovan, pokracovat v tisku?" +#define(length=20, lines=1) MSG_CRASH_DETECTED "Detekovan naraz." +#define(length=20, lines=2) MSG_CRASH_DETECTED2 "Naraz detekovan, pokracovat v tisku?" #define MSG_SELFTEST_AXIS "Osa" #define MSG_SELFTEST_AXIS_LENGTH "Delka osy" diff --git a/Firmware/language_en.h b/Firmware/language_en.h index b9244283..09f6118c 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -366,7 +366,8 @@ #define(length=20, lines=2) MSG_RECOVER_PRINT "Blackout occurred. Recover print?" #define(length=20, lines=1) MSG_RECOVERING_PRINT "Recovering print " -#define(length=20, lines=2) MSG_CRASH_DETECTED "Crash detected. Continue printing?" +#define(length=20, lines=1) MSG_CRASH_DETECTED "Crash detected." +#define(length=20, lines=2) MSG_CRASH_DETECTED2 "Crash detected. Continue printing?" #define(length=15, lines=1) MSG_INFO_EXTRUDER "Extruder info" #define(length=15, lines=1) MSG_MENU_VOLTAGES "Voltages" From 530dfba417a9b3efd809fc81aa9a0f7bd6149e0b Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Fri, 12 Jan 2018 21:21:21 +0100 Subject: [PATCH 4/4] Status message limit (PFW-124) --- Firmware/ultralcd.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 01245d6c..1e94693e 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -388,6 +388,7 @@ static void lcd_status_screen() if(lcd_status_message_level == 0){ strncpy_P(lcd_status_message, WELCOME_MSG, LCD_WIDTH); + lcd_finishstatus(); } if (eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 1) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 2) == 255 && eeprom_read_byte((uint8_t *)EEPROM_TOTALTIME + 3) == 255) { @@ -6420,6 +6421,7 @@ static bool check_file(const char* filename) { } card.printingHasFinished(); strncpy_P(lcd_status_message, WELCOME_MSG, LCD_WIDTH); + lcd_finishstatus(); return result; } @@ -6760,6 +6762,7 @@ void lcd_setstatuspgm(const char* message) if (lcd_status_message_level > 0) return; strncpy_P(lcd_status_message, message, LCD_WIDTH); + lcd_status_message[LCD_WIDTH] = 0; lcd_finishstatus(); } void lcd_setalertstatuspgm(const char* message)