# This file serves as documentation for config parameters of
# additional devices that may be configured on a printer. The snippets
# in this file may be copied into the main printer.cfg file. See the
# "example.cfg" file for description of common config parameters.
#
# Note, where an extra config section creates additional pins, the
# section defining the pins must be listed in the config file before
# any sections using those pins.


# Z height probe. One may define this section to enable Z height
# probing hardware. When this section is enabled, PROBE and
# QUERY_PROBE extended g-code commands become available. The probe
# section also creates a virtual probe:z_virtual_endstop pin. One may
# set the stepper_z endstop_pin to this virtual pin on cartesian style
# printers that use the probe in place of a z endstop.
#[probe]
#pin: ar15
#   Probe detection pin. This parameter must be provided.
#z_offset:
#   The distance (in mm) between the bed and the nozzle when the probe
#   triggers. This parameter must be provided.
#speed: 5.0
#   Speed (in mm/s) of the Z axis when probing. The default is 5mm/s.
#activate_gcode:
#   A list of G-Code commands (one per line) to execute prior to each
#   probe attempt. This may be useful if the probe needs to be
#   activated in some way. The default is to not run any special
#   G-Code commands on activation.
#deactivate_gcode:
#   A list of G-Code commands (one per line) to execute after each
#   probe attempt completes. The default is to not run any special
#   G-Code commands on deactivation.


# Bed tilt compensation. One may define a [bed_tilt] config section to
# enable move transformations that account for a tilted bed.
#[bed_tilt]
#x_adjust: 0
#   The amount to add to each move's Z height for each mm on the X
#   axis. The default is 0.
#y_adjust: 0
#   The amount to add to each move's Z height for each mm on the Y
#   axis. The default is 0.
# The remaining parameters control a BED_TILT_CALIBRATE extended
# g-code command that may be used to calibrate appropriate x and y
# adjustment parameters.
#points:
#    A newline separated list of X,Y points that should be probed
#    during a BED_TILT_CALIBRATE command. The default is to not enable
#    the command.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the
#   calibration. The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#manual_probe:
#   If true, then BED_TILT_CALIBRATE will perform manual probing. If
#   false, then a PROBE command will be run at each probe
#   point. Manual probing is accomplished by manually jogging the Z
#   position of the print head at each probe point and then issuing a
#   NEXT extended g-code command to record the position at that
#   point. The default is false if a [probe] config section is present
#   and true otherwise.


# Multiple Z stepper tilt adjustment. This feature enables independent
# adjustment of multiple z steppers (see stepper_z1 section below) to
# adjust for tilt. If this section is present then a Z_TILT_ADJUST
# extended G-Code command becomes available.
#[z_tilt]
#z_positions:
#    A newline separated list of X,Y coordinates describing the
#    location of each Z stepper. The first entry corresponds to
#    stepper_z, the second to stepper_z1, the third to stepper_z2,
#    etc. This parameter must be provided.
#points:
#    A newline separated list of X,Y points that should be probed
#    during a Z_TILT_ADJUST command. The default is to use the same
#    positions described in z_positions.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.


# In a multi-extruder printer add an additional extruder section for
# each additional extruder. The additional extruder sections should be
# named "extruder1", "extruder2", "extruder3", and so on. See the
# "extruder" section in example.cfg for a description of available
# parameters.
#[extruder1]
#step_pin: ar36
#dir_pin: ar34
#...
#shared_heater:
#   If this extruder uses the same heater already defined for another
#   extruder then place the name of that extruder here.  For example,
#   should extruder3 and extruder4 share a heater then the extruder3
#   config section should define the heater and the extruder4 section
#   should specify "shared_heater: extruder3". The default is to not
#   reuse an existing heater.
#deactivate_gcode:
#   A list of G-Code commands (one per line) to execute on a G-Code
#   tool change command (eg, "T1") that deactivates this extruder and
#   activates some other extruder. It only makes sense to define this
#   section on multi-extruder printers. The default is to not run any
#   special G-Code commands on deactivation.
#activate_gcode:
#   A list of G-Code commands (one per line) to execute on a G-Code
#   tool change command (eg, "T0") that activates this extruder. It
#   only makes sense to define this section on multi-extruder
#   printers. The default is to not run any special G-Code commands on
#   activation.


