3dprinter: add start and stop macros

This commit is contained in:
makefu 2024-01-22 23:53:44 +01:00
parent 95251fd560
commit 4d5938ade7
No known key found for this signature in database
GPG key ID: 36F7711F3FC0F225

View file

@ -142,7 +142,7 @@ screw_thread: CW-M5
[mcu]
serial: /dev/ttyACM0
[neopixel extruder]
[neopixel extruder_led]
pin: PB7
initial_RED: 1.0
initial_GREEN: 1.0
@ -291,6 +291,242 @@ gcode:
[gcode_macro CALIBRATE_SCREWS]
gcode:
SCREWS_TILT_CALCULATE
[gcode_macro START_PRINT]
gcode:
#Get Printer built volume dimensions
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
{% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
#Get Nozzle diameter and filament width for conditioning
{% set NOZZLE = printer.extruder.nozzle_diameter|default(0.4)|float %}
#Set Start coordinates of priming lines
{% set X_START = 2.0|default(2.0)|float %}
{% set Y_START = 20.0|default(20.0)|float %}
#Get Bed and Extruder temperature from Slicer GCode
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
SET_LED LED=extruder_led RED=1 GREEN=0 BLUE=0
M117 Preheat nozzle and bed
M104 S{EXTRUDER_TEMP}
M140 S{BED_TEMP}
# Reset the G-Code Z offset (adjust Z offset if needed)
SET_GCODE_OFFSET Z=0.0 MOVE=1
G28
# {% if not "x" in printer.toolhead.homed_axes %}
# {% if not "y" in printer.toolhead.homed_axes %}
# {% if not "z" in printer.toolhead.homed_axes %}
# G28
# {% else %}
# G28 X Y
# {% endif %}
# {% else %}
# {% if not "z" in printer.toolhead.homed_axes %}
# G28 X Z
# {% else %}
# G28 X
# {% endif %}
# {% endif %}
# {% else %}
# {% if not "y" in printer.toolhead.homed_axes %}
# {% if not "z" in printer.toolhead.homed_axes %}
# G28 Y Z
# {% else %}
# G28 Y
# {% endif %}
# {% else %}
# {% if not "z" in printer.toolhead.homed_axes %}
# G28 Z
# {% endif %}
# {% endif %}
# {% endif %}
# {% if not "x" in printer.toolhead.homed_axes %} # If X-Axis not homed.
# M117 Homing X-Axis...
# G28 X0
# {% endif %}
# {% if not "y" in printer.toolhead.homed_axes %} # If Y-Axis not homed.
# M117 Homing Y-Axis...
# G28 Y0
# {% endif %}
# {% if not "z" in printer.toolhead.homed_axes %} # If Y-Axis not homed.
# M117 Homing Z-Axis...
# G28 Z0
# {% endif %}
# Use the bed mesh
BED_MESH_PROFILE LOAD=default
#Move up to clean bed
G1 Y{Y_START} Z{Z_MAX/4.0} F6000
SET_LED LED=extruder_led RED=1 GREEN=1 BLUE=0
M117 Heat nozzle and bed
M190 S{BED_TEMP}
M109 S{EXTRUDER_TEMP}
PRIME_LINE
M117 Printing
[gcode_macro PRIME_LINE]
gcode:
#Get Printer built volume dimensions
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
{% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
#Get Nozzle diameter and filament width for conditioning
{% set NOZZLE = printer.extruder.nozzle_diameter|default(0.4)|float %}
#Set Start coordinates of priming lines
{% set X_START = 2.0|default(2.0)|float %}
{% set Y_START = 20.0|default(20.0)|float %}
#Calculate Primer line extrusion volume and filament length
{% set NOZZLE75 = 0.75 * NOZZLE %}
SET_LED LED=extruder_led RED=0 GREEN=1 BLUE=0
M117 Print prime Line
#Precondition extruder
G92 E0 ; reset extruder
G1 Z2.0 F3000 ; move z up little to prevent scratching of surface
G1 X{X_START} Y{Y_START + 20} Z{NOZZLE75} F5000.0 ; move to start-line position
G1 X{X_START} Y{Y_START + 20 + 160.0} Z{NOZZLE75} F1500.0 E15 ; draw 1st line
G1 X{X_START + NOZZLE / 2.0} Y{Y_START + 180.0} Z{NOZZLE} F5000.0 ; move to side a little
G1 X{X_START + NOZZLE / 2.0} Y{Y_START} Z{NOZZLE} F1500.0 E30 ; draw 2nd line
G92 E0 ; reset extruder
G1 Z2.0 F3000 ; move z up little to prevent scratching of surface
SET_LED LED=extruder_led RED=1 GREEN=1 BLUE=1
[gcode_macro END_PRINT]
gcode:
#Get Printer built volume dimensions
{% set Y_START = 2.0|default(2.0)|float %}
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
{% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
SET_LED LED=extruder_led RED=1 GREEN=0 BLUE=0
M117 Fix-up extruder
G91
G1 E-2 F2700
G1 E-1.5 Z0.2 F2400
G1 X5 Y5 F6000
G1 Z10
G90
M117 Present print
{% if printer.toolhead.position.z + 10 > Z_MAX/4.0 %}
G1 X{X_MAX / 2} Y{Y_MAX * 0.8} Z{printer.toolhead.position.z + 10} F6000
{% else %}
G1 X{X_MAX / 2} Y{Y_MAX * 0.8} Z{Z_MAX/4.0} F6000
{% endif %}
M117 Poweroff
M106 S0
M104 S0
M140 S0
M84 #Disable Steppers
SET_LED LED=extruder_led RED=0 GREEN=0 BLUE=0
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
gcode:
SET_LED LED=extruder_led RED=0 GREEN=0 BLUE=1
PAUSE_BASE
_TOOLHEAD_PARK_PAUSE_CANCEL
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
SET_LED LED=extruder_led RED=0 GREEN=1 BLUE=0
##### 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}
SET_LED LED=extruder_led RED=1 GREEN=1 BLUE=1
[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
SET_LED LED=extruder_led RED=0 GREEN=0 BLUE=0
[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description: Helper: park toolhead used in PAUSE and CANCEL_PRINT
variable_extrude: 1.0
gcode:
SET_LED LED=extruder_led RED=1 GREEN=1 BLUE=0
##### 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 %}
# added via klipper configuration logic
# to generate: