# 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.


# 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. In the event of an MCU
# software error the heater_fan will be set to its max_power.
#[heater_fan my_nozzle_fan]
# See the "fan" section for fan configuration parameters.
#pin: ar4
# The remaining variables are specific to heater_fan.
#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


# 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.


# 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.


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