# Support for cartesian printers with dual carriages on a single
# axis. The active carriage is set via the SET_DUAL_CARRIAGE extended
# g-code command. The "SET_DUAL_CARRIAGE CARRIAGE=1" command will
# activate the carriage defined in this section (CARRIAGE=0 will
# return activation to the primary carriage). Dual carriage support is
# typically combined with extra extruders - use the SET_DUAL_CARRIAGE
# command in the activate_gcode / deactivate_gcode section of the
# appropriate extruder. Be sure to also use that mechanism to park the
# carriages during deactivation.
#[dual_carriage]
#axis:
#   The axis this extra carriage is on (either x or y). This parameter
#   must be provided.
#step_pin:
#dir_pin:
#enable_pin:
#step_distance:
#endstop_pin:
#position_endstop:
#position_min:
#position_max:
#   See the example.cfg for the definition of the above parameters.


# Heater and temperature sensor verification. Heater verification is
# automatically enabled for each heater that is configured on the
# printer. Use verify_heater sections to change the default settings.
#[verify_heater heater_config_name]
#heating_gain: 2
#   The minimum temperature (in Celsius) that the heater must increase
#   by when approaching a new target temperature. The default is 2.
#check_gain_time:
#   The amount of time (in seconds) that the heating_gain must be met
#   in before an error is raised. The default is 20 seconds for
#   extruders and 60 seconds for heater_bed.
#hysteresis: 5
#   The difference between the target temperature and the current
#   temperature for the heater to be considered within range of the
#   target temperature. The default is 5.
#max_error: 120
#   The maximum temperature difference a heater that falls outside the
#   target temperature range may accumulate before an error is
#   raised. For example, if the target temperature is 200, the
#   hysteresis is 5, the max_error is 120, and the temperature is
#   reported at 185 degrees for 12 seconds then an error would be
#   raised (or 24 seconds at 190, or 120 seconds at 194, etc.). The
#   default is 120.


# Multi-stepper axes. On a cartesian style printer, the stepper
# controlling a given axis may have additional config blocks defining
# steppers that should be stepped in concert with the primary
# stepper. One may define any number of sections with a numeric suffix
# starting at 1 (for example, "stepper_z1", "stepper_z2", etc.).
#[stepper_z1]
#step_pin: ar36
#dir_pin: ar34
#enable_pin: !ar30
#step_distance: .005
#   See the example.cfg for the definition of the above parameters.
#endstop_pin: ^ar19
#   If an endstop_pin is defined for the additional stepper then the
#   stepper will home until the endstop is triggered. Otherwise, the
#   endstop will home until the endstop on the primary stepper for the
#   axis is triggered.


# Stepper phase adjusted endstops. The following additional parameters
# may be added to a stepper axis definition to improve the accuracy of
# endstop switches.
#[stepper_z]
#homing_stepper_phases:
#   One may set this to the number of phases of the stepper motor
#   driver (which is the number of micro-steps multiplied by
#   four). This parameter must be provided if using stepper phase
#   adjustments.
#homing_endstop_accuracy: 0.200
#   Sets the expected accuracy (in mm) of the endstop. This represents
#   the maximum error distance the endstop may trigger (eg, if an
#   endstop may occasionally trigger 100um early or up to 100um late
#   then set this to 0.200 for 200um). The default is
#   homing_stepper_phases*step_distance.
#homing_endstop_phase:
#   This specifies the phase of the stepper motor driver to expect
#   when hitting the endstop. Only set this value if one is sure the
#   stepper motor driver is reset every time the mcu is reset. If this
#   is not set, then the stepper phase will be detected on the first
#   home and that phase will be used on all subsequent homes.
#homing_endstop_align_zero: False
#   If true then the code will arrange for the zero position on the
#   axis to occur at a full step on the stepper motor. (If used on the
#   Z axis and the print layer height is a multiple of a full step
#   distance then every layer will occur on a full step.) The default
#   is False.


# Heater cooling fans (one may define any number of sections with a
# "heater_fan" prefix). A "heater fan" is a fan that will be enabled
# whenever its associated heater is active. By default, a heater_fan
# has a shutdown_speed equal to max_power.
#[heater_fan my_nozzle_fan]
#pin:
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#   See the "fan" section in example.cfg for a description of the
#   above parameters.
#heater: extruder
#   Name of the config section defining the heater that this fan is
#   associated with.  The default is "extruder".
#heater_temp: 50.0
#   A temperature (in Celsius) that the heater must drop below before
#   the fan is disabled. The default is 50 Celsius.
#fan_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when its associated heater is enabled. The default
#   is 1.0


# Temperature-triggered cooling fans (one may define any number of
# sections with a "temperature_fan" prefix). A "temperature fan" is a
# fan that will be enabled whenever its associated sensor is above a
# set temperature. By default, a heater_fan has a shutdown_speed equal
# to max_power.
#[temperature_fan my_temp_fan]
#pin:
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#   See the "fan" section in example.cfg for a description of the
#   above parameters.
#sensor_type: EPCOS 100K B57560G104F
#sensor_pin: analog13
#   See the "heater" section for details about the sensor_type and
#   sensor_pin parameters.
#min_temp: 0
#max_temp: 100
#   The maximum range of valid temperatures (in Celsius) that the
#   sensor must remain within. This controls a safety feature
#   implemented in the micro-controller code - should the measured
#   temperature ever fall outside this range then the micro-controller
#   will go into a shutdown state. Set this range just wide enough so
#   that reasonable temperatures do not result in an error. These
#   parameters must be provided.
#target_temp: 40.0
#   A temperature (in Celsius) that will be the target temperature.
#   The default is 40 degrees.
#max_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when the sensor temperature exceeds the set value.
#   The default is 1.0.
#min_speed: 0.3
#   The minumin fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when the sensor temperature is the set value.
#   The default is 0.3.
#control: watermark
#   Control algorithm (either watermark or pid). This parameter must
#   be provided.
#pid_Kp: 40
#   Kp is the "proportional" constant for the pid. This parameter must
#   be provided for PID heaters.
#pid_Ki: 0.2
#   Ki is the "integral" constant for the pid. This parameter must be
#   provided for PID heaters.
#pid_Kd: 0.1
#   Kd is the "derivative" constant for the pid. This parameter must
#   be provided for PID heaters.
#pid_deriv_time: 2.0
#   A time value (in seconds) over which the derivative in the pid
#   will be smoothed to reduce the impact of measurement noise. The
#   default is 2 seconds.
#pid_integral_max:
#   The maximum "windup" the integral term may accumulate. The default
#   is to use the same value as max_power.


# Additional micro-controllers (one may define any number of sections
# with an "mcu" prefix). Additional micro-controllers introduce
# additional pins that may be configured as heaters, steppers, fans,
# etc.. For example, if an "[mcu extra_mcu]" section is introduced,
# then pins such as "extra_mcu:ar9" may then be used elsewhere in the
# config (where "ar9" is a hardware pin name or alias name on the
# given mcu).
#[mcu my_extra_mcu]
# See the "mcu" section in example.cfg for configuration parameters.


# Servos (one may define any number of sections with a "servo"
# prefix). The servos may be controlled using the SET_SERVO g-code
# command. For example: SET_SERVO SERVO=my_servo ANGLE=180
#[servo my_servo]
#pin: ar7
#   PWM output pin controlling the servo. This parameter must be
#   provided.
#maximum_servo_angle: 180
#   The maximum angle (in degrees) that this servo can be set to. The
#   default is 180 degrees.
#minimum_pulse_width: 0.001
#   The minimum pulse width time (in seconds). This should correspond
#   with an angle of 0 degrees. The default is 0.001 seconds.
#maximum_pulse_width: 0.002
#   The maximum pulse width time (in seconds). This should correspond
#   with an angle of maximum_servo_angle. The default is 0.002
#   seconds.


# Statically configured digital output pins (one may define any number
# of sections with a "static_digital_output" prefix). Pins configured
# here will be setup as a GPIO output during MCU configuration. They
# can not be changed at run-time.
#[static_digital_output my_output_pins]
#pins:
#   A comma separated list of pins to be set as GPIO output pins. The
#   pin will be set to a high level unless the pin name is prefaced
#   with "!". This parameter must be provided.


# Run-time configurable output pins (one may define any number of
# sections with an "output_pin" prefix). Pins configured here will be
# setup as output pins and one may modify them at run-time using the
# "SET_PIN PIN=my_pin VALUE=.1" extended g-code command.
#[output_pin my_pin]
#pin:
#   The pin to configure as an output. This parameter must be
#   provided.
#pwm: False
#   Set if the output pin should be capable of
#   pulse-width-modulation. If this is true, the value fields should
#   be between 0 and 1; if it is false the value fields should be
#   either 0 or 1. The default is False.
#static_value:
#   If this is set, then the pin is assigned to this value at startup
#   and the pin can not be changed during runtime. A static pin uses
#   slightly less ram in the micro-controller. The default is to use
#   runtime configuration of pins.
#value:
#   The value to initially set the pin to during MCU
#   configuration. The default is 0 (for low voltage).
#shutdown_value:
#   The value to set the pin to on an MCU shutdown event. The default
#   is 0 (for low voltage).
#cycle_time: 0.100
#   The amount of time (in seconds) per PWM cycle. It is recommended
#   this be 10 milliseconds or greater when using software based
#   PWM. The default is 0.100 seconds for pwm pins.
#hardware_pwm: False
#   Enable this to use hardware PWM instead of software PWM. The
#   default is False.
#scale:
#   This parameter can be used to alter how the 'value' and
#   'shutdown_value' parameters are interpreted for pwm pins. If
#   provided, then the 'value' parameter should be between 0.0 and
#   'scale'. This may be useful when configuring a PWM pin that
#   controls a stepper voltage reference. The 'scale' can be set to
#   the equivalent stepper amperage if the PWM were fully enabled, and
#   then the 'value' parameter can be specified using the desired
#   amperage for the stepper. The default is to not scale the 'value'
#   parameter.


