Skip to content

Instantly share code, notes, and snippets.

@challgren
Created January 30, 2024 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save challgren/99d0da389faadf82f6ac8eb3dc2f1eaf to your computer and use it in GitHub Desktop.
Save challgren/99d0da389faadf82f6ac8eb3dc2f1eaf to your computer and use it in GitHub Desktop.
Ender 3 v2 Neo SKR 3 EZ Board
# Below you can include specific configuration files depending on what you want KAMP to do:
[include ./KAMP/Adaptive_Meshing.cfg] # Include to enable adaptive meshing configuration.
[include ./KAMP/Line_Purge.cfg] # Include to enable adaptive line purging configuration.
# [include ./KAMP/Voron_Purge.cfg] # Include to enable adaptive Voron logo purging configuration.
[include ./KAMP/Smart_Park.cfg] # Include to enable the Smart Park function, which parks the printhead near the print area for final heating.
[gcode_macro _KAMP_Settings]
description: This macro contains all adjustable settings for KAMP
# The following variables are settings for KAMP as a whole.
variable_verbose_enable: True # Set to True to enable KAMP information output when running. This is useful for debugging.
# The following variables are for adjusting adaptive mesh settings for KAMP.
variable_mesh_margin: 0 # Expands the mesh size in millimeters if desired. Leave at 0 to disable.
variable_fuzz_amount: 0 # Slightly randomizes mesh points to spread out wear from nozzle-based probes. Leave at 0 to disable.
# The following variables are for those with a dockable probe like Klicky, Euclid, etc. # ---------------- Attach Macro | Detach Macro
variable_probe_dock_enable: False # Set to True to enable the usage of a dockable probe. # ---------------------------------------------
variable_attach_macro: 'Attach_Probe' # The macro that is used to attach the probe. # Klicky Probe: 'Attach_Probe' | 'Dock_Probe'
variable_detach_macro: 'Stow_Probe' # The macro that is used to store the probe. # Euclid Probe: 'Deploy_Probe' | 'Stow_Probe'
# Legacy Gcode: 'M401' | 'M402'
# The following variables are for adjusting adaptive purge settings for KAMP.
variable_purge_height: 0.8 # Z position of nozzle during purge, default is 0.8.
variable_tip_distance: 0 # Distance between tip of filament and nozzle before purge. Should be similar to PRINT_END final retract amount.
variable_purge_margin: 15 # Distance the purge will be in front of the print area, default is 10.
variable_purge_amount: 50 # Amount of filament to be purged prior to printing.
variable_flow_rate: 12 # Flow rate of purge in mm3/s. Default is 12.
# The following variables are for adjusting the Smart Park feature for KAMP, which will park the printhead near the print area at a specified height.
variable_smart_park_height: 15 # Z position for Smart Park, default is 10.
gcode: # Gcode section left intentionally blank. Do not disturb.
{action_respond_info(" Running the KAMP_Settings macro does nothing, it is only used for storing KAMP settings. ")}
[neopixel gantry]
pin: PE6
chain_count: 63
initial_RED: 0.0
initial_GREEN: 1.0
initial_BLUE: 0.0
initial_WHITE: 0.0
[led_effect homing]
autostart: false
frame_rate: 24
leds:
neopixel:gantry
layers:
breathing 3 1 top (0.0, 0.6, 0.2)
[led_effect panel_idle]
autostart: true
frame_rate: 24
leds:
neopixel:gantry
layers:
breathing 10 1 top (.5,.5,1)
[led_effect heating]
leds:
neopixel:gantry (1-24)
neopixel:gantry (40-63)
autostart: false
frame_rate: 24
layers:
chase 0.3 0.8 add (1, 0.18, 0), (0.8, 0.08, 0)
[led_effect critical_error]
leds:
neopixel:gantry
layers:
strobe 1 1.5 add (1.0, 1.0, 1.0)
breathing 2 0 difference (0.95, 0.0, 0.0)
static 1 0 top (1.0, 0.0, 0.0)
autostart: false
frame_rate: 24
run_on_error: true
[led_effect rainbow]
leds:
neopixel:gantry
autostart: false
frame_rate: 24
layers:
gradient 0.3 1 add (0.3, 0.0, 0.0),(0.0, 0.3, 0.0),(0.0, 0.0, 0.3)
######################################################################
# Start Print and End Print
######################################################################
# Replace the slicer's custom start and end g-code scripts with
# START_PRINT and END_PRINT. See docs/Slicers.md for more information on using these macros.
[delayed_gcode start_rpi_fan]
initial_duration: 1
gcode:
SET_FAN_SPEED FAN=mcu_fan SPEED=0.5
SET_FAN_SPEED FAN=rpi_fan SPEED=0.5
[gcode_macro ERROR_PRINT]
description: Cancel the actual running print
gcode:
SET_LED_EFFECT EFFECT=critical_error REPLACE=1
CANCEL_PRINT
[gcode_macro START_PRINT]
gcode:
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
BED_MESH_PROFILE LOAD=default
SET_FAN_SPEED FAN=mcu_fan SPEED=0.75
SET_FAN_SPEED FAN=rpi_fan SPEED=0.75
# Start bed heating
M140 S{BED_TEMP}
# Use absolute coordinates
G90
# Reset the G-Code Z offset (adjust Z offset if needed)
SET_GCODE_OFFSET Z=0.0
# Home the printer
SET_LED_EFFECT TARGET=gantry EFFECT=homing REPLACE=1
G28
Z_TILT_ADJUST
SET_LED_EFFECT TARGET=gantry EFFECT=rainbow REPLACE=1
SMART_PARK
# Wait for bed to reach temperature
M190 S{BED_TEMP}
# Set and wait for nozzle to reach temperature
M109 S{EXTRUDER_TEMP}
LINE_PURGE
STOP_LED_EFFECTS
SET_LED LED="gantry" RED=1 GREEN=1 BLUE=0.2314 SYNC=0 TRANSMIT=1
[gcode_macro END_PRINT]
gcode:
# Turn off bed, extruder, and fan
M140 S0
M104 S0
M106 S0
# Move nozzle away from print while retracting
G91
G1 X-2 Y-2 E-3 F300
# Raise nozzle by 10mm
G1 Z10 F3000
# Present Print
G90
G1 X{printer.toolhead.axis_minimum.x + 10} Y{printer.toolhead.axis_maximum.y - 10}
G90
# Disable steppers
M84
SET_LED_EFFECT TARGET=gantry EFFECT=rainbow REPLACE=1
SET_FAN_SPEED FAN=mcu_fan SPEED=0.5
SET_FAN_SPEED FAN=rpi_fan SPEED=0.5
######################################################################
# Filament Change
######################################################################
# M600: Filament Change. This macro will pause the printer, move the
# tool to the change position, and retract the filament 50mm. Adjust
# the retraction settings for your own extruder. After filament has
# been changed, the print can be resumed from its previous position
# with the "RESUME" gcode.
[pause_resume]
[gcode_macro M600]
gcode:
{% set X = params.X|default(50)|float %}
{% set Y = params.Y|default(0)|float %}
{% set Z = params.Z|default(10)|float %}
SAVE_GCODE_STATE NAME=M600_state
PAUSE
G91
G1 E-.8 F2700
G1 Z{Z}
G90
G1 X{X} Y{Y} F3000
G91
G1 E-50 F1000
RESTORE_GCODE_STATE NAME=M600_state
######################################################################
# Override M117 command with rawparams
######################################################################
# The macro below will override the default M117 command to echo the message.
#
# It uses the rawparams pseudo-variable that contains the full unparsed
# parameters that was passed to the M117 command.
#
# As this can include comments, we are trimming the text when a `;` or `#` is
# found, and escaping any existing `"`
[gcode_macro M117]
rename_existing: M117.1
gcode:
{% if rawparams %}
{% set escaped_msg = rawparams.split(';', 1)[0].split('\x23', 1)[0]|replace('"', '\\"') %}
SET_DISPLAY_TEXT MSG="{escaped_msg}"
RESPOND TYPE=command MSG="{escaped_msg}"
{% else %}
SET_DISPLAY_TEXT
{% endif %}
# SDCard 'looping' (aka Marlin M808 commands) support
#
# Support SDCard looping
[sdcard_loop]
# 'Marlin' style M808 compatibility macro for SDCard looping
[gcode_macro M808]
gcode:
{% if params.K is not defined and params.L is defined %}SDCARD_LOOP_BEGIN COUNT={params.L|int}{% endif %}
{% if params.K is not defined and params.L is not defined %}SDCARD_LOOP_END{% endif %}
{% if params.K is defined and params.L is not defined %}SDCARD_LOOP_DESIST{% endif %}
# Cancel object (aka Marlin/RRF M486 commands) support
#
# Enable object exclusion
[exclude_object]
[gcode_macro M486]
gcode:
# Parameters known to M486 are as follows:
# [C<flag>] Cancel the current object
# [P<index>] Cancel the object with the given index
# [S<index>] 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<count>] Reset the state and set the number of objects
# [U<index>] 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 SET_ACTIVE_SPOOL]
gcode:
{% if params.ID %}
{% set id = params.ID|int %}
{action_call_remote_method(
"spoolman_set_active_spool",
spool_id=id
)}
{% else %}
{action_respond_info("Parameter 'ID' is required")}
{% endif %}
[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
{action_call_remote_method(
"spoolman_set_active_spool",
spool_id=None
)}
[server]
host: 0.0.0.0
port: 7125
ssl_port: 7130
# The maximum size allowed for a file upload (in MiB). Default 1024 MiB
max_upload_size: 1024
# Path to klippy Unix Domain Socket
klippy_uds_address: ~/printer_data/comms/klippy.sock
[authorization]
cors_domains:
https://mainsail.hallgren.net
http://mainsail.hallgren.net
https://my.mainsail.xyz
http://my.mainsail.xyz
http://*.local
http://*.lan
trusted_clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
FE80::/10
::1/128
[file_manager]
enable_object_processing: True
[octoprint_compat]
[history]
[job_queue]
[spoolman]
server: https://docker.hallgren.net:7912
sync_rate: 5
[power 24v_supply]
type: tplink_smartplug
bound_services: klipper
locked_while_printing: True
address: 192.168.30.40
output_id: 1
[power exhaust]
type: tplink_smartplug
locked_while_printing: False
address: 192.168.30.40
output_id: 2
[power filament_dryer]
type: tplink_smartplug
locked_while_printing: False
address: 192.168.30.40
output_id: 5
[power printer]
type: gpio
pin: !gpio17
bound_services: klipper
locked_while_printing: True
initial_state: on
[power light_bar]
type: gpio
pin: gpio27
initial_state: on
# this enables moonraker announcements for mainsail
[announcements]
subscriptions:
mainsail
# this enables moonraker's update manager
[update_manager]
refresh_interval: 168
enable_auto_refresh: True
[update_manager mainsail]
type: web
channel: stable
repo: mainsail-crew/mainsail
path: ~/mainsail
[update_manager mainsail-config]
type: git_repo
primary_branch: master
path: ~/mainsail-config
origin: https://github.com/mainsail-crew/mainsail-config.git
managed_services: klipper
### moonraker-timelapse
### Don't forget to include timelapse.cfg to your printer.cfg
### Uncomment to enable moonraker-timelapse
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
managed_services: klipper moonraker
[timelapse]
### Directory where the generated video will be saved
output_path: ~/timelapse/
### Directory where ffmpeg is installed
ffmpeg_binary_path: /usr/bin/ffmpeg
# Crowsnest update_manager entry
[update_manager crowsnest]
type: git_repo
path: ~/crowsnest
origin: https://github.com/mainsail-crew/crowsnest.git
install_script: tools/pkglist.sh
[update_manager Klipper-Adaptive-Meshing-Purging]
type: git_repo
channel: dev
path: ~/Klipper-Adaptive-Meshing-Purging
origin: https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging.git
managed_services: klipper
primary_branch: main
[update_manager led_effect]
type: git_repo
path: ~/klipper-led_effect
origin: https://github.com/julianschill/klipper-led_effect.git
is_system_service: False
[update_manager mobileraker]
type: git_repo
path: ~/mobileraker_companion
origin: https://github.com/Clon1998/mobileraker_companion.git
primary_branch:main
managed_services: mobileraker
virtualenv: ~/mobileraker-env
requirements: scripts/mobileraker-requirements.txt
install_script: scripts/install-mobileraker-companion.sh
[include octoeverywhere-system.cfg]
# This file contains common pin mappings for the BigTreeTech SKR 3.
# This board can ship with one of two chips, STM32H743 or STM32H723.
# To use this config, during "make menuconfig" enable "low-level
# options", "STM32H743" or "STM32H723", "128KiB bootloader",
# and "25MHz clock".
# See docs/Config_Reference.md for a description of parameters.
[include mainsail.cfg]
[include timelapse.cfg]
[virtual_sdcard]
path: ~/printer_data/gcodes
on_error_gcode: ERROR_PRINT
[display_status]
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_400011001251313238353730-if00
[mcu rpi]
serial: /tmp/klipper_host_mcu
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 500
max_z_velocity: 5
square_corner_velocity: 5.0
max_z_accel: 100
[stepper_x]
step_pin: PD4
dir_pin: !PD3
enable_pin: !PD6
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC1
position_min: -2.5
position_endstop: -2.5
position_max: 244
homing_speed: 30
[stepper_y]
step_pin: PA15
dir_pin: !PA8
enable_pin: !PD1
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC3
position_min: -0.5
position_endstop: -0.5
position_max: 229
homing_speed: 30
[stepper_z]
step_pin: PE2
dir_pin: !PE3
enable_pin: !PE0
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: -5
homing_speed: 4
second_homing_speed: 1
homing_retract_dist: 2.0
[stepper_z1]
step_pin: PD11
dir_pin: PD10
enable_pin: !PD13
microsteps: 16
rotation_distance: 8
[extruder]
max_extrude_only_distance: 100.0
max_extrude_cross_section: 5
step_pin: PD15
dir_pin: !PD14
enable_pin: !PC7
microsteps: 16
rotation_distance: 7.50
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB3
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA2
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 250
pressure_advance: 0.065
#[extruder1]
#step_pin: PD11
#dir_pin: PD10
#enable_pin: !PD13
#heater_pin: PB4
#sensor_pin: PA3
#...
[heater_bed]
heater_pin: PD7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA1
#control: pid
#pid_kp: 70.405
#pid_ki: 1.229
#pid_kd: 1008.553
min_temp: 0
max_temp: 130
[fan]
pin: PB7
[heater_fan heatbreak_fan]
pin: !rpi:gpio22
heater_temp: 40.0
[fan_generic mcu_fan]
pin: PB6
[fan_generic rpi_fan]
pin: PB5
#[fan_generic mcu]
#pin: rpi:pwmchip0/pwm0
#max_power: 1
#hardware_pwm: True
#cycle_time: 10
#[fan_generic exhaust]
#pin: rpi:pwmchip0/pwm1
#max_power: 1
#hardware_pwm: True
#cycle_time: 10
[filament_switch_sensor extruder_filament]
switch_pin: ^PC2
[bltouch]
sensor_pin: ^PC13
control_pin: PE5
x_offset: -39.2
y_offset: -10.9
#z_offset: 0.0
speed: 20
samples: 1
sample_retract_dist: 8.0
[safe_z_home]
home_xy_position: 156.5,129.5
speed: 150
z_hop: 10
z_hop_speed: 10
[z_tilt]
z_positions:
200, 195
30, 195
points:
244, 212.9
71.2, 212.9
speed: 200
horizontal_move_z: 10
retries: 20
retry_tolerance: 0.005
[bed_mesh]
speed: 120
mesh_min: 30,30 # Need to handle head distance with cr-touch (bl_touch)
mesh_max: 204.8,218.1 # Max probe range
probe_count: 5,5
fade_start: 1
fade_end: 10
fade_target: 0
algorithm: bicubic
[bed_screws]
screw1:30,195
screw1_name:1
screw2:30,25
screw2_name:2
screw3:200,25
screw3_name:3
screw4:200,195
screw4_name:4
[screws_tilt_adjust]
screw1: 71.2, 212.9
screw1_name: Back left
screw2: 71.2, 42.9
screw2_name: Front left
screw3: 244, 42.9
screw3_name: Front right
screw4: 244, 212.9
screw4_name: Back right
screw_thread: CW-M4
horizontal_move_z: 10
[firmware_retraction]
retract_length: 1
retract_speed: 45
[temperature_sensor rpi_host]
sensor_type: temperature_host
sensor_path: /sys/class/thermal/thermal_zone0/temp
[temperature_sensor mcu]
sensor_type: temperature_mcu
sensor_mcu: mcu
[exclude_object]
[include mechanical_level_tmc2209.cfg]
[include macros.cfg]
[include KAMP_Settings.cfg]
[include leds.cfg]
[include sensors.cfg]
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=PC5, EXP1_3=PB1, EXP1_5=PE9, EXP1_7=PE11, EXP1_9=<GND>,
EXP1_2=PB0, EXP1_4=PE8, EXP1_6=PE10, EXP1_8=PE12, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_3=PE7, EXP2_5=PB2, EXP2_7=PC4, EXP2_9=<GND>,
EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=<RST>, EXP2_10=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
########################################
# TMC2209 configuration
########################################
[tmc2209 stepper_x]
uart_pin: PD5
run_current: 0.780
#diag_pin:
[tmc2209 stepper_y]
uart_pin: PD0
run_current: 0.780
#diag_pin:
[tmc2209 stepper_z]
uart_pin: PE1
run_current: 0.780
#diag_pin:
[tmc2209 stepper_z1]
uart_pin: PD12
run_current: 0.780
#diag_pin:
[tmc2209 extruder]
uart_pin: PC6
run_current: 0.600
#diag_pin:
#[tmc2209 extruder1]
#uart_pin: PD12
#run_current: 0.600
#diag_pin:
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PD5
#spi_software_miso_pin: PE15
#spi_software_mosi_pin: PE13
#spi_software_sclk_pin: PE14
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PC1
#[tmc2130 stepper_y]
#cs_pin: PD0
#spi_software_miso_pin: PE15
#spi_software_mosi_pin: PE13
#spi_software_sclk_pin: PE14
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PC3
#[tmc2130 stepper_z]
#cs_pin: PE1
#spi_software_miso_pin: PE15
#spi_software_mosi_pin: PE13
#spi_software_sclk_pin: PE14
#run_current: 0.650
#stealthchop_threshold: 999999
#diag1_pin: PC0
#[tmc2130 extruder]
#cs_pin: PC6
#spi_software_miso_pin: PE15
#spi_software_mosi_pin: PE13
#spi_software_sclk_pin: PE14
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PC2
#[tmc2130 extruder1]
#cs_pin: PD12
#spi_software_miso_pin: PE15
#spi_software_mosi_pin: PE13
#spi_software_sclk_pin: PE14
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PA0
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.185000, 0.105000, 0.140000, 0.215000, 0.197500
#*# 0.057500, -0.010000, 0.007500, 0.075000, 0.080000
#*# 0.050000, -0.002500, 0.000000, 0.052500, 0.065000
#*# 0.102500, 0.052500, 0.060000, 0.087500, 0.090000
#*# 0.240000, 0.222500, 0.212500, 0.265000, 0.260000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 30.0
#*# max_x = 204.8
#*# min_y = 30.0
#*# max_y = 218.07
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 25.567
#*# pid_ki = 1.508
#*# pid_kd = 108.340
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 73.065
#*# pid_ki = 1.246
#*# pid_kd = 1071.321
#*#
#*# [bltouch]
#*# z_offset = 1.610
#[temperature_sensor enclosure_temp_bottom]
#sensor_type: BME280
#i2c_address: 118
#i2c_mcu: rpi
#i2c_software_scl_pin: rpi:gpio3
#i2c_software_sda_pin: rpi:gpio2
#[temperature_sensor enclosure_temp_top]
#sensor_type: BME280
#i2c_address: 118
#i2c_mcu: rpi
#i2c_software_scl_pin: rpi:gpio1
#i2c_software_sda_pin: rpi:gpio0
[gcode_macro QUERY_ENCLOSURE_BOTTOM]
gcode:
{% set sensor = printer["bme280 enclosure_temp_bottom"] %}
{action_respond_info(
"Temperature: %.2f C\n"
"Pressure: %.2f hPa\n"
"Humidity: %.2f%%" % (
sensor.temperature,
sensor.pressure,
sensor.humidity))}
[gcode_macro QUERY_ENCLOSURE_TOP]
gcode:
{% set sensor = printer["bme280 enclosure_temp_top"] %}
{action_respond_info(
"Temperature: %.2f C\n"
"Pressure: %.2f hPa\n"
"Humidity: %.2f%%" % (
sensor.temperature,
sensor.pressure,
sensor.humidity))}
;Filament name = {material_brand} {material_name}
;Filament type = {material_type}
;Filament weight = {filament_weight}
;Nozzle diameter = {machine_nozzle_size}
;Extruder temp
;M109 S{material_print_temperature_layer_0}
;Bed temp
;M190 S{material_bed_temperature_layer_0}
; ESTIMATOR_ADD_TIME 200 Level Preheat
; ESTIMATOR_ADD_TIME 120 Home and Bed Level Probe
; ESTIMATOR_ADD_TIME 60 Final Preheat
; ESTIMATOR_ADD_TIME 20 Prime Line
START_PRINT EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment