[include fluidd.cfg] [virtual_sdcard] path: /home/biqu/printer_data/gcodes on_error_gcode: CANCEL_PRINT # This file contains common pin mappings for the BigTreeTech Octopus X7 # To use this config, the firmware should be compiled for the STM32F407 with a "32KiB bootloader" # after running "make", copy the generated "klipper/out/klipper.bin" file to a # file named "firmware.bin" on an SD card and then restart the OctoPus with that SD card. # See docs/Config_Reference.md for a description of parameters. ## Formbot / Vivedino Troodon Mini ## Firmware Version: 1.4 ## Compiled By: YGK3D ## Release Date: 15/02/24 ## *** THINGS TO CHANGE/CHECK: *** ## MCU paths [mcu] section ## Thermistor types [extruder] and [heater_bed] sections - See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types ## Z Endstop Switch location [safe_z_home] section ## Homing end position [gcode_macro G32] section ## Z Endstop Switch offset for Z0 [stepper_z] section ## Probe points [quad_gantry_level] section ## Min & Max gantry corner postions [quad_gantry_level] section ## PID tune [extruder] and [heater_bed] sections ## Probe pin [probe] section ## Fine tune E steps [extruder] section [include mainsail.cfg] [include KAMP_Settings.cfg] [exclude_object] [firmware_retraction] [exclude_object] [mcu] ## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify ##-------------------------------------------------------------------- serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_340041001047333133343238-if00 restart_method: command ##-------------------------------------------------------------------- ##################################################################### # Accelerometer Settings - Uncomment to Enable ##################################################################### #[mcu adxl] ## Obtain serial number by "ls -l /dev/serial/by-id/" #serial: /dev/serial/by-id/usb-Klipper_rp2040_E6626005A7867B33-if00 #usb-Klipper_rp2040_E6625887D33B9337-if00 #[adxl345] #cs_pin: adxl:gpio9 #spi_software_sclk_pin: adxl:gpio10 #spi_software_mosi_pin: adxl:gpio11 #spi_software_miso_pin: adxl:gpio12 #[resonance_tester] #accel_chip: adxl345 #probe_points: # 125, 125, 20 ##-------------------------------------------------------------------- [printer] kinematics: corexy max_velocity: 600 max_accel: 20000 #Max 4000 max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V max_z_accel: 350 square_corner_velocity: 5.0 ##################################################################### # X/Y Stepper Settings ##################################################################### ## B Stepper - Left ## Connected to MOTOR_0 ## Endstop connected to DIAG_0 [stepper_x] step_pin: PA3 dir_pin: PA4 enable_pin: !PA1 rotation_distance: 40 microsteps: 32 full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper endstop_pin: PF2 position_min: 0 ##-------------------------------------------------------------------- position_endstop: 250 position_max: 250 ##-------------------------------------------------------------------- homing_speed: 100 #Max 100 homing_retract_dist: 5 homing_positive_dir: true [tmc2209 stepper_x] uart_pin: PA2 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ## A Stepper - Right ## Connected to MOTOR_1 ## Endstop connected to DIAG_1 [stepper_y] step_pin: PC2 dir_pin: PC3 enable_pin: !PC1 rotation_distance: 40 microsteps: 32 full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper endstop_pin: PC15 position_min: 0 position_endstop: y position_max: y+8 ##-------------------------------------------------------------------- position_endstop: 250 position_max: 250 ##-------------------------------------------------------------------- homing_speed: 100 #Max 100 homing_retract_dist: 5 homing_positive_dir: true ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_y] uart_pin: PC0 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ##################################################################### # Z Stepper Settings ##################################################################### ## Z0 Stepper - Front Left ## Connected to MOTOR_4 ## Endstop connected to DIAG_4 [stepper_z] step_pin: PB10 dir_pin: PB11 enable_pin: !PE15 rotation_distance: 40 gear_ratio: 80:16 microsteps: 32 #endstop_pin: PC13 endstop_pin: probe:z_virtual_endstop ## Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0) ## (+) value = endstop above Z0, (-) value = endstop below ## Increasing position_endstop brings nozzle closer to the bed ## After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config ##-------------------------------------------------------------------- position_max: 230 ##-------------------------------------------------------------------- position_min: -5 homing_speed: 100 second_homing_speed: 3 homing_retract_dist: 3 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_z] uart_pin: PE14 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ## Z1 Stepper - Rear Left ## Connected to MOTOR_3 [stepper_z1] step_pin: PE11 dir_pin: !PE12 enable_pin: !PE10 rotation_distance: 40 gear_ratio: 80:16 microsteps: 32 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_z1] uart_pin: PE9 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ## Z2 Stepper - Rear Right ## Connected to MOTOR_6 [stepper_z2] step_pin: PE7 dir_pin: PE8 enable_pin: !PG1 rotation_distance: 40 gear_ratio: 80:16 microsteps: 32 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_z2] uart_pin: PG0 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ## Z3 Stepper - Front Right ## Connected to MOTOR_5 [stepper_z3] step_pin: PF13 dir_pin: !PF14 enable_pin: !PF12 rotation_distance: 40 gear_ratio: 80:16 microsteps: 32 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_z3] uart_pin: PF11 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 0 ##################################################################### # Extruder ##################################################################### ## Connected to MOTOR_2 ## Heater - HE0 ## Thermistor - T0 [extruder] step_pin: PB0 dir_pin: PB1 enable_pin: !PC5 ## Update value below when you perform extruder calibration ## If you ask for 100mm of filament, but in reality it is 98mm: ## rotation_distance = * / 100 ## 22.6789511 is a good starting point #rotation_distance: 22.5267 #PLA - perfect #Bondtech 5mm Drive Gears #rotation_distance: 22.3464 #PETG rotation_distance: 22.22254 #ABS ## Update Gear Ratio depending on your Extruder Type ## Use 50:10 for Stealthburner/Clockwork 2 ## Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio) ## Use 80:20 for M4, M3.1 gear_ratio: 50:10 #Stealthburner/Clockwork 2 microsteps: 32 full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree nozzle_diameter: 0.400 filament_diameter: 1.75 heater_pin: PB9 ## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types. ## Use "Generic 3950" for NTC 100k 3950 thermistors sensor_type: PT1000 sensor_pin: PF3 min_temp: 10 max_temp: 270 max_power: 1.0 min_extrude_temp: 170 max_extrude_only_distance: 150 control = pid pid_kp = 26.213 pid_ki = 1.304 pid_kd = 131.721 ## Try to keep pressure_advance below 1.0 #pressure_advance: 0.024 pressure_advance: 0.0405 ## Default is 0.040, leave stock #pressure_advance_smooth_time: 0.040 ## E0 on MOTOR_2 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 extruder] uart_pin: PC4 interpolate: false run_current: 0.56 #0.3 #0.5 sense_resistor: 0.110 stealthchop_threshold: 0 ##################################################################### # Bed Heater ##################################################################### ## SSR Pin - HE1 ## Thermistor - TB [heater_bed] ## Uncomment the following line if using the default SSR wiring from the docs site #heater_pin: PA3 ## Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases heater_pin: PD12 ## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types. ## Use "Generic 3950" for Keenovo heaters sensor_type: Generic 3950 sensor_pin: PA0 ## Adjust Max Power so your heater doesn't warp your bed. Rule of thumb is 0.4 watts / cm^2 . max_power: 0.6 min_temp: 0 max_temp: 120 #control: pid #pid_kp: 58.437 #pid_ki: 2.347 #pid_kd: 363.769 ##################################################################### # Probe ##################################################################### [probe] pin: PF4 x_offset: 0 y_offset: 0 #z_offset: 0 speed: 50.0 samples: 3 samples_result: median sample_retract_dist: 3.0 samples_tolerance: 0.05 samples_tolerance_retries: 5 activate_gcode: {% set PROBE_TEMP = 150 %} {% set MAX_TEMP = PROBE_TEMP + 5 %} {% set ACTUAL_TEMP = printer.extruder.temperature %} {% set TARGET_TEMP = printer.extruder.target %} {% if TARGET_TEMP > PROBE_TEMP %} { action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) } M109 S{ PROBE_TEMP } {% else %} # Temperature target is already low enough, but nozzle may still be too hot. {% if ACTUAL_TEMP > MAX_TEMP %} { action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) } TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP } {% endif %} {% endif %} ##################################################################### # Fan Control ##################################################################### ## Print Cooling Fan - FAN0 [fan] pin: PB7 kick_start_time: 0.5 ## Depending on your fan, you may need to increase this value ## if your fan will not start. Can change cycle_time (increase) ## if your fan is not able to slow down effectively off_below: 0.10 ## Hotend Fan - FAN1 [heater_fan hotend_fan] pin: PB8 max_power: 1.0 kick_start_time: 0.5 heater: extruder heater_temp: 50.0 ## If you are experiencing back flow, you can reduce fan_speed #fan_speed: 1.0 ## Controller fan - FAN2 [controller_fan controller_fan] pin: PC6 kick_start_time: 0.5 fan_speed: 1.0 stepper: extruder ## Exhaust fan - FAN3 - Temperature Controlled #[heater_fan exhaust_fan] #pin: PE5 #max_power: 1.0 #shutdown_speed: 0.0 #kick_start_time: 5.0 #heater: heater_bed #heater_temp: 60 #fan_speed: 1.0 ## Exhaust fan - FAN3 - Manually Controlled [fan_generic exhaust_fan] pin: PE5 max_power: 1.0 shutdown_speed: 0.0 kick_start_time: 5.0 ##################################################################### # LED Control ##################################################################### ## Chamber Lighting - HE2 Connector (Optional) [output_pin case_light] pin: PE6 pwm:false shutdown_value: 0 value:1 ##################################################################### # Homing and Gantry Adjustment Routines ##################################################################### [idle_timeout] timeout: 1800 [safe_z_home] ## XY Location of the Z Endstop Switch ## Update -10,-10 to the XY coordinates of your endstop pin ## (such as 157,305) after going through Z Endstop Pin ## Location Definition step. home_xy_position: 125,125 speed:200 z_hop:10 ## Use QUAD_GANTRY_LEVEL to level a gantry. ## Min & Max gantry corners - measure from nozzle at MIN (0,0) and ## MAX (250, 250), (300,300), or (350,350) depending on your printer size ## to respective belt positions [quad_gantry_level] speed: 300 #-------------------------------------------------------------------- ## Gantry Corners for 250mm Build ## Uncomment for 250mm build gantry_corners: -60,-10 310, 320 # Probe points points: 25,25 25,225 225,225 225,25 #-------------------------------------------------------------------- speed: 300 horizontal_move_z: 1 retries: 5 retry_tolerance: 0.05 max_adjust: 10 ######################################## # EXP1 / EXP2 (display) pins ######################################## #[board_pins] #aliases: # # EXP1 header # EXP1_1=PG5, EXP1_2=PG4, # EXP1_3=PG3, EXP1_4=PG2, # EXP1_5=PD15, EXP1_6=PD14, # Slot in the socket on this side # EXP1_7=PD13, EXP1_8=PD11, # EXP1_9=, EXP1_10=<5V>, # # EXP2 header # EXP2_1=PB14, EXP2_2=PB13, # EXP2_3=PD10, EXP2_4=PB12, # EXP2_5=PD9, EXP2_6=PB15, # Slot in the socket on this side # EXP2_7=PD8, EXP2_8=, # EXP2_9=, EXP2_10=<5V> #-------------------------------------------------------------------- [pause_resume] recover_velocity: 50. # When capture/restore is enabled, the speed at which to return to # the captured position (in mm/s). Default is 50.0 mm/s. [respond] default_type: echo # Sets the default prefix of the "M118" and "RESPOND" output to one # of the following: # echo: "echo: " (This is the default) # command: "// " # error: "!! " #default_prefix: echo: # Directly sets the default prefix. If present, this value will # override the "default_type". ##################################################################### # Filament Runout Sensor ##################################################################### [filament_switch_sensor filament_sensor] pause_on_runout: True # When set to True, a PAUSE will execute immediately after a runout # is detected. Note that if pause_on_runout is False and the # runout_gcode is omitted then runout detection is disabled. Default # is True. runout_gcode: M600 # A list of G-Code commands to execute after a filament runout is # detected. See docs/Command_Templates.md for G-Code format. If # pause_on_runout is set to True this G-Code will run after the # PAUSE is complete. The default is not to run any G-Code commands. #insert_gcode: # A list of G-Code commands to execute after a filament insert is # detected. See docs/Command_Templates.md for G-Code format. The # default is not to run any G-Code commands, which disables insert # detection. #event_delay: 3.0 # The minimum amount of time in seconds to delay between events. # Events triggered during this time period will be silently # ignored. The default is 3 seconds. #pause_delay: 0.5 # The amount of time to delay, in seconds, between the pause command # dispatch and execution of the runout_gcode. It may be useful to # increase this delay if OctoPrint exhibits strange pause behavior. # Default is 0.5 seconds. switch_pin: PC14 # The pin on which the switch is connected. This parameter must be # provided ##################################################################### # User Modifications ##################################################################### ## Bed Mesh Configuration # Uncomment BED_MESH_CALIBRATE in the PRINT_START macro below to enable bed levelling. [bed_mesh] speed: 300 horizontal_move_z: 5 mesh_min: 50,25 mesh_max: 200,175 probe_count: 5, 5 # Idle Timeout Configuration # This block increases the idle timeout from 10 minutes to 8 hours. # This may be longer that you are comfortable with. # Reduce the timeout value if you want the heaters to shut off sooner. # A longer timeout is necesary if you want to recover from filament runout or M600 filament change. [idle_timeout] #gcode: # A list of G-Code commands to execute on an idle timeout. See # docs/Command_Templates.md for G-Code format. The default is to run # "TURN_OFF_HEATERS" and "M84". timeout: 28800 # Idle time (in seconds) to wait before running the above G-Code # commands. The default is 600 seconds. ##################################################################### # Macros ##################################################################### [gcode_macro G32] gcode: SAVE_GCODE_STATE NAME=STATE_G32 G90 G28 M109 S150 NOZZLE_CLEAN G28 Z QUAD_GANTRY_LEVEL G0 X125 Y125 Z30 F3600 RESTORE_GCODE_STATE NAME=STATE_G32 # Use PRINT_START for the slicer starting script - please customise for your slicer of choice [gcode_macro PRINT_START] gcode: M104 S150 {% set temp_extruder = params.EXTRUDER|int %} G32 ; home all axes BED_MESH_CALIBRATE ; Uncomment to add mesh bed levelling G90 ; absolute positioning G1 Z20 F3000 ; move nozzle away from bed M109 S{temp_extruder} NOZZLE_PRIME [gcode_macro START_PRINT] gcode: G28 # Home the printer G92 E0 # Reset extruder M104 S150 G32 #BED_MESH_CALIBRATE PROFILE=mesh1 METHOD=automatic #BED_MESH_PROFILE LOAD=mesh1 # Move to wait position #G28 X G90 #G1 X175 Y175 [gcode_macro END_PRINT] #variable_machine_depth: printer.configfile.settings.stepper_z.position_max gcode: ; layer end G91 ;relative positioning G1 E-5.00 F1000 ;retract 5mm of filament G1 Z+1.00 X+20.0 Y+20.0 F20000 ;short quick move to disengage from print G1 Z+10.00 F20000 ;move Z-Axis 10mm away from part G90 ;absolute positioning G28 X0 Y0 ; move gantry close to home G91 ; relative positioning G1 E-5.00 F500 ;retract additional filament to prevent oozing G90 ;absolute positioning M104 S0 ;turn off hotend M140 S0 ;turn off heatbed M106 S0 ; shut off blower M84 ;motors off -- disabled so that head can still be moved after print finishes # Use PRINT_END for the slicer ending script - please customise for your slicer of choice [gcode_macro PRINT_END] gcode: # safe anti-stringing move coords {% set th = printer.toolhead %} {% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %} {% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %} {% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 ; wait for buffer to clear G92 E0 ; zero the extruder G1 E-5.0 F1800 ; retract filament TURN_OFF_HEATERS G90 ; absolute positioning G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 ; park nozzle at rear M107 ; turn off fan BED_MESH_CLEAR RESTORE_GCODE_STATE NAME=STATE_PRINT_END ##### # COLOR CHANGE ##### [gcode_macro M600] description: Executes a color change by pausing the printer an unloading the filament. gcode: PAUSE UNLOAD_FILAMENT M117 Please load new filament and resume RESPOND MSG="Please load new filament and resume" ##### # FILAMENT MANAGEMENT ##### [gcode_macro UNLOAD_FILAMENT] description: Unloads the filament. Note: be careful with PETG, make sure you inspect the tip of your filament before reloading to avoid jams. gcode: SAVE_GCODE_STATE NAME=unload_state G91 {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... # Heat up hotend to provided temp or 220 as default as that should work OK with most filaments. M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Unloading filament... # Extract filament to cold end area G0 E-5 F3600 # Wait for three seconds G4 P3000 # Push back the filament to smash any stringing G0 E5 F3600 # Extract back fast in to the cold zone G0 E-15 F3600 # Continue extraction slowly, allow the filament time to cool solid before it reaches the gears G0 E-130 F300 M117 Filament unloaded! RESPOND MSG="Filament unloaded! Please inspect the tip of the filament before reloading." RESTORE_GCODE_STATE NAME=unload_state [gcode_macro LOAD_FILAMENT] description: Loads new filament. Note: be careful with PETG, make sure you inspect the tip of your filament before loading to avoid jams. gcode: SAVE_GCODE_STATE NAME=load_state G91 # Heat up hotend to provided temp or 220 as default as that should work OK with most filaments. {% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %} M117 Heating... M104 S{params.TEMP|default(220, true)} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)} {% endif %} M117 Loading filament... # Load the filament into the hotend area. G0 E100 F600 # Wait a secod G4 P1000 # Purge G0 E40 F100 # Wait for purge to complete M400e M117 Filament loaded! RESPOND MSG="Filament loaded!" RESTORE_GCODE_STATE NAME=load_state [gcode_macro NOZZLE_CLEAN] description: wipes nozzle on brush to clean it gcode: G90 G1 X95 Y250 F6000 G1 Z0.5 F3000 G1 X145 Y250 F10000 G1 X95 Y250 F10000 G1 X145 Y250 F10000 G1 X95 Y250 F10000 G1 X145 Y250 F10000 G1 X95 Y250 F10000 G1 Z10 F6000 [gcode_macro NOZZLE_PRIME] description: prime the nozzle before printing gcode: G92 E0 G1 E-3 F1800 G1 X0 Y0 F10000 G1 Z0.3 F500 G92 E0 G1 E3 F500 G92 E0 G1 E-0.30000 F3600 G1 Z0.2500 F1000 G1 X250 Y0 E50 F1000 G92 E0 G1 E-0.30000 F5400 G1 Z10 F500 [gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE gcode: PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL [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 = 10.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 %} [gcode_macro _USER_VARIABLE] description: Helper: Contains User defined printer variables variable_disable_turnoff: 0 gcode: [gcode_macro RESONANCES_TEST] description: Run input shaper test gcode: {% set user = printer['gcode_macro _USER_VARIABLE'] %} _CG28 ; home if needed TURN_OFF_HEATERS ; turn off heaters M107 ; turn off fan {% if user.hw.chamber.fan %} M141 {% endif %} ; exhaust fan off {% if user.hw.filter.ena %} _SET_FILTER {% endif %} ; filter off _PRINT_AR T="INPUT SHAPER: Noise values, check if sensor is installed" MEASURE_AXES_NOISE ; get noise value in log _PRINT_AR T="INPUT SHAPER: Resonance Tests starting" _PRINT_AR T="INPUT SHAPER: Mesasure X axis" TEST_RESONANCES AXIS=X ; measure X _PRINT_AR T="INPUT SHAPER: Mesasure Y axis" TEST_RESONANCES AXIS=Y ; measure Y _PRINT_AR T="INPUT SHAPER: Resonance Tests done" _PRINT_AR T="INPUT SHAPER: Generate graph in backround" RUN_SHELL_COMMAND CMD=plot_graph PARAMS=SHAPER [gcode_macro M486] gcode: # Parameters known to M486 are as follows: # [C] Cancel the current object # [P] Cancel the object with the given index # [S] Set the index of the current object. # If the object with the given index has been canceled, this will cause # the firmware to skip to the next object. The value -1 is used to # indicate something that isn’t an object and shouldn’t be skipped. # [T] Reset the state and set the number of objects # [U] Un-cancel the object with the given index. This command will be # ignored if the object has already been skipped {% if 'exclude_object' not in printer %} {action_raise_error("[exclude_object] is not enabled")} {% endif %} {% if 'T' in params %} EXCLUDE_OBJECT RESET=1 {% for i in range(params.T | int) %} EXCLUDE_OBJECT_DEFINE NAME={i} {% endfor %} {% endif %} {% if 'C' in params %} EXCLUDE_OBJECT CURRENT=1 {% endif %} {% if 'P' in params %} EXCLUDE_OBJECT NAME={params.P} {% endif %} {% if 'S' in params %} {% if params.S == '-1' %} {% if printer.exclude_object.current_object %} EXCLUDE_OBJECT_END NAME={printer.exclude_object.current_object} {% endif %} {% else %} EXCLUDE_OBJECT_START NAME={params.S} {% endif %} {% endif %} {% if 'U' in params %} EXCLUDE_OBJECT RESET=1 NAME={params.U} {% endif %} [gcode_macro Calibrate_Probe_Offset] gcode: PROBE_CALIBRATE [gcode_macro CANCEL_PRINT] description: Cancel the actual running print rename_existing: CANCEL_PRINT_BASE gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE'] | default({}) %} {% set allow_park = client.park_at_cancel | default(false) | lower == 'true' %} {% set retract = client.cancel_retract | default(5.0) | abs %} ##### define park position ##### {% set park_x = "" if (client.park_at_cancel_x | default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y | default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x | length > 0 or park_y | length > 0 %} ##### end of definitions ##### # restore idle_timeout time if needed {% if printer['gcode_macro RESUME'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro RESUME'].restore_idle_timeout} {% endif %} #{% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _TOOLHEAD_PARK_PAUSE_CANCEL _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 {client.user_cancel_macro | default("")} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False # clear pause_next_layer and pause_at_layer as preparation for next print SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE #*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [input_shaper] #*# shaper_type_x = 3hump_ei #*# shaper_freq_x = 88.4 #*# shaper_type_y = zv #*# shaper_freq_y = 55.4 #*# #*# [probe] #*# z_offset = -1.210 #*# #*# [extruder] #*# #*# [heater_bed] #*# control = pid #*# pid_kp = 40.040 #*# pid_ki = 1.648 #*# pid_kd = 243.242 #*# #*# [bed_mesh default] #*# version = 1 #*# points = #*# 0.083466, 0.032216, 0.105966 #*# 0.104716, 0.013466, 0.102216 #*# 0.082216, -0.011534, 0.084716 #*# 0.098466, 0.039716, 0.154716 #*# 0.105966, 0.062216, 0.132216 #*# x_count = 3 #*# y_count = 5 #*# mesh_x_pps = 2 #*# mesh_y_pps = 2 #*# algo = lagrange #*# tension = 0.2 #*# min_x = 92.43099999999998 #*# max_x = 157.551 #*# min_y = 61.08 #*# max_y = 175.0