# Multiple pin outputs (one may define any number of sections with a
# "multi_pin" prefix). A multi_pin output creates an internal pin
# alias that can modify multiple output pins each time the alias pin
# is set. For example, one could define a "[multi_pin my_fan]" object
# containing two pins and then set "pin=multi_pin:my_fan" in the
# "[fan]" section - on each fan change both output pins would be
# updated. These aliases may not be used with stepper motor pins.
#[multi_pin my_multi_pin]
#pins:
#   A comma separated list of pins associated with this alias. This
#   parameter must be provided.


# Statically configured AD5206 digipots connected via SPI bus (one may
# define any number of sections with an "ad5206" prefix).
#[ad5206 my_digipot]
#enable_pin:
#   The pin corresponding to the AD5206 chip select line. This pin
#   will be set to low at the start of SPI messages and raised to high
#   after the message completes. This parameter must be provided.
#channel_1:
#channel_2:
#channel_3:
#channel_4:
#channel_5:
#channel_6:
#   The value to statically set the given AD5206 channel to. This is
#   typically set to a number between 0.0 and 1.0 with 1.0 being the
#   highest resistance and 0.0 being the lowest resistance. However,
#   the range may be changed with the 'scale' parameter (see
#   below). If a channel is not specified then it is left
#   unconfigured.
#scale:
#   This parameter can be used to alter how the 'channel_x' parameters
#   are interpreted. If provided, then the 'channel_x' parameters
#   should be between 0.0 and 'scale'. This may be useful when the
#   AD5206 is used to set stepper voltage references. The 'scale' can
#   be set to the equivalent stepper amperage if the AD5206 were at
#   its highest resistance, and then the 'channel_x' parameters can be
#   specified using the desired amperage value for the stepper. The
#   default is to not scale the 'channel_x' parameters.


# Configure a TMC2130 stepper motor driver via SPI bus. To use this
# feature, define a config section with a "tmc2130" prefix followed by
# the name of the corresponding stepper config section (for example,
# "[tmc2130 stepper_x]").
#[tmc2130 stepper_x]
#cs_pin:
#   The pin corresponding to the TMC2130 chip select line. This pin
#   will be set to low at the start of SPI messages and raised to high
#   after the message completes. This parameter must be provided.
#microsteps:
#   The number of microsteps to configure the driver to use. Valid
#   values are 1, 2, 4, 8, 16, 32, 64, 128, 256. This parameter must
#   be provided.
#interpolate: True
#   If true, enable TMC2130 step interpolation (the driver will
#   interally step at a rate of 256 micro-steps). The default is True.
#run_current:
#   The amount of current (in amps) to configure the driver to use
#   during stepper movement. This parameter must be provided.
#hold_current:
#   The amount of current (in amps) to configure the driver to use
#   when the stepper is not moving. The default is to use the same
#   value as run_current.
#sense_resistor: 0.110
#   The resistance (in ohms) of the motor sense resistor. The default
#   is 0.110 ohms.
#stealthchop_threshold: 0
#   The velocity (in mm/s) to set the "stealthChop" threshold to. When
#   set, "stealthChop" mode will be enabled if the stepper motor
#   velocity is below this value. The default is 0, which disables
#   "stealthChop" mode.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 0
#driver_BLANK_TIME_SELECT: 1
#driver_TOFF: 4
#driver_HEND: 7
#driver_HSTRT: 0
#driver_PWM_AUTOSCALE: True
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 4
#driver_PWM_AMPL: 128
#driver_SGT: 0
#   Set the given register during the configuration of the TMC2130
#   chip. This may be used to set custom motor parameters. The
#   defaults for each parameter are next to the parameter name in the
#   above list.
#diag1_pin:
#   The micro-controller pin attached to the DIAG1 line of the TMC2130
#   chip. Setting this creates a "tmc2130_stepper_x:virtual_endstop"
#   virtual pin which may be used as the stepper's endstop_pin. Doing
#   this enables "sensorless homing". (Be sure to also set driver_SGT
#   to an appropriate sensitivity value.) The default is to not enable
#   sensorless homing.


