diff --git a/docs/Installation.md b/docs/Installation.md index 7dcdde2f..e95d0356 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -80,3 +80,19 @@ managed_services: KlipperScreen ``` !!! tip If you see warnings in other UIs ignore them until KlipperScreen finishes installing, and Moonraker is restarted. + + +## Printer Configuration + +Some basic configuration needs to be applied for correct functionality. + +```ini title="printer.cfg" +[virtual_sdcard] +path: ~/gcode_files +[display_status] +[pause_resume] +``` + +## Macros + +You may need some macros for the printer to function as you expected, [read more in the macros page](macros.md) diff --git a/docs/macros.md b/docs/macros.md index 3f80ed8a..ae444367 100644 --- a/docs/macros.md +++ b/docs/macros.md @@ -1,5 +1,164 @@ # Macros +## Recommended + +!!! note + If you have already installed other UIs then you may have this macros already, and it's usually asked by KIAUH + +None of the following macros are strictly required for KlipperScreen, but they provide the toolhead parking at pause and cancel. + +These can be assumed sane defaults, but should be checked and modified to your own needs. + + +### Pause +```yaml+jinja title="printer.cfg" +[gcode_macro PAUSE] +description: Pause the actual running print +rename_existing: PAUSE_BASE +gcode: + PAUSE_BASE + _TOOLHEAD_PARK_PAUSE_CANCEL +``` + +### Resume +```yaml+jinja title="printer.cfg" +[gcode_macro RESUME] +description: Resume the actual running print +rename_existing: RESUME_BASE +gcode: + ##### read extrude from _TOOLHEAD_PARK_PAUSE_CANCEL macro ##### + + {% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %} + #### get VELOCITY parameter if specified #### + {% if 'VELOCITY' in params|upper %} + {% set get_params = ('VELOCITY=' + params.VELOCITY) %} + {%else %} + {% set get_params = "" %} + {% endif %} + ##### end of definitions ##### + {% if printer.extruder.can_extrude|lower == 'true' %} + M83 + G1 E{extrude} F2100 + {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %} + {% else %} + {action_respond_info("Extruder not hot enough")} + {% endif %} + + RESUME_BASE {get_params} +``` + +### Park + +```yaml+jinja title="printer.cfg" +[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] +description: Helper: park toolhead used in PAUSE and CANCEL_PRINT +variable_extrude: 1.0 +gcode: + ##### set park positon for x and y ##### + # default is your max posion from your printer.cfg + + {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %} + {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %} + {% set z_park_delta = 2.0 %} + ##### calculate save lift position ##### + {% set max_z = printer.toolhead.axis_maximum.z|float %} + {% set act_z = printer.toolhead.position.z|float %} + {% if act_z < (max_z - z_park_delta) %} + {% set z_safe = z_park_delta %} + {% else %} + {% set z_safe = max_z - act_z %} + {% endif %} + ##### end of definitions ##### + {% if printer.extruder.can_extrude|lower == 'true' %} + M83 + G1 E-{extrude} F2100 + {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %} + {% else %} + {action_respond_info("Extruder not hot enough")} + {% endif %} + {% if "xyz" in printer.toolhead.homed_axes %} + G91 + G1 Z{z_safe} F900 + G90 + G1 X{x_park} Y{y_park} F6000 + {% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %} + {% else %} + {action_respond_info("Printer not homed")} + {% endif %} +``` + +### Cancel + +```yaml+jinja title="printer.cfg" +[gcode_macro CANCEL_PRINT] +description: Cancel the actual running print +rename_existing: CANCEL_PRINT_BASE +variable_park: True +gcode: + ## Move head and retract only if not already in the pause state and park set to true + + {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%} + _TOOLHEAD_PARK_PAUSE_CANCEL + {% endif %} + + TURN_OFF_HEATERS + CANCEL_PRINT_BASE +``` + +## Extrude Panel + +### LOAD_FILAMENT / UNLOAD_FILAMENT + +This macros are used in the Extrude panel `Load` and `Unload` buttons. and they will be hidden from the macros panel. + +The selected speed in the panel is transferred as a parameter. + +The following examples show how this can be used: + +```yaml+jinja title=" printer.cfg" +[gcode_macro LOAD_FILAMENT] +variable_load_distance: 50 +variable_purge_distance: 25 +gcode: + {% set speed = params.SPEED|default(300) %} + {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %} + SAVE_GCODE_STATE NAME=load_state + G91 + G92 E0 + G1 E{load_distance} F{max_velocity} # fast-load + G1 E{purge_distance} F{speed} # purge + RESTORE_GCODE_STATE NAME=load_state +``` + +!!! warning + `variable_load_distance` will depend on the printers distance from the extruder to the nozzle. + + For printers with long bowden tubes you may have to increase the extrude only distance in the configfile + + ```ini title=" printer.cfg" + [extruder] + max_extrude_only_distance: 600 # default is 50mm + ``` + + +```yaml+jinja title=" printer.cfg" +[gcode_macro UNLOAD_FILAMENT] +variable_unload_distance: 50 +variable_purge_distance: 25 +gcode: + {% set speed = params.SPEED|default(300) %} + {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %} + SAVE_GCODE_STATE NAME=unload_state + G91 + G92 E0 + G1 E{purge_distance} F{speed} # purge + G1 E-{unload_distance} F{max_velocity} # fast-unload + RESTORE_GCODE_STATE NAME=unload_state +``` + +if it loads too fast and your extruder can't keep up, you should adjust the `max_extrude_only_velocity` in `printer.cfg` + + ## Hidden by the interface All gcode_macros with the attribute `rename_existing` are hidden , because these are default Klipper Gcodes @@ -12,7 +171,7 @@ and these should be implemented in KlipperScreen itself with buttons already. Macros can be completely hidden in the interface by prefixing the name with an underscore. -```ini +```yaml+jinja title=" printer.cfg" [gcode_macro MY_AWESOME_GCODE] gcode: _MY_HELPER_CODE @@ -24,44 +183,3 @@ gcode: `MY_AWESOME_GCODE` appears in your interface settings, but `_MY_HELPER_CODE` does not. -## Extrude Panel - -### LOAD_FILAMENT / UNLOAD_FILAMENT - -This macros are used in the Extrude panel `Load` and `Unload` buttons. and they will be hidden from the macros panel. - -The selected speed in the panel is transferred as a parameter. - -The following examples show how this can be used: - -```ini -[gcode_macro LOAD_FILAMENT] -gcode: - {% set speed = params.SPEED|default(300) %} - {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity %} - SAVE_GCODE_STATE NAME=load_state - M300 # beep - G91 - G92 E0 - G1 E350 F{max_velocity * 60} # fast-load - G1 E25 F{speed} # purge - M300 - M300 - RESTORE_GCODE_STATE NAME=load_state -``` - -```ini -[gcode_macro UNLOAD_FILAMENT] -gcode: - {% set speed = params.SPEED|default(300) %} - {% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity %} - SAVE_GCODE_STATE NAME=unload_state - G91 - M300 # beep - G92 E0 - G1 E25 F{speed} # purge - G1 E-420 F{max_velocity * 60} # fast-unload - M300 - M300 - RESTORE_GCODE_STATE NAME=unload_state -```