Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewritten FILAMENT_CHANGE_ENABLE feature #3662

Merged

Conversation

thinkyhead
Copy link
Member

@thinkyhead thinkyhead commented May 2, 2016

Rebased and squashed commits on behalf of @clexpert

Reference: #3638

(Don't mix up with Manual filament change #3605)

Background

Months ago, someone suggested reworking (or at leats make existing function work) Auto filament change in #2926 and #2933. This function is working (as mentioned there) in Prusa's firmware and many other closed-source 3D printer. But neither of them is sufficient to be publicated for community of most used 3D firmware, with variety of printers, extruders and displays. So we started working on complete rewrite of filament change function, to make it work for us and then make it open to everyone here on GitHub.

Functions

This change rewrites Auto Filament Change controlled by G-Code M600.
The procedure of change is:

  • Retract a bit and move axis to position set by Configuration or by G-Code parameters
  • Unload filament
  • Keep beeping and wait for user to insert filament and click on button (encoder)
  • Load filament through bowden (see Configuration for details)
  • Extrude some filament and ask user either to extrude more or to resume print
  • Move axis back and continue printing
    Every step is clearly documented with information messages displayed on the display. As suggested by others, KEEP_ALIVE is also used. Simple working procedure makes it easy to change filament for everyone.

TODO list for community

  • Check behaviour on DELTA printers
  • Choose load and extrude distances for all example printers
  • Translate messages

@clexpert
Copy link
Contributor

clexpert commented May 2, 2016

@thinkyhead Great! Thank you so much!

@thinkyhead
Copy link
Member Author

This PR and #3605 will need to be reconciled before either one could be merged. Maybe we can put together a mashup of the two. It will have to be for 1.1.1 / 1.2.0 at this point. Feature freeze, and all that.

@clexpert
Copy link
Contributor

clexpert commented May 4, 2016

@thinkyhead I am able to rewrite #3605 (Manual filament change) to be reconciled with my #3662 / #3638 (my Automatic filament change) if you want. Just say. I am ready to do it.

@thinkyhead
Copy link
Member Author

@clexpert Please feel free to harmonize these features. If you need any assistance, don't hesitate to ask.

@clexpert
Copy link
Contributor

clexpert commented May 4, 2016

@thinkyhead Thank you. I am going to do it.

@clexpert
Copy link
Contributor

clexpert commented May 4, 2016

@thinkyhead I have great idea and one problem. My idea:
1- I will rewrite preheat code and configuration for more materials than ABS and PLA, and for multiple extruders too. This change is important for next step.
2- I will rewrite manual filament exchange to two commands Load filament and Unload filament (better than one manual exchange) with submenus for multiple extruders and for multiple materials.
What do you think about it?
And, problem - would you tell me an information how I should continue in work when this commit is not merged, and next changes are dependent on this one (filament change configuration)?

@jbrazio jbrazio added this to the 1.1.0 milestone May 4, 2016
@jbrazio
Copy link
Contributor

jbrazio commented May 4, 2016

I will rewrite preheat code and configuration for more materials than ABS and PLA

@clexpert Why ? If we really need a pre-heat function why don we kill "ABS" and "PLA" and have only a "Pre-heat" LCD menu, when we click Marlin ask "Target temperature ?". Nowadays there are too much materials to have dedicated options to each one of them..

I will rewrite manual filament exchange to two commands

@clexpert Are you willing to rewrite it as an object ?

@clexpert
Copy link
Contributor

clexpert commented May 4, 2016

@jbrazio I would like to make Marlin firmware very comfortable. So I would like to add several materials with their temperatures (with define enable/disable in configuration file). And these material configurations could be easily used in unload/load function. For example: unload PLA from extruder 2 (lower temperature) and load ABS to extruder 2 (higher temperature). Is it problem? Do you have any idea?

Are you willing to rewrite it as an object ?

Please, would you make yourself clear? I did not understand what do you mean.
So, I am willing improve Marlin firmware as much as possible and become active participant of useful improvements :)

@jbrazio
Copy link
Contributor

jbrazio commented May 4, 2016

We have multiple print materials now and each one of them requires a specific temperature, then inside each material you may have different temperatures according with the material color and/or manufacturer.. let's imagine 5 different materials, three colors each.. that's 15 different pre-heat temperatures.

Instead of having all of this, we could have a Pre-heat function the user on the LCD would select it and click then the LCD would show something like Pre-heat temperature ? 100C with the "100C" blinking, when you move the encoder wheel the temperature would go up or down, when the user clicks it would start heating the hotend to the selected temperature.

With this method we would completely remove the two existing pre-heat options, they where introduced when only two printing materials existed.. this is no longer our reality.

You have written your code using C I was asking if you could "convert" it to C++ using the object/class methodology, see PR #3625 code (printcounter.h and printcounter.cpp) for an example.

@clexpert
Copy link
Contributor

