590 lines
14 KiB
INI
590 lines
14 KiB
INI
# __ __
|
|
# | \/ |
|
|
# | \ / | __ _ ___ _ __ ___ ___
|
|
# | |\/| |/ _` |/ __| '__/ _ \/ __|
|
|
# | | | | (_| | (__| | | (_) \__ \
|
|
# |_| |_|\__,_|\___|_| \___/|___/
|
|
#
|
|
# Macros Configurations - Flsun V400
|
|
# Version 3.0
|
|
#
|
|
# Guislain Cyril
|
|
|
|
|
|
##################################################
|
|
# Start and End G-Codes
|
|
##################################################
|
|
|
|
[gcode_macro START_PRINT]
|
|
description: Start G-Code
|
|
gcode:
|
|
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
|
|
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}
|
|
LED_HOTEND_ON
|
|
G21
|
|
G90
|
|
M82
|
|
{% if printer.extruder.target != 0 %}
|
|
M104 S{EXTRUDER_TEMP}
|
|
{% else %}
|
|
M104 S150
|
|
{% endif %}
|
|
M140 S{BED_TEMP}
|
|
{% if printer.toolhead.homed_axes != "xyz" %}
|
|
G28
|
|
{% endif %}
|
|
G1 Z370 F3000
|
|
G1 X-150 F3000
|
|
M190 S{BED_TEMP}
|
|
M109 S{EXTRUDER_TEMP}
|
|
G1 Z1 F3000
|
|
G1 X-150 Y0 Z0.4
|
|
G92 E0
|
|
G3 X0 Y-130 I150 J1 Z0.3 E30 F2000
|
|
G92 E0
|
|
G1 E-1 F2100
|
|
|
|
|
|
[gcode_macro END_PRINT]
|
|
description: End G-Code
|
|
gcode:
|
|
M106 S0
|
|
M104 S0
|
|
M140 S0
|
|
G92 E0
|
|
G91
|
|
G1 E-1 F2100
|
|
G1 Z+5 F6000
|
|
G28
|
|
G90
|
|
LED_HOTEND_OFF
|
|
M84
|
|
|
|
|
|
##################################################
|
|
# Pause / Resume / Cancel Print
|
|
##################################################
|
|
|
|
[gcode_macro PAUSE]
|
|
description: Pause the current print
|
|
rename_existing: PAUSE_BASE
|
|
gcode:
|
|
##### set defaults #####
|
|
{% set x = params.X|default(0) %}
|
|
{% set y = params.Y|default(-90) %}
|
|
{% set z = params.Z|default(10)|float %}
|
|
{% set e = params.E|default(1) %}
|
|
##### calculate save lift position #####
|
|
{% set max_z = printer.toolhead.axis_maximum.z|float %}
|
|
{% set act_z = printer.toolhead.position.z|float %}
|
|
{% set lift_z = z|abs %}
|
|
{% if act_z < (max_z - lift_z) %}
|
|
{% set z_safe = lift_z %}
|
|
{% else %}
|
|
{% set z_safe = max_z - act_z %}
|
|
{% endif %}
|
|
##### end of definitions #####
|
|
RESPOND MSG="Pausing printing..."
|
|
PAUSE_BASE
|
|
G91
|
|
G1 E-{e} F2100
|
|
G1 Z{z_safe}
|
|
G90
|
|
G1 X{x} Y{y} F2500
|
|
|
|
|
|
[gcode_macro RESUME]
|
|
description: Resume the current print
|
|
rename_existing: RESUME_BASE
|
|
gcode:
|
|
##### set defaults #####
|
|
{% set e = params.E|default(1) %}
|
|
#### get VELOCITY parameter if specified ####
|
|
{% if 'VELOCITY' in params|upper %}
|
|
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
|
|
{% else %}
|
|
{% set get_params = "" %}
|
|
{% endif %}
|
|
##### end of definitions #####
|
|
G91
|
|
{% if printer["gcode_macro M600"].m600_enabled == 1 %}
|
|
RESPOND MSG="Nozzle heating..."
|
|
M109 S{printer["gcode_macro M600"].hotend_temp}
|
|
M106 S{printer["gcode_macro M600"].fan_speed}
|
|
RESPOND MSG="Loading filament..."
|
|
G0 E50 F800
|
|
G0 E30 F300
|
|
M400
|
|
SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=0
|
|
{% else %}
|
|
G1 E{e} F2100
|
|
{% endif %}
|
|
RESPOND MSG="Resuming printing..."
|
|
SET_IDLE_TIMEOUT TIMEOUT=1800
|
|
RESUME_BASE {get_params}
|
|
|
|
|
|
[gcode_macro CANCEL_PRINT]
|
|
description: Cancel the current print
|
|
rename_existing: CANCEL_PRINT_BASE
|
|
gcode:
|
|
RESPOND MSG="Printing canceled!"
|
|
G28
|
|
M106 S0
|
|
M104 S0
|
|
M140 S0
|
|
CANCEL_PRINT_BASE
|
|
|
|
|
|
##################################################
|
|
# Filament / Color Change
|
|
##################################################
|
|
|
|
[gcode_macro M600]
|
|
description: Filament change
|
|
variable_hotend_temp: 0
|
|
variable_m600_enabled: 0
|
|
variable_fan_speed: 0
|
|
gcode:
|
|
##### set defaults #####
|
|
{% set x = params.X|default(0) %}
|
|
{% set y = params.Y|default(-140) %}
|
|
{% set z = params.Z|default(10)|float %}
|
|
{% set e = params.E|default(1) %}
|
|
##### calculate save lift position #####
|
|
{% set max_z = printer.toolhead.axis_maximum.z|float %}
|
|
{% set act_z = printer.toolhead.position.z|float %}
|
|
{% set lift_z = z|abs %}
|
|
{% if act_z < (max_z - lift_z) %}
|
|
{% set z_safe = lift_z %}
|
|
{% else %}
|
|
{% set z_safe = max_z - act_z %}
|
|
{% endif %}
|
|
##### end of definitions #####
|
|
SAVE_GCODE_STATE NAME=M600_state
|
|
SET_IDLE_TIMEOUT TIMEOUT=86400
|
|
SET_GCODE_VARIABLE MACRO=M600 VARIABLE=m600_enabled VALUE=1
|
|
SET_GCODE_VARIABLE MACRO=M600 VARIABLE=hotend_temp VALUE={printer.extruder.target}
|
|
SET_GCODE_VARIABLE MACRO=M600 VARIABLE=fan_speed VALUE={printer.fan.speed}
|
|
RESPOND MSG="Pausing printing..."
|
|
PAUSE
|
|
G91
|
|
G1 E-{e} F2100
|
|
G1 Z{z_safe}
|
|
G90
|
|
G1 X{x} Y{y} F2500
|
|
RESPOND MSG="Unloading filament..."
|
|
G91
|
|
G0 E-10 F300
|
|
G0 E-30 F800
|
|
M400
|
|
RESPOND MSG="Nozzle heating stopped!"
|
|
M104 S0
|
|
M106 S0
|
|
RESTORE_GCODE_STATE NAME=M600_state
|
|
|
|
|
|
##################################################
|
|
# Load / Unload Filament
|
|
##################################################
|
|
|
|
[gcode_macro UNLOAD_FILAMENT]
|
|
description: Filament unloading
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
SAVE_GCODE_STATE NAME=unload_state
|
|
{% if printer.extruder.temperature < 200 %}
|
|
RESPOND MSG="Nozzle heating..."
|
|
M109 S200
|
|
{% endif %}
|
|
RESPOND MSG="Unloading filament..."
|
|
G91
|
|
G0 E-10 F300
|
|
G0 E-30 F800
|
|
RESTORE_GCODE_STATE NAME=unload_state
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro LOAD_FILAMENT]
|
|
description: Filament loading
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" and not printer.pause_resume.is_paused %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
SAVE_GCODE_STATE NAME=load_state
|
|
{% if printer.extruder.temperature < 200 %}
|
|
RESPOND MSG="Nozzle heating..."
|
|
M109 S200
|
|
{% endif %}
|
|
RESPOND MSG="Loading filament..."
|
|
G91
|
|
G0 E50 F800
|
|
G0 E30 F300
|
|
M400
|
|
RESTORE_GCODE_STATE NAME=load_state
|
|
{% endif %}
|
|
|
|
|
|
##################################################
|
|
# Calibrations
|
|
##################################################
|
|
|
|
[gcode_macro Z_OFFSET_CALIBRATION]
|
|
description: Measure Z-Offset
|
|
gcode:
|
|
SET_GCODE_OFFSET Z=0
|
|
G28
|
|
G1 X0 Y0 Z50 F2500
|
|
M400
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True # Enable if Knomi is used
|
|
PROBE_CALIBRATE
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False # Enable if Knomi is used
|
|
|
|
|
|
[gcode_macro ENDSTOPS_CALIBRATION]
|
|
description: Endstops Phase Calibration
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
{% if printer.toolhead.homed_axes != "xyz" %}
|
|
G28
|
|
{% endif %}
|
|
G91
|
|
G0 Z-80 F1500
|
|
G28
|
|
G91
|
|
G0 Z-80 F1500
|
|
G28
|
|
G91
|
|
G0 Z-80 F1500
|
|
G28
|
|
G91
|
|
G0 Z-80 F1500
|
|
G28
|
|
G91
|
|
G0 Z-80 F1500
|
|
ENDSTOP_PHASE_CALIBRATE stepper=stepper_a
|
|
ENDSTOP_PHASE_CALIBRATE stepper=stepper_b
|
|
ENDSTOP_PHASE_CALIBRATE stepper=stepper_c
|
|
M400
|
|
G28
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro DELTA_CALIBRATION]
|
|
description: Delta Calibration
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
SET_GCODE_OFFSET Z=0
|
|
BED_MESH_CLEAR
|
|
{% if printer.toolhead.homed_axes != "xyz" %}
|
|
G28
|
|
{% endif %}
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True # Enable if Knomi is used
|
|
DELTA_CALIBRATE
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False # Enable if Knomi is used
|
|
M400
|
|
G1 X0 Y0 Z50 F2500
|
|
G28
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro BED_LEVELING]
|
|
description: Bed Leveling
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
SET_GCODE_OFFSET Z=0
|
|
{% if printer.toolhead.homed_axes != "xyz" %}
|
|
G28
|
|
{% endif %}
|
|
G1 X0 Y0 Z50 F2500
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True # Enable if Knomi is used
|
|
BED_MESH_CALIBRATE
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False # Enable if Knomi is used
|
|
M400
|
|
G1 X0 Y0 Z50 F2500
|
|
G28
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro PRESSURE_ADVANCE]
|
|
description: Pressure Advance
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
SET_PRESSURE_ADVANCE ADVANCE=0
|
|
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
|
|
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
|
|
{% endif %}
|
|
|
|
|
|
##################################################
|
|
# Nozzle / Bed PID Calibration
|
|
##################################################
|
|
|
|
[gcode_macro PID_BED]
|
|
description: Bed PID
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
RESPOND MSG="Bed PID calibration in progress..."
|
|
G28
|
|
G90
|
|
G1 Z50 F1500
|
|
M400
|
|
M106
|
|
PID_CALIBRATE HEATER=heater_bed TARGET={params.TEMP|default(70)}
|
|
M107
|
|
RESPOND MSG="PID calibration complete! Remember to save the configuration!"
|
|
G28
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro PID_HOTEND]
|
|
description: Hotend PID
|
|
gcode:
|
|
{% if printer.idle_timeout.state == "Printing" %}
|
|
RESPOND TYPE=error MSG="This macro cannot be used while printing!"
|
|
{% else %}
|
|
RESPOND MSG="Hotend PID calibration in progress..."
|
|
G28
|
|
G90
|
|
G1 Z50 F1500
|
|
M400
|
|
M106
|
|
PID_CALIBRATE HEATER=extruder TARGET={params.TEMP|default(250)}
|
|
M107
|
|
RESPOND MSG="PID calibration complete! Remember to save the configuration!"
|
|
G28
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro _PID_KS_START]
|
|
description: PID for KlipperScreen
|
|
gcode:
|
|
RESPOND MSG="PID calibration in progress..."
|
|
G28
|
|
G90
|
|
G1 Z50 F1500
|
|
M400
|
|
M106
|
|
|
|
|
|
[gcode_macro _PID_KS_END]
|
|
description: PID for KlipperScreen
|
|
gcode:
|
|
M107
|
|
RESPOND MSG="PID calibration complete! Remember to save the configuration!"
|
|
G28
|
|
|
|
|
|
##################################################
|
|
# Verifications and Measurements with ADXL
|
|
##################################################
|
|
|
|
[gcode_macro ADXL_TEST]
|
|
description: ADXL Test
|
|
gcode:
|
|
ACCELEROMETER_QUERY
|
|
|
|
|
|
[gcode_macro ADXL_NOISE]
|
|
description: Measure Accelerometer Noise
|
|
gcode:
|
|
MEASURE_AXES_NOISE
|
|
|
|
|
|
[gcode_macro ADXL_AXE_X]
|
|
description: Measure X axis resonances
|
|
gcode:
|
|
SHAPER_CALIBRATE AXIS=X
|
|
|
|
|
|
[gcode_macro ADXL_AXE_Y]
|
|
description: Measure Y axis resonances
|
|
gcode:
|
|
SHAPER_CALIBRATE AXIS=Y
|
|
|
|
|
|
##################################################
|
|
# Save Configuration
|
|
##################################################
|
|
|
|
[gcode_macro SAVE]
|
|
description: Save Configuration
|
|
gcode:
|
|
SAVE_CONFIG
|
|
|
|
|
|
##################################################
|
|
# Power On/Off LED
|
|
##################################################
|
|
|
|
[gcode_macro LED_HOTEND_ON]
|
|
description: Turn on Hotend LEDs
|
|
gcode:
|
|
SET_PIN PIN=LED_Hotend VALUE=1
|
|
|
|
|
|
[gcode_macro LED_HOTEND_OFF]
|
|
description: Turn off Hotend LEDs
|
|
gcode:
|
|
SET_PIN PIN=LED_Hotend VALUE=0
|
|
|
|
|
|
[gcode_macro LED_LOGO_ON]
|
|
description: Turn on Logo LEDs
|
|
gcode:
|
|
SET_PIN PIN=LED_Logo VALUE=1
|
|
|
|
|
|
[gcode_macro LED_LOGO_OFF]
|
|
description: Turn off Logo LEDs
|
|
gcode:
|
|
SET_PIN PIN=LED_Logo VALUE=0
|
|
|
|
|
|
##################################################
|
|
# Managing Slicer Controls
|
|
##################################################
|
|
|
|
[gcode_macro M204]
|
|
description: Sets maximum accelleration
|
|
rename_existing: M204.1
|
|
gcode:
|
|
{% if 'S' in params %}
|
|
{% set s = params.S|float %}
|
|
SET_VELOCITY_LIMIT ACCEL={s}
|
|
{% else %}
|
|
{% if 'P' in params %}
|
|
{% set p = params.P|float %}
|
|
{% if 'T' in params %}
|
|
{% set t = params.T|float %}
|
|
{% if p < t %}
|
|
SET_VELOCITY_LIMIT ACCEL={p}
|
|
{% else %}
|
|
SET_VELOCITY_LIMIT ACCEL={t}
|
|
{% endif %}
|
|
{% else %}
|
|
SET_VELOCITY_LIMIT ACCEL={p}
|
|
{% endif %}
|
|
{% elif 'T' in params %}
|
|
{% set t = params.T|float %}
|
|
SET_VELOCITY_LIMIT ACCEL={t}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro M205]
|
|
description: Sets square corner velocity
|
|
gcode:
|
|
{% if 'X' in params %}
|
|
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.X}
|
|
{% elif 'Y' in params %}
|
|
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={params.Y}
|
|
{% endif %}
|
|
|
|
|
|
##################################################
|
|
# Managing Temperatures Controls
|
|
##################################################
|
|
|
|
[gcode_macro M109]
|
|
description: Managing extruder temperature
|
|
rename_existing: M99109
|
|
gcode:
|
|
{% set s = params.S|float %}
|
|
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
|
|
{% if s != 0 %}
|
|
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}
|
|
{% endif %}
|
|
|
|
|
|
[gcode_macro M190]
|
|
description: Managing bed temperature
|
|
rename_existing: M99190
|
|
gcode:
|
|
{% set s = params.S|float %}
|
|
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
|
|
{% if s != 0 %}
|
|
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}
|
|
{% endif %}
|
|
|
|
|
|
##################################################
|
|
# Loading default bed mesh at startup
|
|
##################################################
|
|
|
|
[delayed_gcode bed_mesh_init]
|
|
initial_duration: .01
|
|
gcode:
|
|
BED_MESH_PROFILE LOAD=default
|
|
|
|
|
|
##################################################
|
|
# KNOMI
|
|
##################################################
|
|
|
|
# Enable this section if Knomi is used
|
|
|
|
#[homing_override]
|
|
#gcode:
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True
|
|
#G28
|
|
#SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False
|
|
|
|
|
|
#[gcode_macro _KNOMI_STATUS]
|
|
#variable_homing: False
|
|
#variable_probing: False
|
|
#gcode:
|
|
|
|
|
|
##################################################
|
|
# Z-Offset Management
|
|
##################################################
|
|
|
|
[gcode_macro SECURITY_OFFSET]
|
|
description: Apply a 2mm Safety Offset
|
|
gcode:
|
|
SET_GCODE_OFFSET Z=+2
|
|
RESPOND MSG="Safety Offset applied!"
|
|
|
|
|
|
[gcode_macro SET_GCODE_OFFSET]
|
|
description: Saving Z-Offset
|
|
rename_existing: _SET_GCODE_OFFSET
|
|
gcode:
|
|
{% if printer.save_variables.variables.zoffset %}
|
|
{% set zoffset = printer.save_variables.variables.zoffset %}
|
|
{% else %}
|
|
{% set zoffset = {'z': None} %}
|
|
{% endif %}
|
|
{% set ns = namespace(zoffset={'z': zoffset.z}) %}
|
|
_SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
|
|
{%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
|
|
{%if 'Z_ADJUST' in params %}
|
|
{%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
|
|
{% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
|
|
{% endif %}
|
|
SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"
|
|
|
|
|
|
[delayed_gcode LOAD_GCODE_OFFSETS]
|
|
initial_duration: 2
|
|
gcode:
|
|
{% if printer.save_variables.variables.zoffset %}
|
|
{% set zoffset = printer.save_variables.variables.zoffset %}
|
|
_SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
|
|
RESPOND TYPE=command MSG="Loaded Z-Offset from variables.cfg: {zoffset.z}mm"
|
|
{% endif %}
|