# Homing override. One may use this mechanism to run a series of
# g-code commands in place of a G28 found in the normal g-code input.
# This may be useful on printers that require a specific procedure to
# home the machine.
#[homing_override]
#gcode:
#   A list of G-Code commands (one per line) to execute in place of
#   all G28 commands found in the normal g-code input. If a G28 is
#   contained in this list of commands then it will invoke the normal
#   homing procedure for the printer. The commands listed here must
#   home all axes. This parameter must be provided.
#set_position_x:
#set_position_y:
#set_position_z:
#   If specified, the printer will assume the axis is at the specified
#   position prior to running the above g-code commands. Setting this
#   disables homing checks for that axis. This may be useful if the
#   head must move prior to invoking the normal G28 mechanism for an
#   axis. The default is to not force a position for an axis.


# A virtual sdcard may be useful if the host machine is not fast
# enough to run OctoPrint well. It allows the Klipper host software to
# directly print gcode files stored in a directory on the host using
# standard sdcard G-Code commands (eg, M24).
#[virtual_sdcard]
#path: ~/.octoprint/uploads/
#   The path of the local directory on the host machine to look for
#   g-code files. This is a read-only directory (sdcard file writes
#   are not supported). One may point this to OctoPrint's upload
#   directory (generally ~/.octoprint/uploads/ ). This parameter must
#   be provided.


# Support for a display attached to the micro-controller.
#[display]
#lcd_type:
#   The type of LCD chip in use. This may be either "hd44780" (which
#   is used in "RepRapDiscount 2004 Smart Controller" type displays)
#   or "st7920" (which is used in "RepRapDiscount 12864 Full Graphic
#   Smart Controller" type displays). This parameter must be provided.
#rs_pin:
#e_pin:
#d4_pin:
#d5_pin:
#d6_pin:
#d7_pin:
#   The pins connected to an hd44780 type lcd. These parameters must
#   be provided when using an hd44780 display.
#cs_pin:
#sclk_pin:
#sid_pin:
#   The pins connected to an st7920 type lcd. These parameters must be
#   provided when using an st7920 display.


# Custom thermistors (one may define any number of sections with a
# "thermistor" prefix). A custom thermistor may be used in the
# sensor_type field of a heater config section. (For example, if one
# defines a "[thermistor my_thermistor]" section then one may use a
# "sensor_type: my_thermistor" when defining a heater.) Be sure to
# place the thermistor section in the config file above its first use
# in a heater section.
#[thermistor my_thermistor]
#temperature1:
#resistance1:
#temperature2:
#resistance2:
#temperature3:
#resistance3:
#   Three resistance measurements (in Ohms) at the given temperatures
#   (in Celsius). The three measurements will be used to calculate the
#   Steinhart-Hart coefficients for the thermistor. These parameters
#   must be provided when using Steinhart-Hart to define the
#   thermistor.
#beta:
#   Alternatively, one may define temperature1, resistance1, and beta
#   to define the thermistor parameters. This parameter must be
#   provided when using "beta" to define the thermistor.


# Custom ADC temperature sensors (one may define any number of
# sections with an "adc_temperature" prefix). This allows one to
# define a custom temperature sensor that measures a voltage on an
# Analog to Digital Converter (ADC) pin and uses linear interpolation
# between a set of configured temperature/voltage measurements to
# determine the temperature. The resulting sensor can be used as a
# sensor_type in a heater section. (For example, if one defines a
# "[adc_temperature my_sensor]" section then one may use a
# "sensor_type: my_sensor" when defining a heater.) Be sure to place
# the sensor section in the config file above its first use in a
# heater section.
#[adc_temperature my_sensor]
#temperature1:
#voltage1:
#temperature2:
#voltage2:
#...
#   A set of temperatures (in Celsius) and voltages (in Volts) to use
#   as reference when converting a temperature. At least two
#   measurements must be provided.


# G-Code macros (one may define any number of sections with a
# "gcode_macro" prefix).
#[gcode_macro my_cmd]
#gcode:
#   A list of G-Code commands (one per line) to execute in place of
#   "my_cmd". This parameter must be provided.


# Replicape support - see the generic-replicape.cfg file for further
# details.
#[replicape]