Untitled diff

Created Diff never expires
/**
/**
* Marlin 3D Printer Firmware
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
*
* Based on Sprinter and grbl.
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
*
* This program is free software: you can redistribute it and/or modify
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
*/


/**
/**
* Configuration.h
* Configuration.h
*
*
* Basic settings such as:
* Basic settings such as:
*
*
* - Type of electronics
* - Type of electronics
* - Type of temperature sensor
* - Type of temperature sensor
* - Printer geometry
* - Printer geometry
* - Endstop configuration
* - Endstop configuration
* - LCD controller
* - LCD controller
* - Extra features
* - Extra features
*
*
* Advanced settings can be found in Configuration_adv.h
* Advanced settings can be found in Configuration_adv.h
*
*
*/
*/
#ifndef CONFIGURATION_H
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#define CONFIGURATION_H


/**
/**
*
*
* ***********************************
* ***********************************
* ** ATTENTION TO ALL DEVELOPERS **
* ** ATTENTION TO ALL DEVELOPERS **
* ***********************************
* ***********************************
*
*
* You must increment this version number for every significant change such as,
* You must increment this version number for every significant change such as,
* but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
* but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
*
*
* Note: Update also Version.h !
* Note: Update also Version.h !
*/
*/
#define CONFIGURATION_H_VERSION 010100
#define CONFIGURATION_H_VERSION 010100


//===========================================================================
//===========================================================================
//============================= Getting Started =============================
//============================= Getting Started =============================
//===========================================================================
//===========================================================================


/**
/**
* Here are some standard links for getting your machine calibrated:
* Here are some standard links for getting your machine calibrated:
*
*
* http://reprap.org/wiki/Calibration
* http://reprap.org/wiki/Calibration
* http://youtu.be/wAL9d7FgInk
* http://youtu.be/wAL9d7FgInk
* http://calculator.josefprusa.cz
* http://calculator.josefprusa.cz
* http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
* http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
* http://www.thingiverse.com/thing:5573
* http://www.thingiverse.com/thing:5573
* https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
* https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
* http://www.thingiverse.com/thing:298812
* http://www.thingiverse.com/thing:298812
*/
*/


//===========================================================================
//===========================================================================
//============================= DELTA Printer ===============================
//============================= DELTA Printer ===============================
//===========================================================================
//===========================================================================
// For a Delta printer replace the configuration files with the files in the
// For a Delta printer replace the configuration files with the files in the
// example_configurations/delta directory.
// example_configurations/delta directory.
//
//


//===========================================================================
//===========================================================================
//============================= SCARA Printer ===============================
//============================= SCARA Printer ===============================
//===========================================================================
//===========================================================================
// For a Scara printer replace the configuration files with the files in the
// For a Scara printer replace the configuration files with the files in the
// example_configurations/SCARA directory.
// example_configurations/SCARA directory.
//
//


// @section info
// @section info


// User-specified version info of this build to display in [Pronterface, etc] terminal window during
// User-specified version info of this build to display in [Pronterface, etc] terminal window during
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware.
// build by the user have been successfully uploaded into firmware.
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define SHOW_BOOTSCREEN
#define SHOW_BOOTSCREEN
#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
#define STRING_SPLASH_LINE1 "Prusa i3 HEPHESTOS XL" // will be shown during bootup in line 1
#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2
#define STRING_SPLASH_LINE2 "Arrancando..." // will be shown during bootup in line 2


//
//
// *** VENDORS PLEASE READ *****************************************************
// *** VENDORS PLEASE READ *****************************************************
//
//
// Marlin now allow you to have a vendor boot image to be displayed on machine
// Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown.
// custom boot image and them the default Marlin boot image is shown.
//
//
// We suggest for you to take advantage of this new feature and keep the Marlin
// We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2
// boot image unmodified. For an example have a look at the bq Hephestos 2
// example configuration folder.
// example configuration folder.
//
//
//#define SHOW_CUSTOM_BOOTSCREEN
//#define SHOW_CUSTOM_BOOTSCREEN
// @section machine
// @section machine