clexpert commented May 4, 2016

@jbrazio I think that selectable temperature in preheat, load filament, and unload filament is not comfortable. I could imagine several predefined temperatures in 10 degree interval, for example 210 - 220 - 230 - 240 - 250. It is partially comfortable. Better than manually +/- 1 degree - very poor and slow control. But 10 separate materials are the most comfortable. What do you think?

I can write code using object/class c++ but I think that load and unload filament functions are not suitable for objects. That is only few lines of code in ultralcd.cpp. And it would have to be static class. Without any advantage in my opinion.

@jbrazio
Copy link
Contributor

jbrazio commented May 4, 2016

Better than manually +/- 1 degree

Oh yes, once the code is in, this is a question of fine tuning the adder. I'm completely OK with it @clexpert !
Extruder related stuff inside the LCD code.. for me makes no sense, that will have to change in the future. The point here is that we will go into that direction, I advise to build new features more or less already inline with what we will be our code future, ether it will be done now or someone will have to rework it from scratch again.

@Blue-Marlin
Copy link
Contributor

Instead of having all of this, we could have a Pre-heat function the user on the LCD would select it and click then the LCD would show something like Pre-heat temperature ? 100C with the "100C" blinking, when you move the encoder wheel the temperature would go up or down, when the user clicks it would start heating the hotend to the selected temperature.

Horray! We are already there. Use the nozzle temperatures directly. Let's drop the preheat stuff completely. Dealing with that many materials is a good job for a slicer. Alone the amount of string space for 10 materials makes me dizzy. (partly joking)

If configurable from 0 to n and 0 deactivates as much related code as possible, the idea is ok for me.

@jbrazio
Copy link
Contributor

jbrazio commented May 5, 2016

If done correctly we may scrap a few bytes.. @clexpert what do you think ?

@clexpert
Copy link
Contributor

clexpert commented May 5, 2016

Ufff...Throw an user comfort due to few bytes of code?

@jbrazio
Copy link
Contributor

jbrazio commented May 5, 2016

Why having the user to select from a list of names:

  • PLA
  • ABS
  • Ninjaflex
  • Nylon

Can be worse than selecting the desired temp ?

@thinkyhead
Copy link
Member Author

thinkyhead commented May 6, 2016

how I should continue in work when this commit is not merged

git remote add upstream [email protected]:MarlinFirmware/Marlin.git
git fetch upstream
git checkout upstream/RCBugFix -b RCBugFix

git remote add thinkyhead [email protected]:thinkyhead/Marlin.git
git fetch thinkyhead
git checkout thinkyhead/rc_fixup_auto_filament_change -b continue_AFC

# update your local copy of RCBugFix if you want…
git checkout RCBugFix
git merge upstream/RCBugFix

# then you can rebase your work on it
git checkout continue_AFC
git rebase RCBugFix

# if you don't want to make a copy of RCBugFix, you can just use the remote
git checkout continue_AFC
git fetch upstream
git rebase upstream/RCBugFix

After you make your additional changes, you will then be able submit a PR to RCBugFix. You can also submit a PR to thinkyhead/rc_fixup_auto_filament_change, but only if it is rebased to the same point as your working copy (i.e., we both rebase to RCBugFix at the same point).

@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch from bb327ce to 9e639ff Compare May 27, 2016 02:02
@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch 5 times, most recently from 05aa73c to 62d9f88 Compare May 31, 2016 18:24
@thinkyhead
Copy link
Member Author

thinkyhead commented Jun 25, 2016

Ok, so I've added a helpful new macro to ultralcd.cpp called STATIC_ITEM that displays static text as a line in a menu display. The first static item in the menu is unselectable, so if you try to move the cursor up to it, it should automatically push the cursor down.

I've also made the display of the message lines dependent on whether the strings are defined. So now there's an option to do conditional definitions of these strings, if you want to leave out the second and/or third lines instead of defining them as a blank strings.

I'm going to add the shorter message strings next and try not to make too much of a mess. Take a look at language_en.h for the changes.

@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch 2 times, most recently from 47c9f22 to 6a01e22 Compare June 25, 2016 02:45
@petrzjunior
Copy link
Contributor

@thinkyhead Oh thank very much! I had some ideas before I went to bed, but this is incredible! What about making a condition on "Next options" - don't display heading when only 2 lines available so that user won't have to scroll.

@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch 2 times, most recently from 4366888 to c2c5141 Compare June 26, 2016 23:21
@thinkyhead
Copy link
Member Author

thinkyhead commented Jun 26, 2016

If this works well in testing, we could merge it anytime.
I'm especially interested to see how the STATIC_ITEM works out.

