From 0c9121e99e1cc5bc94df8e585a879b6da4b67df0 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 11 Jun 2019 17:08:56 +0200 Subject: [PATCH] Use loop to enquecommand_P() in first layer calibration. --- Firmware/first_lay_cal.cpp | 81 +++++++++++++++++++++++++++++++------- Firmware/first_lay_cal.h | 2 + Firmware/ultralcd.cpp | 25 +----------- 3 files changed, 70 insertions(+), 38 deletions(-) diff --git a/Firmware/first_lay_cal.cpp b/Firmware/first_lay_cal.cpp index 8f12bb965..60bb5440a 100644 --- a/Firmware/first_lay_cal.cpp +++ b/Firmware/first_lay_cal.cpp @@ -8,27 +8,28 @@ #include "Configuration_prusa.h" #include "language.h" #include "Marlin.h" +#include "mmu.h" #include -static const char cmd_0[] PROGMEM = "M107"; -static const char cmd_1[] PROGMEM = "M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP); -static const char cmd_2[] PROGMEM = "M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP); -static const char cmd_3[] PROGMEM = "M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP); -static const char cmd_4[] PROGMEM = "M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP); -static const char cmd_5[] PROGMEM = "G28"; -static const char cmd_6[] PROGMEM = "G92 E0.0"; +static const char cmd_preheat_0[] PROGMEM = "M107"; +static const char cmd_preheat_1[] PROGMEM = "M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP); +static const char cmd_preheat_2[] PROGMEM = "M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP); +static const char cmd_preheat_3[] PROGMEM = "M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP); +static const char cmd_preheat_4[] PROGMEM = "M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP); +static const char cmd_preheat_5[] PROGMEM = "G28"; +static const char cmd_preheat_6[] PROGMEM = "G92 E0.0"; static const char * const preheat_cmd[] PROGMEM = { - cmd_0, - cmd_1, - cmd_2, - cmd_3, - cmd_4, - cmd_5, //call MSG_M117_V2_CALIBRATION before - cmd_6, + cmd_preheat_0, + cmd_preheat_1, + cmd_preheat_2, + cmd_preheat_3, + cmd_preheat_4, + cmd_preheat_5, //call MSG_M117_V2_CALIBRATION before + cmd_preheat_6, }; void lay1cal_preheat() @@ -40,3 +41,55 @@ void lay1cal_preheat() } } + +static const char cmd_intro_mmu_0[] PROGMEM = "M83"; +static const char cmd_intro_mmu_1[] PROGMEM = "G1 Y-3.0 F1000.0"; +static const char cmd_intro_mmu_2[] PROGMEM = "G1 Z0.4 F1000.0"; +static const char cmd_intro_mmu_3[] PROGMEM = "G1 X55.0 E32.0 F1073.0"; // call T code before +static const char cmd_intro_mmu_4[] PROGMEM = "G1 X5.0 E32.0 F1800.0"; +static const char cmd_intro_mmu_5[] PROGMEM = "G1 X55.0 E8.0 F2000.0"; +static const char cmd_intro_mmu_6[] PROGMEM = "G1 Z0.3 F1000.0"; +static const char cmd_intro_mmu_7[] PROGMEM = "G92 E0.0"; +static const char cmd_intro_mmu_8[] PROGMEM = "G1 X240.0 E25.0 F2200.0"; +static const char cmd_intro_mmu_9[] PROGMEM = "G1 Y-2.0 F1000.0"; +static const char cmd_intro_mmu_10[] PROGMEM = "G1 X55.0 E25 F1400.0"; +static const char cmd_intro_mmu_11[] PROGMEM = "G1 Z0.20 F1000.0"; +static const char cmd_intro_mmu_12[] PROGMEM = "G1 X5.0 E4.0 F1000.0"; + +static const char * const intro_mmu_cmd[] PROGMEM = +{ + cmd_intro_mmu_0, + cmd_intro_mmu_1, + cmd_intro_mmu_2, + cmd_intro_mmu_3, // call T code before + cmd_intro_mmu_4, + cmd_intro_mmu_5, + cmd_intro_mmu_6, + cmd_intro_mmu_7, + cmd_intro_mmu_8, + cmd_intro_mmu_9, + cmd_intro_mmu_10, + cmd_intro_mmu_11, + cmd_intro_mmu_12, +}; + +void lay1cal_intro_line(char *cmd_buffer, uint8_t filament) +{ + if (mmu_enabled) + { + for (uint8_t i = 0; i < (sizeof(intro_mmu_cmd)/sizeof(intro_mmu_cmd[0])); ++i) + { + if (3 == i) + { + sprintf_P(cmd_buffer, PSTR("T%d"), filament); + enquecommand(cmd_buffer); + } + enquecommand_P(static_cast(pgm_read_ptr(&intro_mmu_cmd[i]))); + } + } + else + { + enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0")); + enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0")); + } +} diff --git a/Firmware/first_lay_cal.h b/Firmware/first_lay_cal.h index 5068e3379..12f1a3d96 100644 --- a/Firmware/first_lay_cal.h +++ b/Firmware/first_lay_cal.h @@ -7,8 +7,10 @@ #ifndef FIRMWARE_FIRST_LAY_CAL_H_ #define FIRMWARE_FIRST_LAY_CAL_H_ +#include void lay1cal_preheat(); +void lay1cal_intro_line(char *cmd_buffer, uint8_t filament); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 66bc453ab..4ce79dc38 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1396,30 +1396,7 @@ void lcd_commands() menu_depth = 0; menu_submenu(lcd_babystep_z); - if (mmu_enabled) - { - enquecommand_P(PSTR("M83")); //intro line - enquecommand_P(PSTR("G1 Y-3.0 F1000.0")); //intro line - enquecommand_P(PSTR("G1 Z0.4 F1000.0")); //intro line - strcpy(cmd1, "T"); - strcat(cmd1, itostr3left(filament)); - enquecommand(cmd1); - enquecommand_P(PSTR("G1 X55.0 E32.0 F1073.0")); //intro line - enquecommand_P(PSTR("G1 X5.0 E32.0 F1800.0")); //intro line - enquecommand_P(PSTR("G1 X55.0 E8.0 F2000.0")); //intro line - enquecommand_P(PSTR("G1 Z0.3 F1000.0")); //intro line - enquecommand_P(PSTR("G92 E0.0")); //intro line - enquecommand_P(PSTR("G1 X240.0 E25.0 F2200.0")); //intro line - enquecommand_P(PSTR("G1 Y-2.0 F1000.0")); //intro line - enquecommand_P(PSTR("G1 X55.0 E25 F1400.0")); //intro line - enquecommand_P(PSTR("G1 Z0.20 F1000.0")); //intro line - enquecommand_P(PSTR("G1 X5.0 E4.0 F1000.0")); //intro line - - } else - { - enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0")); //intro line - enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0")); //intro line - } + lay1cal_intro_line(cmd1, filament); lcd_commands_step = 8; }