// SERIAL_PORT selects which serial port should be used for communication with the host.
// SERIAL_PORT selects which serial port should be used for communication with the host.
// This allows the connection of wireless adapters (for instance) to non-default port pins.
// This allows the connection of wireless adapters (for instance) to non-default port pins.
// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
// :[0,1,2,3,4,5,6,7]
// :[0,1,2,3,4,5,6,7]
#define SERIAL_PORT 0
#define SERIAL_PORT 0


// This determines the communication speed of the printer
// This determines the communication speed of the printer
// :[2400,9600,19200,38400,57600,115200,250000]
// :[2400,9600,19200,38400,57600,115200,250000]
#define BAUDRATE 250000
#define BAUDRATE 115200


// Enable the Bluetooth serial interface on AT90USB devices
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
//#define BLUETOOTH


// The following define selects which electronics board you have.
// The following define selects which electronics board you have.
// Please choose the name from boards.h that matches your setup
// Please choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
#endif


// Optional custom name for your RepStrap or other custom machine
// Optional custom name for your RepStrap or other custom machine
// Displayed in the LCD "Ready" message
// Displayed in the LCD "Ready" message
//#define CUSTOM_MACHINE_NAME "3D Printer"
//#define CUSTOM_MACHINE_NAME "3D Printer"


// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"


// This defines the number of extruders
// This defines the number of extruders
// :[1,2,3,4]
// :[1,2,3,4]
#define EXTRUDERS 1
#define EXTRUDERS 1


// For Cyclops or any "multi-extruder" that shares a single nozzle.
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
//#define SINGLENOZZLE


// A dual extruder that uses a single stepper motor
// A dual extruder that uses a single stepper motor
// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
//#define SWITCHING_EXTRUDER
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
#if ENABLED(SWITCHING_EXTRUDER)
#define SWITCHING_EXTRUDER_SERVO_NR 0
#define SWITCHING_EXTRUDER_SERVO_NR 0
#define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
#define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
//#define HOTEND_OFFSET_Z {0.0, 0.0}
//#define HOTEND_OFFSET_Z {0.0, 0.0}
#endif
#endif


/**
/**
* "Mixing Extruder"
* "Mixing Extruder"
* - Adds a new code, M165, to set the current mix factors.
* - Adds a new code, M165, to set the current mix factors.
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
* - Extends the stepping routines to move multiple steppers in proportion to the mix.
* - Optional support for Repetier Host M163, M164, and virtual extruder.
* - Optional support for Repetier Host M163, M164, and virtual extruder.
* - This implementation supports only a single extruder.
* - This implementation supports only a single extruder.
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
* - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
*/
*/
//#define MIXING_EXTRUDER
//#define MIXING_EXTRUDER
#if ENABLED(MIXING_EXTRUDER)
#if ENABLED(MIXING_EXTRUDER)
#define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder
#define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder
#define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164
#define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164
//#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands
//#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands
#endif
#endif


// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend.
// For the other hotends it is their distance from the extruder 0 hotend.
//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis
//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis


//// The following define selects which power supply you have. Please choose the one that matches your setup
//// The following define selects which power supply you have. Please choose the one that matches your setup
// 1 = ATX
// 1 = ATX
// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
// :{1:'ATX',2:'X-Box 360'}
// :{1:'ATX',2:'X-Box 360'}
#define POWER_SUPPLY 1
#define POWER_SUPPLY 1


// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
//#define PS_DEFAULT_OFF
//#define PS_DEFAULT_OFF


// @section temperature
// @section temperature


//===========================================================================
//===========================================================================
//============================= Thermal Settings ============================
//============================= Thermal Settings ============================
//===========================================================================
//===========================================================================
//
//
//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
//
//
//// Temperature sensor settings:
//// Temperature sensor settings:
// -3 is thermocouple with MAX31855 (only for sensor 0)
// -3 is thermocouple with MAX31855 (only for sensor 0)
// -2 is thermocouple with MAX6675 (only for sensor 0)
// -2 is thermocouple with MAX6675 (only for sensor 0)
// -1 is thermocouple with AD595
// -1 is thermocouple with AD595
// 0 is not used
// 0 is not used
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
// 3 is Mendel-parts thermistor (4.7k pullup)
// 3 is Mendel-parts thermistor (4.7k pullup)
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
// 20 is the PT100 circuit found in the Ultimainboard V2.x
// 20 is the PT100 circuit found in the Ultimainboard V2.x
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
// 66 is 4.7M High Temperature thermistor from Dyze Design
// 66 is 4.7M High Temperature thermistor from Dyze Design
// 70 is the 100K thermistor found in the bq Hephestos 2
// 70 is the 100K thermistor found in the bq Hephestos 2
//
//
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
// (but gives greater accuracy and more stable PID)
// (but gives greater accuracy and more stable PID)
// 51 is 100k thermistor - EPCOS (1k pullup)
// 51 is 100k thermistor - EPCOS (1k pullup)
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
//
//
// 1047 is Pt1000 with 4k7 pullup
// 1047 is Pt1000 with 4k7 pullup
// 1010 is Pt1000 with 1k pullup (non standard)
// 1010 is Pt1000 with 1k pullup (non standard)
// 147 is Pt100 with 4k7 pullup
// 147 is Pt100 with 4k7 pullup
// 110 is Pt100 with 1k pullup (non standard)
// 110 is Pt100 with 1k pullup (non standard)
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
// Use it for Testing or Development purposes. NEVER for production machine.
// Use it for Testing or Development purposes. NEVER for production machine.
//#define DUMMY_THERMISTOR_998_VALUE 25
//#define DUMMY_THERMISTOR_998_VALUE 25
//#define DUMMY_THERMISTOR_999_VALUE 100
//#define DUMMY_THERMISTOR_999_VALUE 100
// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_0 99
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_BED 0


// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
//#define TEMP_SENSOR_1_AS_REDUNDANT
//#define TEMP_SENSOR_1_AS_REDUNDANT
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10


// Extruder temperature must be close to target for this long before M109 returns success
// Extruder temperature must be close to target for this long before M109 returns success
#define TEMP_RESIDENCY_TIME 10 // (seconds)
#define TEMP_RESIDENCY_TIME 10 // (seconds)
#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.


// Bed temperature must be close to target for this long before M190 returns success
// Bed temperature must be close to target for this long before M190 returns success
#define TEMP_BED_RESIDENCY_TIME 10 // (seconds)
#define TEMP_BED_RESIDENCY_TIME 10 // (seconds)
#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.


// The minimal temperature defines the temperature below which the heater will not be enabled It is used
// The minimal temperature defines the temperature below which the heater will not be enabled It is used
// to check that the wiring to the thermistor is not broken.
// to check that the wiring to the thermistor is not broken.
// Otherwise this would lead to the heater being powered on all the time.
// Otherwise this would lead to the heater being powered on all the time.
#define HEATER_0_MINTEMP 5
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define BED_MINTEMP 5
#define BED_MINTEMP 5


// When temperature exceeds max temp, your heater will be switched off.
// When temperature exceeds max temp, your heater will be switched off.
// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
// You should use MINTEMP for thermistor short/failure protection.
// You should use MINTEMP for thermistor short/failure protection.
#define HEATER_0_MAXTEMP 275
#define HEATER_0_MAXTEMP 260
#define HEATER_1_MAXTEMP 275
#define HEATER_1_MAXTEMP 260
#define HEATER_2_MAXTEMP 275
#define HEATER_2_MAXTEMP 260
#define HEATER_3_MAXTEMP 275
#define HEATER_3_MAXTEMP 260
#define BED_MAXTEMP 150
#define BED_MAXTEMP 120


//===========================================================================
//===========================================================================
//============================= PID Settings ================================
//============================= PID Settings ================================
//===========================================================================
//===========================================================================
// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning


// Comment the following line to disable PID and enable bang-bang.
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define PIDTEMP
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#if ENABLED(PIDTEMP)
#if ENABLED(PIDTEMP)
//#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
//#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
// Set/get with gcode: M301 E[extruder number, 0-2]
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
#define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term
#define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term
#define K1 0.95 //smoothing factor within the PID
#define K1 0.95 //smoothing factor within the PID


// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
// Ultimaker
// Ultimaker
#define DEFAULT_Kp 22.2
#define DEFAULT_Kp 23.05
#define DEFAULT_Ki 1.08
#define DEFAULT_Ki 2.00
#define DEFAULT_Kd 114
#define DEFAULT_Kd 66.47


// MakerGear
// MakerGear
//#define DEFAULT_Kp 7.0
//#define DEFAULT_Kp 7.0
//#define DEFAULT_Ki 0.1
//#define DEFAULT_Ki 0.1
//#define DEFAULT_Kd 12
//#define DEFAULT_Kd 12