@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch 2 times, most recently from 417423b to 9f1fd47 Compare July 2, 2016 03:50
@thinkyhead thinkyhead force-pushed the rc_fixup_auto_filament_change branch from 9f1fd47 to a06c516 Compare July 2, 2016 22:52
@thinkyhead thinkyhead merged commit b37e727 into MarlinFirmware:RCBugFix Jul 2, 2016
@thinkyhead thinkyhead deleted the rc_fixup_auto_filament_change branch July 2, 2016 23:20
thinkyhead added a commit that referenced this pull request Jul 3, 2016
Follow-up the PR #3662 (Rewritten FILAMENT_CHANGE_ENABLE feature)
@ghost
Copy link

ghost commented Jul 3, 2016

I got much compilation warnings.

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_info_stats_menu()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1930:83: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32_t {aka long unsigned int}' [-Wformat=]

         sprintf(printTime, "%02d:%02d", stats.printTime / 60, stats.printTime % 60);

                                                                                   ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1930:83: warning: format '%d' expects argument of type 'int', but argument 4 has type 'uint32_t {aka long unsigned int}' [-Wformat=]

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1933:9: note: in expansion of macro 'START_MENU'

         START_MENU();

         ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1933:9: note: in expansion of macro 'START_MENU'

         START_MENU();

         ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_info_thermistors_menu()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1948:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:1948:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_info_board_menu()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2000:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2000:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_info_printer_menu()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2021:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2021:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_init_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2072:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2072:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_unload_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2085:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2085:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_insert_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2098:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2098:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_load_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2111:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2111:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_extrude_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2124:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2124:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp: In function 'void lcd_filament_change_resume_message()':

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:10: warning: unused variable 'wasClicked' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

          ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2137:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:229:36: warning: unused variable 'itemSelected' [-Wunused-variable]

     bool wasClicked = LCD_CLICKED, itemSelected; \

                                    ^

\AppData\Local\Temp\build6674025c445f92d0b07185e4e4080804.tmp\sketch\ultralcd.cpp:2137:7: note: in expansion of macro 'START_MENU'

       START_MENU();

       ^
Are these no problem?

@ghost
Copy link

ghost commented Jul 3, 2016

Um, about warning of format, it seems that it hasn't real harm.

Also warnings of unused variable are no problem probably...

@thinkyhead
Copy link
Member Author

@esenapaj Unused variable warnings are annoying, true. We could add UNUSED() for both of these variables, but I decided to just eliminate the itemSelected variable altogether, and only define wasClicked on screens with real menu items.

@jbrazio
Copy link
Contributor

jbrazio commented Jul 11, 2016

@clexpert @petrzjunior do you care to write a markdown documentation for this feature so we can update the website ?

@clexpert
Copy link
Contributor

@jbrazio Yes, of course. We are happy to do it.

CONSULitAS pushed a commit to CONSULitAS/Marlin-K8200 that referenced this pull request Aug 18, 2016
…E feature)

・Update a forgotten Configuration_adv.h of Cartesio
@totalitarian
Copy link

Which of these values controls how fast the print head returns back to the print area after a filament change. I find it too slow a the moment cause excessive ooze.

  #define PAUSE_PARK_X_POS 3                  // X position of hotend
  #define PAUSE_PARK_Y_POS 3                  // Y position of hotend
  #define PAUSE_PARK_Z_ADD 10                 // Z addition of hotend (lift)
  #define PAUSE_PARK_XY_FEEDRATE 100          // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
  #define PAUSE_PARK_Z_FEEDRATE 3             // Z axis feedrate in mm/s (not used for delta printers)
  #define PAUSE_PARK_RETRACT_FEEDRATE 60      // Initial retract feedrate in mm/s
  #define PAUSE_PARK_RETRACT_LENGTH 2         // Initial retract in mm
                                              // It is a short retract used immediately after print interrupt before move to filament exchange position
  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 40  // Unload filament feedrate in mm/s - filament unloading can be fast
  #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
                                              // Longer length for bowden printers to unload filament from whole bowden tube,
                                              // shorter length for printers without bowden to unload filament from extruder only,
                                              // 0 to disable unloading for manual unloading
  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
  #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
                                              // Short or zero length for printers without bowden where loading is not used
  #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 40   // Extrude filament feedrate in mm/s - must be slower than load feedrate
  #define ADVANCED_PAUSE_EXTRUDE_LENGTH 10    // Extrude filament length in mm after filament is loaded over the hotend,
                                              // 0 to disable for manual extrusion
                                              // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
                                              // or until outcoming filament color is not clear for filament color change
  #define PAUSE_PARK_NOZZLE_TIMEOUT 120        // Turn off nozzle if user doesn't change filament within this time limit in seconds
  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 1 // Number of alert beeps before printer goes quiet
  #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
                                              // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
  //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change

@petrzjunior
Copy link
Contributor

PAUSE_PARK_XY_FEEDRATE is the one which defines the speed of X a Y axis movements, when parking as well as while resuming the print.
Reference: Marlin_main.cpp, line 6403

drewmoseley pushed a commit to drewmoseley/Marlin that referenced this pull request Nov 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants