# This file contains common pin mappings for the BIGTREETECH SKR mini
# E3 v1.2. To use this config, the firmware should be compiled for the
# STM32F103 with a "28KiB bootloader" and USB communication. Also,
# select "Enable extra low-level configuration options" and configure
# "GPIO pins to set at micro-controller startup" to "!PC13".

# The "make flash" command does not work on the SKR mini E3. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the SKR
# mini E3 with that SD card.

# See docs/Config_Reference.md for a description of parameters.

# Note: This board has a design flaw in its thermistor circuits that
# cause inaccurate temperatures (most noticeable at low temperatures).

# Met de DropEffect OmniDrop V2.1 is het punt links-beneden (dus het 0-punt): X = 12 en Y = 30

[stepper_x]
step_pin: PB13
dir_pin: !PB12
enable_pin: !PB14
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC0
position_endstop: -12
position_min: -13
position_max: 222
homing_speed: 50

[tmc2209 stepper_x]
uart_pin: PB15
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 250

[stepper_y]
step_pin: PB10
dir_pin: !PB2
enable_pin: !PB11
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC1
position_endstop: -29
position_min: -30
position_max: 205
homing_speed: 50

[tmc2209 stepper_y]
uart_pin: PC6
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 250

[stepper_z]
step_pin: PB0
dir_pin: PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC2
position_endstop: 0.0
position_max: 250

[tmc2209 stepper_z]
uart_pin: PC10
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 5

[bltouch]
sensor_pin: ^PC14
control_pin: PA1
#pin_up_reports_not_triggered: False
#pin_up_touch_mode_reports_triggered: False
x_offset: 32.4
y_offset: -34.9
z_offset: 1.6
pin_move_time: 0.680

[extruder]
# DropEffect OmniaDrop V2.1
step_pin: PB3
dir_pin: !PB4
enable_pin: !PD2
microsteps: 16
gear_ratio: 5:1
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA0
#control: pid
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 285

[tmc2209 extruder]
uart_pin: PC11
run_current: 0.500
hold_current: 0.400
stealthchop_threshold: 5

[heater_fan my_nozzle_fan]
# Aansturing via PT-DET pinout
pin: PC12
heater: extruder
heater_temp: 50.0
fan_speed: 1.0

[heater_bed]
heater_pin: PC9
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC3
#control: pid
#pid_Kp: 54.027
#pid_Ki: 0.770
#pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PA8

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f103xe_32FFDA054158323011792557-if00

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

[static_digital_output usb_pullup_enable]
pins: !PC13

[board_pins]
aliases:
    # EXP1 header
    EXP1_1=PB5, EXP1_3=PA9,   EXP1_5=PA10, EXP1_7=PB8, EXP1_9=<GND>,
    EXP1_2=PB6, EXP1_4=<RST>, EXP1_6=PB9,  EXP1_8=PB7, EXP1_10=<5V>

# See the sample-lcd.cfg file for definitions of common LCD displays.

[display]
lcd_type: st7920
cs_pin: EXP1_7
sclk_pin: EXP1_6
sid_pin: EXP1_8
encoder_pins: ^EXP1_5, ^EXP1_3
click_pin: ^!EXP1_2

[output_pin beeper]
pin: EXP1_1

[virtual_sdcard]
path: ~/gcode_files

[display_status]

[pause_resume]

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  ##### 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 %}
  ##### 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 - 2.0) %}
      {% set z_safe = 2.0 %}
  {% else %}
      {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  PAUSE_BASE
  G91
  {% if printer.extruder.can_extrude|lower == 'true' %}
    G1 E-{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}
  {% if "xyz" in printer.toolhead.homed_axes %}
    G1 Z{z_safe} F900
    G90
    G1 X{x_park} Y{y_park} F6000
  {% else %}
    {action_respond_info("Printer not homed")}
  {% endif %} 
  
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  #### 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' %}
    G91
    G1 E{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}  
  RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
  TURN_OFF_HEATERS
  CANCEL_PRINT_BASE
  
# The print bed can move so far to the front, that the nozzle can reach the
# plastic cover of the print bed heater cable (only when the bed is moved by
# hand). By homing the Y axis before the X axis, it is ensured the nozzle will
# not melt through the plastic part.
# BEWARE: You will lose the ability to home axes individually. The printer will
# always home all axes for every G28 command.
#[homing_override]
#gcode:
# G28 Y0
# G28 X0
# G28 Z0

[bed_screws]
screw1: 32,32
screw2: 203,32
screw3: 203,203
screw4: 32,203
screw5: 117,117

### menu main ###
[menu __main]
type: list
name: Main

### menu tune ###
[menu __main __tune]
type: list
enable: {printer.idle_timeout.state == "Printing"}
name: Afstellen

[menu __main __tune __speed]
type: input
name: Snelheid: {'%3d' % (menu.input*100)}%
input: {printer.gcode_move.speed_factor}
input_min: 0.01
input_max: 5
input_step: 0.01
realtime: True
gcode:
    M220 S{'%d' % (menu.input*100)}

[menu __main __tune __flow]
type: input
name: Flow: {'%3d' % (menu.input*100)}%
input: {printer.gcode_move.extrude_factor}
input_min: 0.01
input_max: 2
input_step: 0.01
realtime: True
gcode:
    M221 S{'%d' % (menu.input*100)}

[menu __main __tune __offsetz]
type: input
name: Offset Z:{'%05.3f' % menu.input}
input: {printer.gcode_move.homing_origin.z}
input_min: -5
input_max: 5
input_step: 0.005
realtime: True
gcode:
    SET_GCODE_OFFSET Z={'%.3f' % menu.input} MOVE=1

### menu virtual sdcard ###
[menu __main __sdcard]
type: vsdlist
enable: {('virtual_sdcard' in printer)}
name: SD Kaart

[menu __main __sdcard __start]
type: command
enable: {('virtual_sdcard' in printer) and printer.virtual_sdcard.file_path and not printer.virtual_sdcard.is_active}
name: Start printen
gcode: M24

[menu __main __sdcard __resume]
type: command
enable: {('virtual_sdcard' in printer) and printer.print_stats.state == "paused"}
name: Herstart printen
gcode:
    {% if "pause_resume" in printer %}
        RESUME
    {% else %}
        M24
    {% endif %}

[menu __main __sdcard __pause]
type: command
enable: {('virtual_sdcard' in printer) and printer.print_stats.state == "printing"}
name: Pauseer printen
gcode:
    {% if "pause_resume" in printer %}
        PAUSE
    {% else %}
        M25
    {% endif %}

[menu __main __sdcard __cancel]
type: command
enable: {('virtual_sdcard' in printer) and (printer.print_stats.state == "printing" or printer.print_stats.state == "paused")}
name: Annuleer printen
gcode:
    {% if 'pause_resume' in printer %}
        CANCEL_PRINT
    {% else %}
        M25
        M27
        M26 S0
        TURN_OFF_HEATERS
        {% if printer.toolhead.position.z <= printer.toolhead.axis_maximum.z - 5 %}
            G91
            G0 Z5 F1000
            G90
        {% endif %}
    {% endif %}

### menu control ###
[menu __main __control]
type: list
name: Control

[menu __main __control __home]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Home All
gcode: G28

[menu __main __control __homez]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Home Z
gcode: G28 Z

[menu __main __control __homexy]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Home X/Y
gcode: G28 X Y

[menu __main __control __disable]
type: command
name: Steppers uit
gcode:
    M84
    M18

[menu __main __control __fanonoff]
type: input
enable: {'fan' in printer}
name: Koeling: {'ON ' if menu.input else 'OFF'}
input: {printer.fan.speed}
input_min: 0
input_max: 1
input_step: 1
gcode:
    M106 S{255 if menu.input else 0}

[menu __main __control __fanspeed]
type: input
enable: {'fan' in printer}
name: Snelheid koeler: {'%3d' % (menu.input*100)}%
input: {printer.fan.speed}
input_min: 0
input_max: 1
input_step: 0.01
gcode:
    M106 S{'%d' % (menu.input*255)}

[menu __main __control __caselightonoff]
type: input
enable: {'output_pin caselight' in printer}
name: Verlichting: {'ON ' if menu.input else 'OFF'}
input: {printer['output_pin caselight'].value}
input_min: 0
input_max: 1
input_step: 1
gcode:
    SET_PIN PIN=caselight VALUE={1 if menu.input else 0}

[menu __main __control __caselightpwm]
type: input
enable: {'output_pin caselight' in printer}
name: Verlichting: {'%3d' % (menu.input*100)}%
input: {printer['output_pin caselight'].value}
input_min: 0.0
input_max: 1.0
input_step: 0.01
gcode:
    SET_PIN PIN=caselight VALUE={menu.input}

### menu move 10mm ###
[menu __main __control __move_10mm]
type: list
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats 10mm

[menu __main __control __move_10mm __axis_x]
type: input
name: Verplaats X:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.x}
input_min: {printer.toolhead.axis_minimum.x}
input_max: {printer.toolhead.axis_maximum.x}
input_step: 10.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 X{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_10mm __axis_y]
type: input
name: Verplaats Y:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.y}
input_min: {printer.toolhead.axis_minimum.y}
input_max: {printer.toolhead.axis_maximum.y}
input_step: 10.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Y{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_10mm __axis_z]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats Z:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: {printer.toolhead.axis_maximum.z}
input_step: 10.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Z{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_10mm __axis_e]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Draai E:{'%+06.1f' % menu.input}
input: 0
input_min: -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_max: {printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_step: 10.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    M83
    G1 E{menu.input} F240
    RESTORE_GCODE_STATE NAME=__move__axis

### menu move 1mm ###
[menu __main __control __move_1mm]
type: list
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats 1mm

[menu __main __control __move_1mm __axis_x]
type: input
name: Verplaats X:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.x}
input_min: {printer.toolhead.axis_minimum.x}
input_max: {printer.toolhead.axis_maximum.x}
input_step: 1.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 X{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_1mm __axis_y]
type: input
name: Verplaats Y:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.y}
input_min: {printer.toolhead.axis_minimum.y}
input_max: {printer.toolhead.axis_maximum.y}
input_step: 1.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Y{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_1mm __axis_z]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats Z:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: {printer.toolhead.axis_maximum.z}
input_step: 1.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Z{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_1mm __axis_e]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Draai E:{'%+06.1f' % menu.input}
input: 0
input_min: -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_max: {printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_step: 1.0
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    M83
    G1 E{menu.input} F240
    RESTORE_GCODE_STATE NAME=__move__axis

### menu move 0.1mm ###
[menu __main __control __move_01mm]
type: list
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats 0.1mm

[menu __main __control __move_01mm __axis_x]
type: input
name: Verplaats X:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.x}
input_min: {printer.toolhead.axis_minimum.x}
input_max: {printer.toolhead.axis_maximum.x}
input_step: 0.1
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 X{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_01mm __axis_y]
type: input
name: Verplaats Y:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.y}
input_min: {printer.toolhead.axis_minimum.y}
input_max: {printer.toolhead.axis_maximum.y}
input_step: 0.1
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Y{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_01mm __axis_z]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Verplaats Z:{'%05.1f' % menu.input}
input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: {printer.toolhead.axis_maximum.z}
input_step: 0.1
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    G90
    G1 Z{menu.input}
    RESTORE_GCODE_STATE NAME=__move__axis

[menu __main __control __move_01mm __axis_e]
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Draai E:{'%+06.1f' % menu.input}
input: 0
input_min: -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_max: {printer.configfile.config.extruder.max_extrude_only_distance|default(50)}
input_step: 0.1
gcode:
    SAVE_GCODE_STATE NAME=__move__axis
    M83
    G1 E{menu.input} F240
    RESTORE_GCODE_STATE NAME=__move__axis

### menu temperature ###
[menu __main __temp]
type: list
name: Temperatuur

[menu __main __temp __hotend0_target]
type: input
enable: {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)}
name: {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)}
input: {printer.extruder.target}
input_min: 0
input_max: {printer.configfile.config.extruder.max_temp}
input_step: 1
gcode: M104 T0 S{'%.0f' % menu.input}

[menu __main __temp __hotend1_target]
type: input
enable: {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)}
name: {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)}
input: {printer.extruder1.target}
input_min: 0
input_max: {printer.configfile.config.extruder1.max_temp}
input_step: 1
gcode: M104 T1 S{'%.0f' % menu.input}

[menu __main __temp __hotbed_target]
type: input
enable: {'heater_bed' in printer}
name: {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)}
input: {printer.heater_bed.target}
input_min: 0
input_max: {printer.configfile.config.heater_bed.max_temp}
input_step: 1
gcode: M140 S{'%.0f' % menu.input}

[menu __main __temp __preheat_pla]
type: list
name: Voorverwarmen PLA

[menu __main __temp __preheat_pla __all]
type: command
enable: {('extruder' in printer) and ('heater_bed' in printer)}
name: Alles voorverwarmen
gcode:
    M140 S60
    M104 S200

[menu __main __temp __preheat_pla __hotend]
type: command
enable: {'extruder' in printer}
name: Hotend voorverwarmen
gcode: M104 S200

[menu __main __temp __preheat_pla __hotbed]
type: command
enable: {'heater_bed' in printer}
name: Hotbed voorverwarmen
gcode: M140 S60

[menu __main __temp __preheat_abs]
type: list
name: Voorverwarmen ABS

[menu __main __temp __preheat_abs __all]
type: command
enable: {('extruder' in printer) and ('heater_bed' in printer)}
name: Alles voorverwarmen
gcode:
    M140 S110
    M104 S245

[menu __main __temp __preheat_abs __hotend]
type: command
enable: {'extruder' in printer}
name: Hotend voorverwarmen
gcode: M104 S245

[menu __main __temp __preheat_abs __hotbed]
type: command
enable: {'heater_bed' in printer}
name: Hotbed voorverwarmen
gcode: M140 S110

[menu __main __temp __cooldown]
type: list
name: Afkoelen

[menu __main __temp __cooldown __all]
type: command
enable: {('extruder' in printer) and ('heater_bed' in printer)}
name: Alles afkoelen
gcode:
    M104 S0
    M140 S0

[menu __main __temp __cooldown __hotend]
type: command
enable: {'extruder' in printer}
name: Hotend afkoelen
gcode: M104 S0

[menu __main __temp __cooldown __hotbed]
type: command
enable: {'heater_bed' in printer}
name: Hotbed afkoelen
gcode: M140 S0

### menu filament ###

[menu __main __filament]
type: list
name: Filament

[menu __main __filament __hotend0_target]
type: input
enable: {'extruder' in printer}
name: {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)}
input: {printer.extruder.target}
input_min: 0
input_max: {printer.configfile.config.extruder.max_temp}
input_step: 1
gcode: M104 T0 S{'%.0f' % menu.input}

[menu __main __filament __loadf]
type: command
name: Fil. snel laden
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E50 F960
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filament __loads]
type: command
name: Fil. langzaam laden
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E50 F240
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filament __unloadf]
type: command
name: Fil. snel uitwerpen
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E-50 F960
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filament __unloads]
type: command
name: Fil. langzaam uitwerpen
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E-50 F240
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filament __feed]
type: input
name: Snelheid: {'%.1f' % menu.input}
input: 5
input_step: 0.1
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E{'%.1f' % menu.input} F60
    RESTORE_GCODE_STATE NAME=__filament__load

### menu setup ###
[menu __main __setup]
type: list
enable: {not printer.idle_timeout.state == "Printing"}
name: Setup

[menu __main __setup __save_config]
type: command
name: Bewaar configuratie
gcode: SAVE_CONFIG

[menu __main __setup __restart]
type: list
name: Herstarten

[menu __main __setup __restart __host_restart]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Herstart host
gcode: RESTART

[menu __main __setup __restart __firmware_restart]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Herstart FW
gcode: FIRMWARE_RESTART

[menu __main __setup __tuning]
type: list
name: PID tuning

[menu __main __setup __tuning __hotend_pid_tuning]
type: command
enable: {(not printer.idle_timeout.state == "Printing") and ('extruder' in printer)}
name: Tune Hotend PID
gcode: PID_CALIBRATE HEATER=extruder TARGET=210 WRITE_FILE=1

[menu __main __setup __tuning __hotbed_pid_tuning]
type: command
enable: {(not printer.idle_timeout.state == "Printing") and ('heater_bed' in printer)}
name: Tune Hotbed PID
gcode: PID_CALIBRATE HEATER=heater_bed TARGET=60 WRITE_FILE=1

[menu __main __setup __calib]
type: list
name: Calibratie

[menu __main __setup __calib __bedprobe]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Bed probe
gcode: PROBE

[menu __main __setup __dump]
type: command
name: Dump parameters
gcode:
   {% for name1 in printer %}
      {% for name2 in printer[name1] %}
         { action_respond_info("printer['%s'].%s = %s"
                               % (name1, name2, printer[name1][name2])) }
      {% else %}
         { action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) }
      {% endfor %}
   {% endfor %}

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 28.740
#*# pid_ki = 2.129
#*# pid_kd = 96.998
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 65.356
#*# pid_ki = 1.168
#*# pid_kd = 914.164