// Mendel Parts V9 on 12V
// Mendel Parts V9 on 12V
//#define DEFAULT_Kp 63.0
//#define DEFAULT_Kp 63.0
//#define DEFAULT_Ki 2.25
//#define DEFAULT_Ki 2.25
//#define DEFAULT_Kd 440
//#define DEFAULT_Kd 440


#endif // PIDTEMP
#endif // PIDTEMP


//===========================================================================
//===========================================================================
//============================= PID > Bed Temperature Control ===============
//============================= PID > Bed Temperature Control ===============
//===========================================================================
//===========================================================================
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
//
//
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz,
// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz,
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
// If this is enabled, find your own PID constants below.
//#define PIDTEMPBED
//#define PIDTEMPBED


//#define BED_LIMIT_SWITCHING
//#define BED_LIMIT_SWITCHING


// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current


#if ENABLED(PIDTEMPBED)
#if ENABLED(PIDTEMPBED)


//#define PID_BED_DEBUG // Sends debug data to the serial port.
//#define PID_BED_DEBUG // Sends debug data to the serial port.


#define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term
#define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term


//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4
#define DEFAULT_bedKd 305.4


//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune
//from pidautotune
//#define DEFAULT_bedKp 97.1
//#define DEFAULT_bedKp 97.1
//#define DEFAULT_bedKi 1.41
//#define DEFAULT_bedKi 1.41
//#define DEFAULT_bedKd 1675.16
//#define DEFAULT_bedKd 1675.16


// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED
#endif // PIDTEMPBED


// @section extruder
// @section extruder


//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
//can be software-disabled for whatever purposes by
//can be software-disabled for whatever purposes by
#define PREVENT_DANGEROUS_EXTRUDE
#define PREVENT_DANGEROUS_EXTRUDE
//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.
//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.
#define PREVENT_LENGTHY_EXTRUDE
#define PREVENT_LENGTHY_EXTRUDE


#define EXTRUDE_MINTEMP 170
#define EXTRUDE_MINTEMP 170
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.


//===========================================================================
//===========================================================================
//======================== Thermal Runaway Protection =======================
//======================== Thermal Runaway Protection =======================
//===========================================================================
//===========================================================================


/**
/**
* Thermal Protection protects your printer from damage and fire if a
* Thermal Protection protects your printer from damage and fire if a
* thermistor falls out or temperature sensors fail in any way.
* thermistor falls out or temperature sensors fail in any way.
*
*
* The issue: If a thermistor falls out or a temperature sensor fails,
* The issue: If a thermistor falls out or a temperature sensor fails,
* Marlin can no longer sense the actual temperature. Since a disconnected
* Marlin can no longer sense the actual temperature. Since a disconnected
* thermistor reads as a low temperature, the firmware will keep the heater on.
* thermistor reads as a low temperature, the firmware will keep the heater on.
*
*
* If you get "Thermal Runaway" or "Heating failed" errors the
* If you get "Thermal Runaway" or "Heating failed" errors the
* details can be tuned in Configuration_adv.h
* details can be tuned in Configuration_adv.h
*/
*/


#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed


//===========================================================================
//===========================================================================
//============================= Mechanical Settings =========================
//============================= Mechanical Settings =========================
//===========================================================================
//===========================================================================


// @section machine
// @section machine


// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics
// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics
//#define COREXY
//#define COREXY
//#define COREXZ
//#define COREXZ
//#define COREYZ
//#define COREYZ


// Enable this option for Toshiba steppers
// Enable this option for Toshiba steppers
//#define CONFIG_STEPPERS_TOSHIBA
//#define CONFIG_STEPPERS_TOSHIBA


//===========================================================================
//===========================================================================
//============================== Endstop Settings ===========================
//============================== Endstop Settings ===========================
//===========================================================================
//===========================================================================


// @section homing
// @section homing


// Specify here all the endstop connectors that are connected to any endstop or probe.
// Specify here all the endstop connectors that are connected to any endstop or probe.
// Almost all printers will be using one per axis. Probes will use one or more of the
// Almost all printers will be using one per axis. Probes will use one or more of the
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
#define USE_XMIN_PLUG
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
//#define USE_ZMAX_PLUG


// coarse Endstop Settings
// coarse Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors


#if DISABLED(ENDSTOPPULLUPS)
#if DISABLED(ENDSTOPPULLUPS)
// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE
//#define ENDSTOPPULLUP_ZMIN_PROBE
#endif
#endif


// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.


//===========================================================================
//===========================================================================
//============================= Z Probe Options =============================
//============================= Z Probe Options =============================
//===========================================================================
//===========================================================================


//
//
// Probe Type
// Probe Type
// Probes are sensors/switches that are activated / deactivated before/after use.
// Probes are sensors/switches that are activated / deactivated before/after use.
//
//
// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
//
//
// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
//
//


// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
// For example an inductive probe, or a setup that uses the nozzle to probe.
// For example an inductive probe, or a setup that uses the nozzle to probe.
// An inductive probe must be deactivated to go below
// An inductive probe must be deactivated to go below
// its trigger-point if hardware endstops are active.
// its trigger-point if hardware endstops are active.
//#define FIX_MOUNTED_PROBE
#define FIX_MOUNTED_PROBE


// The BLTouch probe emulates a servo probe.
// The BLTouch probe emulates a servo probe.
//#define BLTOUCH
//#define BLTOUCH


// Z Servo Probe, such as an endstop switch on a rotating arm.
// Z Servo Probe, such as an endstop switch on a rotating arm.
//#define Z_ENDSTOP_SERVO_NR 0
//#define Z_ENDSTOP_SERVO_NR 0
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles


// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
//#define Z_PROBE_SLED
//#define Z_PROBE_SLED
//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.


// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
// X and Y offsets must be integers.
// X and Y offsets must be integers.
//
//
// In the following example the X and Y offsets are both positive:
// In the following example the X and Y offsets are both positive:
// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
//
//
// +-- BACK ---+
// +-- BACK ---+
// | |
// | |
// L | (+) P | R <-- probe (20,20)
// L | (+) P | R <-- probe (20,20)
// E | | I
// E | | I
// F | (-) N (+) | G <-- nozzle (10,10)
// F | (-) N (+) | G <-- nozzle (10,10)
// T | | H
// T | | H
// | (-) | T
// | (-) | T
// | |
// | |
// O-- FRONT --+
// O-- FRONT --+
// (0,0)
// (0,0)
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define X_PROBE_OFFSET_FROM_EXTRUDER -24 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -27 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // -2.49 // Z offset: -below +above [the nozzle]


// X and Y axis travel speed (mm/m) between probes
// X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 8000
#define XY_PROBE_SPEED 8000
// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
// Speed for the "accurate" probe of each point
// Speed for the "accurate" probe of each point
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
// Use double touch for probing
// Use double touch for probing
//#define PROBE_DOUBLE_TOUCH
//#define PROBE_DOUBLE_TOUCH


//
//
// Allen Key Probe is defined in the Delta example configurations.
// Allen Key Probe is defined in the Delta example configurations.
//
//


// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
//
//
// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! ***
// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! ***
//
//
// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING.
// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING.
// Example: To park the head outside the bed area when homing with G28.
// Example: To park the head outside the bed area when homing with G28.
//
//
// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
//
//
// For a servo-based Z probe, you must set up servo support below, including
// For a servo-based Z probe, you must set up servo support below, including
// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
//
//
// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
// - Use 5V for powered (usu. inductive) sensors.
// - Use 5V for powered (usu. inductive) sensors.
// - Otherwise connect:
// - Otherwise connect:
// - normally-closed switches to GND and D32.
// - normally-closed switches to GND and D32.
// - normally-open switches to 5V and D32.
// - normally-open switches to 5V and D32.
//
//
// Normally-closed switches are advised and are the default.
// Normally-closed switches are advised and are the default.
//
//
// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.)
// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.)
// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the
// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the
// default pin for all RAMPS-based boards. Some other boards map differently.
// default pin for all RAMPS-based boards. Some other boards map differently.
// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file.
// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file.
//
//
// WARNING:
// WARNING:
// Setting the wrong pin may have unexpected and potentially disastrous consequences.
// Setting the wrong pin may have unexpected and potentially disastrous consequences.
// Use with caution and do your homework.
// Use with caution and do your home
//
//#