diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 59b50e65d6..4503285c83 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -21,6 +21,8 @@ */ #pragma once +#define CONFIG_EXAMPLES_DIR "config/examples/Creality/Ender-3 Pro/CrealityV427" + /** * Configuration.h * @@ -61,7 +63,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(Dust, Ender-3 Pro)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) /** @@ -79,16 +81,16 @@ #define SHOW_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. -//#define SHOW_CUSTOM_BOOTSCREEN +#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Statusscreen.h on the status screen. -//#define CUSTOM_STATUS_SCREEN_IMAGE +#define CUSTOM_STATUS_SCREEN_IMAGE // @section machine // Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB +#define MOTHERBOARD BOARD_CREALITY_V427 #endif /** @@ -99,7 +101,7 @@ * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -#define SERIAL_PORT 0 +#define SERIAL_PORT 1 /** * Serial Port Baud Rate @@ -112,35 +114,35 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 115200 -//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate +// #define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate /** * Select a secondary serial port on the board to use for communication with the host. * Currently Ethernet (-2) is only supported on Teensy 4.1 boards. * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7] */ -//#define SERIAL_PORT_2 -1 -//#define BAUDRATE_2 250000 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE +// #define SERIAL_PORT_2 -1 +// #define BAUDRATE_2 250000 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE /** * Select a third serial port on the board to use for communication with the host. * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -//#define SERIAL_PORT_3 1 -//#define BAUDRATE_3 250000 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE +// #define SERIAL_PORT_3 1 +// #define BAUDRATE_3 250000 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE // Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH +// #define BLUETOOTH // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME "Ender-3 Pro 4.2.7" // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like https://www.uuidgenerator.net/version4 -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" // @section stepper drivers @@ -159,28 +161,28 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ -#define X_DRIVER_TYPE A4988 -#define Y_DRIVER_TYPE A4988 -#define Z_DRIVER_TYPE A4988 -//#define X2_DRIVER_TYPE A4988 -//#define Y2_DRIVER_TYPE A4988 -//#define Z2_DRIVER_TYPE A4988 -//#define Z3_DRIVER_TYPE A4988 -//#define Z4_DRIVER_TYPE A4988 -//#define I_DRIVER_TYPE A4988 -//#define J_DRIVER_TYPE A4988 -//#define K_DRIVER_TYPE A4988 -//#define U_DRIVER_TYPE A4988 -//#define V_DRIVER_TYPE A4988 -//#define W_DRIVER_TYPE A4988 -#define E0_DRIVER_TYPE A4988 -//#define E1_DRIVER_TYPE A4988 -//#define E2_DRIVER_TYPE A4988 -//#define E3_DRIVER_TYPE A4988 -//#define E4_DRIVER_TYPE A4988 -//#define E5_DRIVER_TYPE A4988 -//#define E6_DRIVER_TYPE A4988 -//#define E7_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE TMC2208_STANDALONE +#define Y_DRIVER_TYPE TMC2208_STANDALONE +#define Z_DRIVER_TYPE TMC2208_STANDALONE +// #define X2_DRIVER_TYPE A4988 +// #define Y2_DRIVER_TYPE A4988 +// #define Z2_DRIVER_TYPE A4988 +// #define Z3_DRIVER_TYPE A4988 +// #define Z4_DRIVER_TYPE A4988 +// #define I_DRIVER_TYPE A4988 +// #define J_DRIVER_TYPE A4988 +// #define K_DRIVER_TYPE A4988 +// #define U_DRIVER_TYPE A4988 +// #define V_DRIVER_TYPE A4988 +// #define W_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE TMC2208_STANDALONE +// #define E1_DRIVER_TYPE A4988 +// #define E2_DRIVER_TYPE A4988 +// #define E3_DRIVER_TYPE A4988 +// #define E4_DRIVER_TYPE A4988 +// #define E5_DRIVER_TYPE A4988 +// #define E6_DRIVER_TYPE A4988 +// #define E7_DRIVER_TYPE A4988 /** * Additional Axis Settings @@ -200,28 +202,28 @@ * Regardless of these settings the axes are internally named I, J, K, U, V, W. */ #ifdef I_DRIVER_TYPE - #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W'] - #define AXIS4_ROTATES +#define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W'] +#define AXIS4_ROTATES #endif #ifdef J_DRIVER_TYPE - #define AXIS5_NAME 'B' // :['B', 'C', 'U', 'V', 'W'] - #define AXIS5_ROTATES +#define AXIS5_NAME 'B' // :['B', 'C', 'U', 'V', 'W'] +#define AXIS5_ROTATES #endif #ifdef K_DRIVER_TYPE - #define AXIS6_NAME 'C' // :['C', 'U', 'V', 'W'] - #define AXIS6_ROTATES +#define AXIS6_NAME 'C' // :['C', 'U', 'V', 'W'] +#define AXIS6_ROTATES #endif #ifdef U_DRIVER_TYPE - #define AXIS7_NAME 'U' // :['U', 'V', 'W'] - //#define AXIS7_ROTATES +#define AXIS7_NAME 'U' // :['U', 'V', 'W'] +// #define AXIS7_ROTATES #endif #ifdef V_DRIVER_TYPE - #define AXIS8_NAME 'V' // :['V', 'W'] - //#define AXIS8_ROTATES +#define AXIS8_NAME 'V' // :['V', 'W'] +// #define AXIS8_ROTATES #endif #ifdef W_DRIVER_TYPE - #define AXIS9_NAME 'W' // :['W'] - //#define AXIS9_ROTATES +#define AXIS9_NAME 'W' // :['W'] +// #define AXIS9_ROTATES #endif // @section extruder @@ -234,40 +236,40 @@ #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 // For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE +// #define SINGLENOZZLE // Save and restore temperature and fan speed on tool-change. // Set standby for the unselected tool with M104/106/109 T... #if ENABLED(SINGLENOZZLE) - //#define SINGLENOZZLE_STANDBY_TEMP - //#define SINGLENOZZLE_STANDBY_FAN +// #define SINGLENOZZLE_STANDBY_TEMP +// #define SINGLENOZZLE_STANDBY_FAN #endif // A dual extruder that uses a single stepper motor -//#define SWITCHING_EXTRUDER +// #define SWITCHING_EXTRUDER #if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3] - #if EXTRUDERS > 3 - #define SWITCHING_EXTRUDER_E23_SERVO_NR 1 - #endif +#define SWITCHING_EXTRUDER_SERVO_NR 0 +#define SWITCHING_EXTRUDER_SERVO_ANGLES {0, 90} // Angles for E0, E1[, E2, E3] +#if EXTRUDERS > 3 +#define SWITCHING_EXTRUDER_E23_SERVO_NR 1 +#endif #endif // A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles -//#define SWITCHING_NOZZLE +// #define SWITCHING_NOZZLE #if ENABLED(SWITCHING_NOZZLE) - #define SWITCHING_NOZZLE_SERVO_NR 0 - //#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second - #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // A pair of angles for { E0, E1 }. - // For Dual Servo use two pairs: { { lower, raise }, { lower, raise } } - #define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move +#define SWITCHING_NOZZLE_SERVO_NR 0 +// #define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second +#define SWITCHING_NOZZLE_SERVO_ANGLES {0, 90} // A pair of angles for { E0, E1 }. + // For Dual Servo use two pairs: { { lower, raise }, { lower, raise } } +#define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move #endif /** * Two separate X-carriages with extruders that connect to a moving part * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN. */ -//#define PARKING_EXTRUDER +// #define PARKING_EXTRUDER /** * Two separate X-carriages with extruders that connect to a moving part @@ -277,28 +279,28 @@ * movements : https://youtu.be/0xCEiG9VS3k * https://youtu.be/Bqbcs0CU2FE */ -//#define MAGNETIC_PARKING_EXTRUDER +// #define MAGNETIC_PARKING_EXTRUDER #if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER) - #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders - #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder +#define PARKING_EXTRUDER_PARKING_X {-78, 184} // X positions for parking the extruders +#define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder - #if ENABLED(PARKING_EXTRUDER) +#if ENABLED(PARKING_EXTRUDER) - #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage - #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil - #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // (ms) Delay for magnetic field. No delay if 0 or not defined. - //#define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381 +#define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage +#define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil +#define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // (ms) Delay for magnetic field. No delay if 0 or not defined. +// #define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381 - #elif ENABLED(MAGNETIC_PARKING_EXTRUDER) +#elif ENABLED(MAGNETIC_PARKING_EXTRUDER) - #define MPE_FAST_SPEED 9000 // (mm/min) Speed for travel before last distance point - #define MPE_SLOW_SPEED 4500 // (mm/min) Speed for last distance travel to park and couple - #define MPE_TRAVEL_DISTANCE 10 // (mm) Last distance point - #define MPE_COMPENSATION 0 // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling +#define MPE_FAST_SPEED 9000 // (mm/min) Speed for travel before last distance point +#define MPE_SLOW_SPEED 4500 // (mm/min) Speed for last distance travel to park and couple +#define MPE_TRAVEL_DISTANCE 10 // (mm) Last distance point +#define MPE_COMPENSATION 0 // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling - #endif +#endif #endif @@ -308,7 +310,7 @@ * Support for swappable and dockable toolheads, such as * the E3D Tool Changer. Toolheads are locked with a servo. */ -//#define SWITCHING_TOOLHEAD +// #define SWITCHING_TOOLHEAD /** * Magnetic Switching Toolhead @@ -316,7 +318,7 @@ * Support swappable and dockable toolheads with a magnetic * docking mechanism using movement and no servo. */ -//#define MAGNETIC_SWITCHING_TOOLHEAD +// #define MAGNETIC_SWITCHING_TOOLHEAD /** * Electromagnetic Switching Toolhead @@ -325,29 +327,29 @@ * Toolheads are parked at one edge and held with an electromagnet. * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4 */ -//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD +// #define ELECTROMAGNETIC_SWITCHING_TOOLHEAD #if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD) - #define SWITCHING_TOOLHEAD_Y_POS 235 // (mm) Y position of the toolhead dock - #define SWITCHING_TOOLHEAD_Y_SECURITY 10 // (mm) Security distance Y axis - #define SWITCHING_TOOLHEAD_Y_CLEAR 60 // (mm) Minimum distance from dock for unobstructed X axis - #define SWITCHING_TOOLHEAD_X_POS { 215, 0 } // (mm) X positions for parking the extruders - #if ENABLED(SWITCHING_TOOLHEAD) - #define SWITCHING_TOOLHEAD_SERVO_NR 2 // Index of the servo connector - #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 } // (degrees) Angles for Lock, Unlock - #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD) - #define SWITCHING_TOOLHEAD_Y_RELEASE 5 // (mm) Security distance Y axis - #define SWITCHING_TOOLHEAD_X_SECURITY { 90, 150 } // (mm) Security distance X axis (T0,T1) - //#define PRIME_BEFORE_REMOVE // Prime the nozzle before release from the dock - #if ENABLED(PRIME_BEFORE_REMOVE) - #define SWITCHING_TOOLHEAD_PRIME_MM 20 // (mm) Extruder prime length - #define SWITCHING_TOOLHEAD_RETRACT_MM 10 // (mm) Retract after priming length - #define SWITCHING_TOOLHEAD_PRIME_FEEDRATE 300 // (mm/min) Extruder prime feedrate - #define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400 // (mm/min) Extruder retract feedrate - #endif - #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD) - #define SWITCHING_TOOLHEAD_Z_HOP 2 // (mm) Z raise for switching - #endif +#define SWITCHING_TOOLHEAD_Y_POS 235 // (mm) Y position of the toolhead dock +#define SWITCHING_TOOLHEAD_Y_SECURITY 10 // (mm) Security distance Y axis +#define SWITCHING_TOOLHEAD_Y_CLEAR 60 // (mm) Minimum distance from dock for unobstructed X axis +#define SWITCHING_TOOLHEAD_X_POS {215, 0} // (mm) X positions for parking the extruders +#if ENABLED(SWITCHING_TOOLHEAD) +#define SWITCHING_TOOLHEAD_SERVO_NR 2 // Index of the servo connector +#define SWITCHING_TOOLHEAD_SERVO_ANGLES {0, 180} // (degrees) Angles for Lock, Unlock +#elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD) +#define SWITCHING_TOOLHEAD_Y_RELEASE 5 // (mm) Security distance Y axis +#define SWITCHING_TOOLHEAD_X_SECURITY {90, 150} // (mm) Security distance X axis (T0,T1) +// #define PRIME_BEFORE_REMOVE // Prime the nozzle before release from the dock +#if ENABLED(PRIME_BEFORE_REMOVE) +#define SWITCHING_TOOLHEAD_PRIME_MM 20 // (mm) Extruder prime length +#define SWITCHING_TOOLHEAD_RETRACT_MM 10 // (mm) Retract after priming length +#define SWITCHING_TOOLHEAD_PRIME_FEEDRATE 300 // (mm/min) Extruder prime feedrate +#define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE 2400 // (mm/min) Extruder retract feedrate +#endif +#elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD) +#define SWITCHING_TOOLHEAD_Z_HOP 2 // (mm) Z raise for switching +#endif #endif /** @@ -358,24 +360,24 @@ * - This implementation supports up to two mixing extruders. * - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation). */ -//#define MIXING_EXTRUDER +// #define MIXING_EXTRUDER #if ENABLED(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 DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands - //#define GRADIENT_MIX // Support for gradient mixing with M166 and LCD - //#define MIXING_PRESETS // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS - #if ENABLED(GRADIENT_MIX) - //#define GRADIENT_VTOOL // Add M166 T to use a V-tool index as a Gradient alias - #endif +#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 DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands +// #define GRADIENT_MIX // Support for gradient mixing with M166 and LCD +// #define MIXING_PRESETS // Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS +#if ENABLED(GRADIENT_MIX) +// #define GRADIENT_VTOOL // Add M166 T to use a V-tool index as a Gradient alias +#endif #endif // 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). // For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle -//#define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle -//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle +// #define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle +// #define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle +// #define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle // @section multi-material @@ -393,7 +395,7 @@ * See additional options in Configuration_adv.h. * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] */ -//#define MMU_MODEL PRUSA_MMU2 +// #define MMU_MODEL PRUSA_MMU2 // @section psu control @@ -403,40 +405,40 @@ * Enable and connect the power supply to the PS_ON_PIN. * Specify whether the power supply is active HIGH or active LOW. */ -//#define PSU_CONTROL -//#define PSU_NAME "Power Supply" +// #define PSU_CONTROL +// #define PSU_NAME "Power Supply" #if ENABLED(PSU_CONTROL) - //#define MKS_PWC // Using the MKS PWC add-on - //#define PS_OFF_CONFIRM // Confirm dialog when power off - //#define PS_OFF_SOUND // Beep 1s when power off - #define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box +// #define MKS_PWC // Using the MKS PWC add-on +// #define PS_OFF_CONFIRM // Confirm dialog when power off +// #define PS_OFF_SOUND // Beep 1s when power off +#define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box - //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80 - //#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power - //#define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay +// #define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80 +// #define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power +// #define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay - //#define POWER_OFF_TIMER // Enable M81 D to power off after a delay - //#define POWER_OFF_WAIT_FOR_COOLDOWN // Enable M81 S to power off only after cooldown +// #define POWER_OFF_TIMER // Enable M81 D to power off after a delay +// #define POWER_OFF_WAIT_FOR_COOLDOWN // Enable M81 S to power off only after cooldown - //#define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on) - //#define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off) +// #define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on) +// #define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off) - //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin - #if ENABLED(AUTO_POWER_CONTROL) - #define AUTO_POWER_FANS // Turn on PSU for fans - #define AUTO_POWER_E_FANS // Turn on PSU for E Fans - #define AUTO_POWER_CONTROLLERFAN // Turn on PSU for Controller Fan - #define AUTO_POWER_CHAMBER_FAN // Turn on PSU for Chamber Fan - #define AUTO_POWER_COOLER_FAN // Turn on PSU for Cooler Fan - #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration - //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time. - #endif - #if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) - //#define AUTO_POWER_E_TEMP 50 // (°C) PSU on if any extruder is over this temperature - //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) PSU on if the chamber is over this temperature - //#define AUTO_POWER_COOLER_TEMP 26 // (°C) PSU on if the cooler is over this temperature - #endif +// #define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin +#if ENABLED(AUTO_POWER_CONTROL) +#define AUTO_POWER_FANS // Turn on PSU for fans +#define AUTO_POWER_E_FANS // Turn on PSU for E Fans +#define AUTO_POWER_CONTROLLERFAN // Turn on PSU for Controller Fan +#define AUTO_POWER_CHAMBER_FAN // Turn on PSU for Chamber Fan +#define AUTO_POWER_COOLER_FAN // Turn on PSU for Cooler Fan +#define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration +// #define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time. +#endif +#if EITHER(AUTO_POWER_CONTROL, POWER_OFF_WAIT_FOR_COOLDOWN) +// #define AUTO_POWER_E_TEMP 50 // (°C) PSU on if any extruder is over this temperature +// #define AUTO_POWER_CHAMBER_TEMP 30 // (°C) PSU on if the chamber is over this temperature +// #define AUTO_POWER_COOLER_TEMP 26 // (°C) PSU on if the cooler is over this temperature +#endif #endif //=========================================================================== @@ -565,39 +567,39 @@ #define TEMP_SENSOR_REDUNDANT 0 // Dummy thermistor constant temperature readings, for use with 998 and 999 -#define DUMMY_THERMISTOR_998_VALUE 25 +#define DUMMY_THERMISTOR_998_VALUE 25 #define DUMMY_THERMISTOR_999_VALUE 100 // Resistor values when using MAX31865 sensors (-5) on TEMP_SENSOR_0 / 1 #if TEMP_SENSOR_IS_MAX_TC(0) - #define MAX31865_SENSOR_OHMS_0 100 // (Ω) Typically 100 or 1000 (PT100 or PT1000) - #define MAX31865_CALIBRATION_OHMS_0 430 // (Ω) Typically 430 for Adafruit PT100; 4300 for Adafruit PT1000 +#define MAX31865_SENSOR_OHMS_0 100 // (Ω) Typically 100 or 1000 (PT100 or PT1000) +#define MAX31865_CALIBRATION_OHMS_0 430 // (Ω) Typically 430 for Adafruit PT100; 4300 for Adafruit PT1000 #endif #if TEMP_SENSOR_IS_MAX_TC(1) - #define MAX31865_SENSOR_OHMS_1 100 - #define MAX31865_CALIBRATION_OHMS_1 430 +#define MAX31865_SENSOR_OHMS_1 100 +#define MAX31865_CALIBRATION_OHMS_1 430 #endif #if TEMP_SENSOR_IS_MAX_TC(2) - #define MAX31865_SENSOR_OHMS_2 100 - #define MAX31865_CALIBRATION_OHMS_2 430 +#define MAX31865_SENSOR_OHMS_2 100 +#define MAX31865_CALIBRATION_OHMS_2 430 #endif #if HAS_E_TEMP_SENSOR - #define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109 - #define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer - #define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target +#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109 +#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer +#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target #endif #if TEMP_SENSOR_BED - #define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190 - #define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer - #define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target +#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190 +#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer +#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target #endif #if TEMP_SENSOR_CHAMBER - #define TEMP_CHAMBER_RESIDENCY_TIME 10 // (seconds) Time to wait for chamber to "settle" in M191 - #define TEMP_CHAMBER_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer - #define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target +#define TEMP_CHAMBER_RESIDENCY_TIME 10 // (seconds) Time to wait for chamber to "settle" in M191 +#define TEMP_CHAMBER_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer +#define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target #endif /** @@ -611,23 +613,23 @@ * For selecting source/target use: COOLER, PROBE, BOARD, CHAMBER, BED, E0, E1, E2, E3, E4, E5, E6, E7 */ #if TEMP_SENSOR_REDUNDANT - #define TEMP_SENSOR_REDUNDANT_SOURCE E1 // The sensor that will provide the redundant reading. - #define TEMP_SENSOR_REDUNDANT_TARGET E0 // The sensor that we are providing a redundant reading for. - #define TEMP_SENSOR_REDUNDANT_MAX_DIFF 10 // (°C) Temperature difference that will trigger a print abort. +#define TEMP_SENSOR_REDUNDANT_SOURCE E1 // The sensor that will provide the redundant reading. +#define TEMP_SENSOR_REDUNDANT_TARGET E0 // The sensor that we are providing a redundant reading for. +#define TEMP_SENSOR_REDUNDANT_MAX_DIFF 10 // (°C) Temperature difference that will trigger a print abort. #endif // Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define HEATER_4_MINTEMP 5 -#define HEATER_5_MINTEMP 5 -#define HEATER_6_MINTEMP 5 -#define HEATER_7_MINTEMP 5 -#define BED_MINTEMP 5 -#define CHAMBER_MINTEMP 5 +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define HEATER_4_MINTEMP 5 +#define HEATER_5_MINTEMP 5 +#define HEATER_6_MINTEMP 5 +#define HEATER_7_MINTEMP 5 +#define BED_MINTEMP 5 +#define CHAMBER_MINTEMP 5 // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. @@ -640,8 +642,8 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 150 -#define CHAMBER_MAXTEMP 60 +#define BED_MAXTEMP 125 +#define CHAMBER_MAXTEMP 60 /** * Thermal Overshoot @@ -649,9 +651,9 @@ * (especially before PID tuning). Setting the target temperature too close to MAXTEMP guarantees * a MAXTEMP shutdown! Use these values to forbid temperatures being set too close to MAXTEMP. */ -#define HOTEND_OVERSHOOT 15 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT -#define BED_OVERSHOOT 10 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT -#define COOLER_OVERSHOOT 2 // (°C) Forbid temperatures closer than OVERSHOOT +#define HOTEND_OVERSHOOT 15 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT +#define BED_OVERSHOOT 10 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT +#define COOLER_OVERSHOOT 2 // (°C) Forbid temperatures closer than OVERSHOOT //=========================================================================== //============================= PID Settings ================================ @@ -666,30 +668,31 @@ * PIDTEMP : PID temperature control (~4.1K) * MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune) */ -#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning -//#define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html +#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning +// #define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html -#define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#define PID_K1 0.95 // Smoothing factor within any PID loop +#define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_K1 0.95 // Smoothing factor within any PID loop #if ENABLED(PIDTEMP) - //#define PID_DEBUG // Print PID debug data to the serial port. Use 'M303 D' to toggle activation. - //#define PID_PARAMS_PER_HOTEND // Use separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with G-code: M301 E[extruder number, 0-2] +// #define PID_DEBUG // Print PID debug data to the serial port. Use 'M303 D' to toggle activation. +// #define PID_PARAMS_PER_HOTEND // Use separate PID parameters for each extruder (useful for mismatched extruders) +// Set/get with G-code: M301 E[extruder number, 0-2] - #if ENABLED(PID_PARAMS_PER_HOTEND) - // Specify up to one value per hotend here, according to your setup. - // If there are fewer values, the last one applies to the remaining hotends. - #define DEFAULT_Kp_LIST { 22.20, 22.20 } - #define DEFAULT_Ki_LIST { 1.08, 1.08 } - #define DEFAULT_Kd_LIST { 114.00, 114.00 } - #else - #define DEFAULT_Kp 22.20 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114.00 - #endif +// Creality Ender-3 +#if ENABLED(PID_PARAMS_PER_HOTEND) +// Specify up to one value per hotend here, according to your setup. +// If there are fewer values, the last one applies to the remaining hotends. +#define DEFAULT_Kp_LIST {21.73, 21.73} +#define DEFAULT_Ki_LIST {1.54, 1.54} +#define DEFAULT_Kd_LIST {76.55, 76.55} #else - #define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current +#define DEFAULT_Kp 21.73 +#define DEFAULT_Ki 1.54 +#define DEFAULT_Kd 76.55 +#endif +#else +#define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current #endif /** @@ -701,42 +704,42 @@ * @section mpctemp */ #if ENABLED(MPCTEMP) - //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) - //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) +// #define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) +// #define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) - #define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active. - #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers. +#define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active. +#define MPC_HEATER_POWER {40.0f} // (W) Heat cartridge powers. - #define MPC_INCLUDE_FAN // Model the fan speed? +#define MPC_INCLUDE_FAN // Model the fan speed? - // Measured physical constants from M306 - #define MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacities. - #define MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. - #define MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. - #if ENABLED(MPC_INCLUDE_FAN) - #define MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. - #endif +// Measured physical constants from M306 +#define MPC_BLOCK_HEAT_CAPACITY {16.7f} // (J/K) Heat block heat capacities. +#define MPC_SENSOR_RESPONSIVENESS {0.22f} // (K/s per ∆K) Rate of change of sensor temperature from heat block. +#define MPC_AMBIENT_XFER_COEFF {0.068f} // (W/K) Heat transfer coefficients from heat block to room air with fan off. +#if ENABLED(MPC_INCLUDE_FAN) +#define MPC_AMBIENT_XFER_COEFF_FAN255 {0.097f} // (W/K) Heat transfer coefficients from heat block to room air with fan on full. +#endif - // For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect. - #if ENABLED(MPC_INCLUDE_FAN) - //#define MPC_FAN_0_ALL_HOTENDS - //#define MPC_FAN_0_ACTIVE_HOTEND - #endif +// For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect. +#if ENABLED(MPC_INCLUDE_FAN) +// #define MPC_FAN_0_ALL_HOTENDS +// #define MPC_FAN_0_ACTIVE_HOTEND +#endif - // Filament Heat Capacity (joules/kelvin/mm) - // Set at runtime with M306 H - #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). - // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). - // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). - // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). +// Filament Heat Capacity (joules/kelvin/mm) +// Set at runtime with M306 H +#define FILAMENT_HEAT_CAPACITY_PERMM {5.6e-3f} // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). + // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). + // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). + // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). - // Advanced options - #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. - #define MPC_MIN_AMBIENT_CHANGE 1.0f // (K/s) Modeled ambient temperature rate of change, when correcting model inaccuracies. - #define MPC_STEADYSTATE 0.5f // (K/s) Temperature change rate for steady state logic to be enforced. +// Advanced options +#define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. +#define MPC_MIN_AMBIENT_CHANGE 1.0f // (K/s) Modeled ambient temperature rate of change, when correcting model inaccuracies. +#define MPC_STEADYSTATE 0.5f // (K/s) Temperature change rate for steady state logic to be enforced. - #define MPC_TUNING_POS { X_CENTER, Y_CENTER, 1.0f } // (mm) M306 Autotuning position, ideally bed center at first layer height. - #define MPC_TUNING_END_Z 10.0f // (mm) M306 Autotuning final Z position. +#define MPC_TUNING_POS {X_CENTER, Y_CENTER, 1.0f} // (mm) M306 Autotuning position, ideally bed center at first layer height. +#define MPC_TUNING_END_Z 10.0f // (mm) M306 Autotuning final Z position. #endif //=========================================================================== @@ -765,21 +768,21 @@ * * With this option disabled, bang-bang will be used. BED_LIMIT_SWITCHING enables hysteresis. */ -//#define PIDTEMPBED +// #define PIDTEMPBED #if ENABLED(PIDTEMPBED) - //#define MIN_BED_POWER 0 - //#define PID_BED_DEBUG // Print Bed PID debug data to the serial port. +// #define MIN_BED_POWER 0 +// #define PID_BED_DEBUG // Print Bed PID debug data to the serial port. - // 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) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 +// 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) +#define DEFAULT_bedKp 10.00 +#define DEFAULT_bedKi .023 +#define DEFAULT_bedKd 305.4 - // 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. #else - //#define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target +// #define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target #endif //=========================================================================== @@ -801,8 +804,8 @@ * the issues involved, don't use chamber PID until someone else verifies that your hardware works. * @section chamber temp */ -//#define PIDTEMPCHAMBER -//#define CHAMBER_LIMIT_SWITCHING +// #define PIDTEMPCHAMBER +// #define CHAMBER_LIMIT_SWITCHING /** * Max Chamber Power @@ -813,28 +816,28 @@ #define MAX_CHAMBER_POWER 255 // limits duty cycle to chamber heater; 255=full current #if ENABLED(PIDTEMPCHAMBER) - #define MIN_CHAMBER_POWER 0 - //#define PID_CHAMBER_DEBUG // Print Chamber PID debug data to the serial port. +#define MIN_CHAMBER_POWER 0 +// #define PID_CHAMBER_DEBUG // Print Chamber PID debug data to the serial port. - // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element - // and placed inside the small Creality printer enclosure tent. - // - #define DEFAULT_chamberKp 37.04 - #define DEFAULT_chamberKi 1.40 - #define DEFAULT_chamberKd 655.17 - // M309 P37.04 I1.04 D655.17 +// Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element +// and placed inside the small Creality printer enclosure tent. +// +#define DEFAULT_chamberKp 37.04 +#define DEFAULT_chamberKi 1.40 +#define DEFAULT_chamberKd 655.17 +// M309 P37.04 I1.04 D655.17 - // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. +// FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. #endif // PIDTEMPCHAMBER #if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER) - //#define PID_OPENLOOP // 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 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. +// #define PID_OPENLOOP // 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 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. - //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) - //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) +#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) +#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) #endif // @section safety @@ -886,87 +889,87 @@ // Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics, // either in the usual order or reversed -//#define COREXY -//#define COREXZ -//#define COREYZ -//#define COREYX -//#define COREZX -//#define COREZY +// #define COREXY +// #define COREXZ +// #define COREYZ +// #define COREYX +// #define COREZX +// #define COREZY // // MarkForged Kinematics // See https://reprap.org/forum/read.php?152,504042 // -//#define MARKFORGED_XY -//#define MARKFORGED_YX +// #define MARKFORGED_XY +// #define MARKFORGED_YX // Enable for a belt style printer with endless "Z" motion -//#define BELTPRINTER +// #define BELTPRINTER // Enable for Polargraph Kinematics -//#define POLARGRAPH +// #define POLARGRAPH #if ENABLED(POLARGRAPH) - #define POLARGRAPH_MAX_BELT_LEN 1035.0 // (mm) Belt length at full extension. Override with M665 H. - #define DEFAULT_SEGMENTS_PER_SECOND 5 // Move segmentation based on duration +#define POLARGRAPH_MAX_BELT_LEN 1035.0 // (mm) Belt length at full extension. Override with M665 H. +#define DEFAULT_SEGMENTS_PER_SECOND 5 // Move segmentation based on duration #endif // @section delta // Enable for DELTA kinematics and configure below -//#define DELTA +// #define DELTA #if ENABLED(DELTA) - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DEFAULT_SEGMENTS_PER_SECOND 200 +// Make delta curves from many straight lines (linear interpolation). +// This is a trade-off between visible corners (not enough segments) +// and processor overload (too many expensive sqrt calls). +#define DEFAULT_SEGMENTS_PER_SECOND 200 - // After homing move down to a height where XY movement is unconstrained - //#define DELTA_HOME_TO_SAFE_ZONE +// After homing move down to a height where XY movement is unconstrained +// #define DELTA_HOME_TO_SAFE_ZONE - // Delta calibration menu - // Add three-point calibration to the MarlinUI menu. - // See http://minow.blogspot.com/index.html#4918805519571907051 - //#define DELTA_CALIBRATION_MENU +// Delta calibration menu +// Add three-point calibration to the MarlinUI menu. +// See http://minow.blogspot.com/index.html#4918805519571907051 +// #define DELTA_CALIBRATION_MENU - // G33 Delta Auto-Calibration. Enable EEPROM_SETTINGS to store results. - //#define DELTA_AUTO_CALIBRATION +// G33 Delta Auto-Calibration. Enable EEPROM_SETTINGS to store results. +// #define DELTA_AUTO_CALIBRATION - #if ENABLED(DELTA_AUTO_CALIBRATION) - // Default number of probe points : n*n (1 -> 7) - #define DELTA_CALIBRATION_DEFAULT_POINTS 4 - #endif +#if ENABLED(DELTA_AUTO_CALIBRATION) +// Default number of probe points : n*n (1 -> 7) +#define DELTA_CALIBRATION_DEFAULT_POINTS 4 +#endif - #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) - // Step size for paper-test probing - #define PROBE_MANUALLY_STEP 0.05 // (mm) - #endif +#if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) +// Step size for paper-test probing +#define PROBE_MANUALLY_STEP 0.05 // (mm) +#endif - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 140.0 // (mm) +// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). +#define DELTA_PRINTABLE_RADIUS 140.0 // (mm) - // Maximum reachable area - #define DELTA_MAX_RADIUS 140.0 // (mm) +// Maximum reachable area +#define DELTA_MAX_RADIUS 140.0 // (mm) - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 250.0 // (mm) +// Center-to-center distance of the holes in the diagonal push rods. +#define DELTA_DIAGONAL_ROD 250.0 // (mm) - // Distance between bed and nozzle Z home position - #define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate +// Distance between bed and nozzle Z home position +#define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate - #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // (mm) Get these values from G33 auto calibrate +#define DELTA_ENDSTOP_ADJ {0.0, 0.0, 0.0} // (mm) Get these values from G33 auto calibrate - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate +// Horizontal distance bridged by diagonal push rods when effector is centered. +#define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate - // Trim adjustments for individual towers - // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 - // measured in degrees anticlockwise looking from above the printer - #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // (mm) Get these values from G33 auto calibrate +// Trim adjustments for individual towers +// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 +// measured in degrees anticlockwise looking from above the printer +#define DELTA_TOWER_ANGLE_TRIM {0.0, 0.0, 0.0} // (mm) Get these values from G33 auto calibrate - // Delta radius and diagonal rod adjustments - //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) - //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) +// Delta radius and diagonal rod adjustments +// #define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) +// #define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) #endif // @section scara @@ -979,77 +982,77 @@ * https://www.thingiverse.com/thing:2487048 * https://www.thingiverse.com/thing:1241491 */ -//#define MORGAN_SCARA -//#define MP_SCARA +// #define MORGAN_SCARA +// #define MP_SCARA #if EITHER(MORGAN_SCARA, MP_SCARA) - // If movement is choppy try lowering this value - #define DEFAULT_SEGMENTS_PER_SECOND 200 +// If movement is choppy try lowering this value +#define DEFAULT_SEGMENTS_PER_SECOND 200 - // Length of inner and outer support arms. Measure arm lengths precisely. - #define SCARA_LINKAGE_1 150 // (mm) - #define SCARA_LINKAGE_2 150 // (mm) +// Length of inner and outer support arms. Measure arm lengths precisely. +#define SCARA_LINKAGE_1 150 // (mm) +#define SCARA_LINKAGE_2 150 // (mm) - // SCARA tower offset (position of Tower relative to bed zero position) - // This needs to be reasonably accurate as it defines the printbed position in the SCARA space. - #define SCARA_OFFSET_X 100 // (mm) - #define SCARA_OFFSET_Y -56 // (mm) +// SCARA tower offset (position of Tower relative to bed zero position) +// This needs to be reasonably accurate as it defines the printbed position in the SCARA space. +#define SCARA_OFFSET_X 100 // (mm) +#define SCARA_OFFSET_Y -56 // (mm) - #if ENABLED(MORGAN_SCARA) +#if ENABLED(MORGAN_SCARA) - //#define DEBUG_SCARA_KINEMATICS - #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly +// #define DEBUG_SCARA_KINEMATICS +#define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly - // Radius around the center where the arm cannot reach - #define MIDDLE_DEAD_ZONE_R 0 // (mm) +// Radius around the center where the arm cannot reach +#define MIDDLE_DEAD_ZONE_R 0 // (mm) - #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ +#define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ +#define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #elif ENABLED(MP_SCARA) +#elif ENABLED(MP_SCARA) - #define SCARA_OFFSET_THETA1 12 // degrees - #define SCARA_OFFSET_THETA2 131 // degrees +#define SCARA_OFFSET_THETA1 12 // degrees +#define SCARA_OFFSET_THETA2 131 // degrees - #endif +#endif #endif // @section tpara // Enable for TPARA kinematics and configure below -//#define AXEL_TPARA +// #define AXEL_TPARA #if ENABLED(AXEL_TPARA) - #define DEBUG_TPARA_KINEMATICS - #define DEFAULT_SEGMENTS_PER_SECOND 200 +#define DEBUG_TPARA_KINEMATICS +#define DEFAULT_SEGMENTS_PER_SECOND 200 - // Length of inner and outer support arms. Measure arm lengths precisely. - #define TPARA_LINKAGE_1 120 // (mm) - #define TPARA_LINKAGE_2 120 // (mm) +// Length of inner and outer support arms. Measure arm lengths precisely. +#define TPARA_LINKAGE_1 120 // (mm) +#define TPARA_LINKAGE_2 120 // (mm) - // SCARA tower offset (position of Tower relative to bed zero position) - // This needs to be reasonably accurate as it defines the printbed position in the SCARA space. - #define TPARA_OFFSET_X 0 // (mm) - #define TPARA_OFFSET_Y 0 // (mm) - #define TPARA_OFFSET_Z 0 // (mm) +// SCARA tower offset (position of Tower relative to bed zero position) +// This needs to be reasonably accurate as it defines the printbed position in the SCARA space. +#define TPARA_OFFSET_X 0 // (mm) +#define TPARA_OFFSET_Y 0 // (mm) +#define TPARA_OFFSET_Z 0 // (mm) - #define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly +#define SCARA_FEEDRATE_SCALING // Convert XY feedrate from mm/s to degrees/s on the fly - // Radius around the center where the arm cannot reach - #define MIDDLE_DEAD_ZONE_R 0 // (mm) +// Radius around the center where the arm cannot reach +#define MIDDLE_DEAD_ZONE_R 0 // (mm) - // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ - #define THETA_HOMING_OFFSET 0 - #define PSI_HOMING_OFFSET 0 +// Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/ +#define THETA_HOMING_OFFSET 0 +#define PSI_HOMING_OFFSET 0 #endif // @section machine // Articulated robot (arm). Joints are directly mapped to axes with no kinematics. -//#define ARTICULATED_ROBOT_ARM +// #define ARTICULATED_ROBOT_ARM // For a hot wire cutter with parallel horizontal axes (X, I) where the heights of the two wire // ends are controlled by parallel axes (Y, J). Joints are directly mapped to axes (no kinematics). -//#define FOAMCUTTER_XYUV +// #define FOAMCUTTER_XYUV //=========================================================================== //============================== Endstop Settings =========================== @@ -1063,96 +1066,96 @@ #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG -//#define USE_IMIN_PLUG -//#define USE_JMIN_PLUG -//#define USE_KMIN_PLUG -//#define USE_UMIN_PLUG -//#define USE_VMIN_PLUG -//#define USE_WMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG -//#define USE_IMAX_PLUG -//#define USE_JMAX_PLUG -//#define USE_KMAX_PLUG -//#define USE_UMAX_PLUG -//#define USE_VMAX_PLUG -//#define USE_WMAX_PLUG +// #define USE_IMIN_PLUG +// #define USE_JMIN_PLUG +// #define USE_KMIN_PLUG +// #define USE_UMIN_PLUG +// #define USE_VMIN_PLUG +// #define USE_WMIN_PLUG +// #define USE_XMAX_PLUG +// #define USE_YMAX_PLUG +// #define USE_ZMAX_PLUG +// #define USE_IMAX_PLUG +// #define USE_JMAX_PLUG +// #define USE_KMAX_PLUG +// #define USE_UMAX_PLUG +// #define USE_VMAX_PLUG +// #define USE_WMAX_PLUG // Enable pullup for all endstops to prevent a floating state #define ENDSTOPPULLUPS #if DISABLED(ENDSTOPPULLUPS) - // Disable ENDSTOPPULLUPS to set pullups individually - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_IMIN - //#define ENDSTOPPULLUP_JMIN - //#define ENDSTOPPULLUP_KMIN - //#define ENDSTOPPULLUP_UMIN - //#define ENDSTOPPULLUP_VMIN - //#define ENDSTOPPULLUP_WMIN - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_IMAX - //#define ENDSTOPPULLUP_JMAX - //#define ENDSTOPPULLUP_KMAX - //#define ENDSTOPPULLUP_UMAX - //#define ENDSTOPPULLUP_VMAX - //#define ENDSTOPPULLUP_WMAX - //#define ENDSTOPPULLUP_ZMIN_PROBE +// Disable ENDSTOPPULLUPS to set pullups individually +// #define ENDSTOPPULLUP_XMIN +// #define ENDSTOPPULLUP_YMIN +// #define ENDSTOPPULLUP_ZMIN +// #define ENDSTOPPULLUP_IMIN +// #define ENDSTOPPULLUP_JMIN +// #define ENDSTOPPULLUP_KMIN +// #define ENDSTOPPULLUP_UMIN +// #define ENDSTOPPULLUP_VMIN +// #define ENDSTOPPULLUP_WMIN +// #define ENDSTOPPULLUP_XMAX +// #define ENDSTOPPULLUP_YMAX +// #define ENDSTOPPULLUP_ZMAX +// #define ENDSTOPPULLUP_IMAX +// #define ENDSTOPPULLUP_JMAX +// #define ENDSTOPPULLUP_KMAX +// #define ENDSTOPPULLUP_UMAX +// #define ENDSTOPPULLUP_VMAX +// #define ENDSTOPPULLUP_WMAX +// #define ENDSTOPPULLUP_ZMIN_PROBE #endif // Enable pulldown for all endstops to prevent a floating state -//#define ENDSTOPPULLDOWNS +// #define ENDSTOPPULLDOWNS #if DISABLED(ENDSTOPPULLDOWNS) - // Disable ENDSTOPPULLDOWNS to set pulldowns individually - //#define ENDSTOPPULLDOWN_XMIN - //#define ENDSTOPPULLDOWN_YMIN - //#define ENDSTOPPULLDOWN_ZMIN - //#define ENDSTOPPULLDOWN_IMIN - //#define ENDSTOPPULLDOWN_JMIN - //#define ENDSTOPPULLDOWN_KMIN - //#define ENDSTOPPULLDOWN_UMIN - //#define ENDSTOPPULLDOWN_VMIN - //#define ENDSTOPPULLDOWN_WMIN - //#define ENDSTOPPULLDOWN_XMAX - //#define ENDSTOPPULLDOWN_YMAX - //#define ENDSTOPPULLDOWN_ZMAX - //#define ENDSTOPPULLDOWN_IMAX - //#define ENDSTOPPULLDOWN_JMAX - //#define ENDSTOPPULLDOWN_KMAX - //#define ENDSTOPPULLDOWN_UMAX - //#define ENDSTOPPULLDOWN_VMAX - //#define ENDSTOPPULLDOWN_WMAX - //#define ENDSTOPPULLDOWN_ZMIN_PROBE +// Disable ENDSTOPPULLDOWNS to set pulldowns individually +// #define ENDSTOPPULLDOWN_XMIN +// #define ENDSTOPPULLDOWN_YMIN +// #define ENDSTOPPULLDOWN_ZMIN +// #define ENDSTOPPULLDOWN_IMIN +// #define ENDSTOPPULLDOWN_JMIN +// #define ENDSTOPPULLDOWN_KMIN +// #define ENDSTOPPULLDOWN_UMIN +// #define ENDSTOPPULLDOWN_VMIN +// #define ENDSTOPPULLDOWN_WMIN +// #define ENDSTOPPULLDOWN_XMAX +// #define ENDSTOPPULLDOWN_YMAX +// #define ENDSTOPPULLDOWN_ZMAX +// #define ENDSTOPPULLDOWN_IMAX +// #define ENDSTOPPULLDOWN_JMAX +// #define ENDSTOPPULLDOWN_KMAX +// #define ENDSTOPPULLDOWN_UMAX +// #define ENDSTOPPULLDOWN_VMAX +// #define ENDSTOPPULLDOWN_WMAX +// #define ENDSTOPPULLDOWN_ZMIN_PROBE #endif // 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 Y_MIN_ENDSTOP_INVERTING false // 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 I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define W_MIN_ENDSTOP_INVERTING false // 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 Y_MAX_ENDSTOP_INVERTING false // 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 I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define W_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING false // 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 Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define W_MIN_ENDSTOP_INVERTING false // 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 Y_MAX_ENDSTOP_INVERTING false // 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 I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define W_MAX_ENDSTOP_INVERTING false // 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 probe. // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. -//#define ENDSTOP_INTERRUPTS_FEATURE +// #define ENDSTOP_INTERRUPTS_FEATURE /** * Endstop Noise Threshold @@ -1166,10 +1169,10 @@ * * :[2,3,4,5,6,7] */ -//#define ENDSTOP_NOISE_THRESHOLD 2 +// #define ENDSTOP_NOISE_THRESHOLD 2 // Check for stuck or disconnected endstops during homing moves. -//#define DETECT_BROKEN_ENDSTOP +// #define DETECT_BROKEN_ENDSTOP //============================================================================= //============================== Movement Settings ============================ @@ -1189,25 +1192,25 @@ * following movement settings. If fewer factors are given than the * total number of extruders, the last value applies to the rest. */ -//#define DISTINCT_E_FACTORS +// #define DISTINCT_E_FACTORS /** * Default Axis Steps Per Unit (linear=steps/mm, rotational=steps/°) * Override with M92 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 } +#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 400, 93} /** * Default Max Feed Rate (linear=mm/s, rotational=°/s) * Override with M203 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} -//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 +// #define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) - #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits +#define MAX_FEEDRATE_EDIT_VALUES {600, 600, 10, 50} // ...or, set your own edit limits #endif /** @@ -1216,11 +1219,11 @@ * Override with M201 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } +#define DEFAULT_MAX_ACCELERATION {500, 500, 100, 5000} -//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 +// #define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 #if ENABLED(LIMITED_MAX_ACCEL_EDITING) - #define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits +#define MAX_ACCEL_EDIT_VALUES {6000, 6000, 200, 20000} // ...or, set your own edit limits #endif /** @@ -1231,9 +1234,9 @@ * M204 R Retract Acceleration * M204 T Travel Acceleration */ -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves +#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration for printing moves +#define DEFAULT_RETRACT_ACCELERATION 500 // E acceleration for retracts +#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z acceleration for travel (non printing) moves /** * Default Jerk limits (mm/s) @@ -1243,27 +1246,27 @@ * When changing speed and direction, if the difference is less than the * value set here, it may happen instantaneously. */ -//#define CLASSIC_JERK +// #define CLASSIC_JERK #if ENABLED(CLASSIC_JERK) - #define DEFAULT_XJERK 10.0 - #define DEFAULT_YJERK 10.0 - #define DEFAULT_ZJERK 0.3 - //#define DEFAULT_IJERK 0.3 - //#define DEFAULT_JJERK 0.3 - //#define DEFAULT_KJERK 0.3 - //#define DEFAULT_UJERK 0.3 - //#define DEFAULT_VJERK 0.3 - //#define DEFAULT_WJERK 0.3 +#define DEFAULT_XJERK 10.0 +#define DEFAULT_YJERK 10.0 +#define DEFAULT_ZJERK 0.3 +// #define DEFAULT_IJERK 0.3 +// #define DEFAULT_JJERK 0.3 +// #define DEFAULT_KJERK 0.3 +// #define DEFAULT_UJERK 0.3 +// #define DEFAULT_VJERK 0.3 +// #define DEFAULT_WJERK 0.3 - //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves +// #define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves - //#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2 - #if ENABLED(LIMITED_JERK_EDITING) - #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits - #endif +// #define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2 +#if ENABLED(LIMITED_JERK_EDITING) +#define MAX_JERK_EDIT_VALUES {20, 20, 0.6, 10} // ...or, set your own edit limits +#endif #endif -#define DEFAULT_EJERK 5.0 // May be used by Linear Advance +#define DEFAULT_EJERK 5.0 // May be used by Linear Advance /** * Junction Deviation Factor @@ -1273,9 +1276,9 @@ * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html */ #if DISABLED(CLASSIC_JERK) - #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge - #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle - // for small segments (< 1mm) with large junction angles (> 135°). +#define JUNCTION_DEVIATION_MM 0.08 // (mm) Distance from real junction edge +#define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle + // for small segments (< 1mm) with large junction angles (> 135°). #endif /** @@ -1286,7 +1289,7 @@ * * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained */ -//#define S_CURVE_ACCELERATION +// #define S_CURVE_ACCELERATION //=========================================================================== //============================= Z Probe Options ============================= @@ -1302,10 +1305,10 @@ * The probe replaces the Z-MIN endstop and is used for Z homing. * (Automatically enables USE_PROBE_FOR_Z_HOMING.) */ -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +// #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // Force the use of the probe for Z-axis homing -//#define USE_PROBE_FOR_Z_HOMING +#define USE_PROBE_FOR_Z_HOMING /** * Z_MIN_PROBE_PIN @@ -1320,7 +1323,7 @@ * - Normally-closed (NC) also connect to GND. * - Normally-open (NO) also connect to 5V. */ -//#define Z_MIN_PROBE_PIN -1 +// #define Z_MIN_PROBE_PIN -1 /** * Probe Type @@ -1334,42 +1337,42 @@ * Use G29 repeatedly, adjusting the Z height at each point with movement commands * or (with LCD_BED_LEVELING) the LCD controller. */ -//#define PROBE_MANUALLY +// #define PROBE_MANUALLY /** * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. * (e.g., an inductive probe or a nozzle-based probe-switch.) */ -//#define FIX_MOUNTED_PROBE +// #define FIX_MOUNTED_PROBE /** * Use the nozzle as the probe, as with a conductive * nozzle system or a piezo-electric smart effector. */ -//#define NOZZLE_AS_PROBE +// #define NOZZLE_AS_PROBE /** * Z Servo Probe, such as an endstop switch on a rotating arm. */ -//#define Z_PROBE_SERVO_NR 0 +// #define Z_PROBE_SERVO_NR 0 #ifdef Z_PROBE_SERVO_NR - //#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles +// #define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles #endif /** * The BLTouch probe uses a Hall effect sensor and emulates a servo. */ -//#define BLTOUCH +#define BLTOUCH /** * MagLev V4 probe by MDD * * This probe is deployed and activated by powering a built-in electromagnet. */ -//#define MAGLEV4 +// #define MAGLEV4 #if ENABLED(MAGLEV4) - //#define MAGLEV_TRIGGER_PIN 11 // Set to the connected digital output - #define MAGLEV_TRIGGER_DELAY 15 // Changing this risks overheating the coil +// #define MAGLEV_TRIGGER_PIN 11 // Set to the connected digital output +#define MAGLEV_TRIGGER_DELAY 15 // Changing this risks overheating the coil #endif /** @@ -1382,53 +1385,83 @@ * Also requires: BABYSTEPPING, BABYSTEP_ZPROBE_OFFSET, Z_SAFE_HOMING, * and a minimum Z_HOMING_HEIGHT of 10. */ -//#define TOUCH_MI_PROBE +// #define TOUCH_MI_PROBE #if ENABLED(TOUCH_MI_PROBE) - #define TOUCH_MI_RETRACT_Z 0.5 // Height at which the probe retracts - //#define TOUCH_MI_DEPLOY_XPOS (X_MAX_BED + 2) // For a magnet on the right side of the bed - //#define TOUCH_MI_MANUAL_DEPLOY // For manual deploy (LCD menu) +#define TOUCH_MI_RETRACT_Z 0.5 // Height at which the probe retracts +// #define TOUCH_MI_DEPLOY_XPOS (X_MAX_BED + 2) // For a magnet on the right side of the bed +// #define TOUCH_MI_MANUAL_DEPLOY // For manual deploy (LCD menu) #endif // A probe that is deployed and stowed with a solenoid pin (SOL1_PIN) -//#define SOLENOID_PROBE +// #define SOLENOID_PROBE // A sled-mounted probe like those designed by Charles Bell. -//#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 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. // A probe deployed by moving the x-axis, such as the Wilson II's rack-and-pinion probe designed by Marty Rice. -//#define RACK_AND_PINION_PROBE +// #define RACK_AND_PINION_PROBE #if ENABLED(RACK_AND_PINION_PROBE) - #define Z_PROBE_DEPLOY_X X_MIN_POS - #define Z_PROBE_RETRACT_X X_MAX_POS +#define Z_PROBE_DEPLOY_X X_MIN_POS +#define Z_PROBE_RETRACT_X X_MAX_POS #endif /** * Magnetically Mounted Probe * For probes such as Euclid, Klicky, Klackender, etc. */ -//#define MAG_MOUNTED_PROBE +// #define MAG_MOUNTED_PROBE #if ENABLED(MAG_MOUNTED_PROBE) - #define PROBE_DEPLOY_FEEDRATE (133*60) // (mm/min) Probe deploy speed - #define PROBE_STOW_FEEDRATE (133*60) // (mm/min) Probe stow speed +#define PROBE_DEPLOY_FEEDRATE (133 * 60) // (mm/min) Probe deploy speed +#define PROBE_STOW_FEEDRATE (133 * 60) // (mm/min) Probe stow speed - #define MAG_MOUNTED_DEPLOY_1 { PROBE_DEPLOY_FEEDRATE, { 245, 114, 30 } } // Move to side Dock & Attach probe - #define MAG_MOUNTED_DEPLOY_2 { PROBE_DEPLOY_FEEDRATE, { 210, 114, 30 } } // Move probe off dock - #define MAG_MOUNTED_DEPLOY_3 { PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } } // Extra move if needed - #define MAG_MOUNTED_DEPLOY_4 { PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } } // Extra move if needed - #define MAG_MOUNTED_DEPLOY_5 { PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } } // Extra move if needed - #define MAG_MOUNTED_STOW_1 { PROBE_STOW_FEEDRATE, { 245, 114, 20 } } // Move to dock - #define MAG_MOUNTED_STOW_2 { PROBE_STOW_FEEDRATE, { 245, 114, 0 } } // Place probe beside remover - #define MAG_MOUNTED_STOW_3 { PROBE_STOW_FEEDRATE, { 230, 114, 0 } } // Side move to remove probe - #define MAG_MOUNTED_STOW_4 { PROBE_STOW_FEEDRATE, { 210, 114, 20 } } // Side move to remove probe - #define MAG_MOUNTED_STOW_5 { PROBE_STOW_FEEDRATE, { 0, 0, 0 } } // Extra move if needed +#define MAG_MOUNTED_DEPLOY_1 \ + { \ + PROBE_DEPLOY_FEEDRATE, { 245, 114, 30 } \ + } // Move to side Dock & Attach probe +#define MAG_MOUNTED_DEPLOY_2 \ + { \ + PROBE_DEPLOY_FEEDRATE, { 210, 114, 30 } \ + } // Move probe off dock +#define MAG_MOUNTED_DEPLOY_3 \ + { \ + PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } \ + } // Extra move if needed +#define MAG_MOUNTED_DEPLOY_4 \ + { \ + PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } \ + } // Extra move if needed +#define MAG_MOUNTED_DEPLOY_5 \ + { \ + PROBE_DEPLOY_FEEDRATE, { 0, 0, 0 } \ + } // Extra move if needed +#define MAG_MOUNTED_STOW_1 \ + { \ + PROBE_STOW_FEEDRATE, { 245, 114, 20 } \ + } // Move to dock +#define MAG_MOUNTED_STOW_2 \ + { \ + PROBE_STOW_FEEDRATE, { 245, 114, 0 } \ + } // Place probe beside remover +#define MAG_MOUNTED_STOW_3 \ + { \ + PROBE_STOW_FEEDRATE, { 230, 114, 0 } \ + } // Side move to remove probe +#define MAG_MOUNTED_STOW_4 \ + { \ + PROBE_STOW_FEEDRATE, { 210, 114, 20 } \ + } // Side move to remove probe +#define MAG_MOUNTED_STOW_5 \ + { \ + PROBE_STOW_FEEDRATE, { 0, 0, 0 } \ + } // Extra move if needed #endif // Duet Smart Effector (for delta printers) - https://docs.duet3d.com/en/Duet3D_hardware/Accessories/Smart_Effector // When the pin is defined you can use M672 to set/reset the probe sensitivity. -//#define DUET_SMART_EFFECTOR +// #define DUET_SMART_EFFECTOR #if ENABLED(DUET_SMART_EFFECTOR) - #define SMART_EFFECTOR_MOD_PIN -1 // Connect a GPIO pin to the Smart Effector MOD pin +#define SMART_EFFECTOR_MOD_PIN -1 // Connect a GPIO pin to the Smart Effector MOD pin #endif /** @@ -1437,37 +1470,37 @@ * CAUTION: This can damage machines with Z lead screws. * Take extreme care when setting up this feature. */ -//#define SENSORLESS_PROBING +// #define SENSORLESS_PROBING /** * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Autolevel_probe * Deploys by touching z-axis belt. Retracts by pushing the probe down. */ -//#define Z_PROBE_ALLEN_KEY +// #define Z_PROBE_ALLEN_KEY #if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. +// 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, +// if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - #define Z_PROBE_ALLEN_KEY_DEPLOY_1 { 30.0, DELTA_PRINTABLE_RADIUS, 100.0 } - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_FEEDRATE +#define Z_PROBE_ALLEN_KEY_DEPLOY_1 {30.0, DELTA_PRINTABLE_RADIUS, 100.0} +#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_2 { 0.0, DELTA_PRINTABLE_RADIUS, 100.0 } - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_FEEDRATE)/10 +#define Z_PROBE_ALLEN_KEY_DEPLOY_2 {0.0, DELTA_PRINTABLE_RADIUS, 100.0} +#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_FEEDRATE) / 10 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3 { 0.0, (DELTA_PRINTABLE_RADIUS) * 0.75, 100.0 } - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_FEEDRATE +#define Z_PROBE_ALLEN_KEY_DEPLOY_3 {0.0, (DELTA_PRINTABLE_RADIUS) * 0.75, 100.0} +#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_1 { -64.0, 56.0, 23.0 } // Move the probe into position - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_FEEDRATE +#define Z_PROBE_ALLEN_KEY_STOW_1 {-64.0, 56.0, 23.0} // Move the probe into position +#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_2 { -64.0, 56.0, 3.0 } // Push it down - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_FEEDRATE)/10 +#define Z_PROBE_ALLEN_KEY_STOW_2 {-64.0, 56.0, 3.0} // Push it down +#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_FEEDRATE) / 10 - #define Z_PROBE_ALLEN_KEY_STOW_3 { -64.0, 56.0, 50.0 } // Move it up to clear - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_FEEDRATE +#define Z_PROBE_ALLEN_KEY_STOW_3 {-64.0, 56.0, 50.0} // Move it up to clear +#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_4 { 0.0, 0.0, 50.0 } - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_FEEDRATE +#define Z_PROBE_ALLEN_KEY_STOW_4 {0.0, 0.0, 50.0} +#define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_FEEDRATE #endif // Z_PROBE_ALLEN_KEY @@ -1511,17 +1544,17 @@ * | [-] | * O-- FRONT --+ */ -#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#define NOZZLE_TO_PROBE_OFFSET { -46.63, -5.12, 0 } // Most probes should stay away from the edges of the bed, but // with NOZZLE_AS_PROBE this can be negative for a wider probing area. #define PROBING_MARGIN 10 // X and Y axis travel speed (mm/min) between probes -#define XY_PROBE_FEEDRATE (133*60) +#define XY_PROBE_FEEDRATE (133 * 60) // Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) -#define Z_PROBE_FEEDRATE_FAST (4*60) +#define Z_PROBE_FEEDRATE_FAST (4 * 60) // Feedrate (mm/min) for the "accurate" probe of each point #define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2) @@ -1531,10 +1564,10 @@ * A switch indicating proper deployment, or an optical * switch triggered when the carriage is near the bed. */ -//#define PROBE_ACTIVATION_SWITCH +// #define PROBE_ACTIVATION_SWITCH #if ENABLED(PROBE_ACTIVATION_SWITCH) - #define PROBE_ACTIVATION_SWITCH_STATE LOW // State indicating probe is active - //#define PROBE_ACTIVATION_SWITCH_PIN PC6 // Override default pin +#define PROBE_ACTIVATION_SWITCH_STATE LOW // State indicating probe is active +// #define PROBE_ACTIVATION_SWITCH_PIN PC6 // Override default pin #endif /** @@ -1542,24 +1575,24 @@ * Useful for a strain gauge or piezo sensor that needs to factor out * elements such as cables pulling on the carriage. */ -//#define PROBE_TARE +// #define PROBE_TARE #if ENABLED(PROBE_TARE) - #define PROBE_TARE_TIME 200 // (ms) Time to hold tare pin - #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before - #define PROBE_TARE_STATE HIGH // State to write pin for tare - //#define PROBE_TARE_PIN PA5 // Override default pin - #if ENABLED(PROBE_ACTIVATION_SWITCH) - //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active - #endif +#define PROBE_TARE_TIME 200 // (ms) Time to hold tare pin +#define PROBE_TARE_DELAY 200 // (ms) Delay after tare before +#define PROBE_TARE_STATE HIGH // State to write pin for tare +// #define PROBE_TARE_PIN PA5 // Override default pin +#if ENABLED(PROBE_ACTIVATION_SWITCH) +// #define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active +#endif #endif /** * Probe Enable / Disable * The probe only provides a triggered signal when enabled. */ -//#define PROBE_ENABLE_DISABLE +// #define PROBE_ENABLE_DISABLE #if ENABLED(PROBE_ENABLE_DISABLE) - //#define PROBE_ENABLE_PIN -1 // Override the default pin here +// #define PROBE_ENABLE_PIN -1 // Override the default pin here #endif /** @@ -1571,8 +1604,8 @@ * A total of 2 does fast/slow probes with a weighted average. * A total of 3 or more adds more slow probes, taking the average. */ -//#define MULTIPLE_PROBING 2 -//#define EXTRA_PROBING 1 +// #define MULTIPLE_PROBING 2 +// #define EXTRA_PROBING 1 /** * Z probes require clearance when deploying, stowing, and moving between @@ -1588,24 +1621,24 @@ * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. */ -#define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow -#define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points -#define Z_CLEARANCE_MULTI_PROBE 5 // (mm) Z Clearance between multiple probes -//#define Z_AFTER_PROBING 5 // (mm) Z position after probing is done +#define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow +#define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points +#define Z_CLEARANCE_MULTI_PROBE 5 // (mm) Z Clearance between multiple probes +// #define Z_AFTER_PROBING 5 // (mm) Z position after probing is done -#define Z_PROBE_LOW_POINT -2 // (mm) Farthest distance below the trigger-point to go before stopping +#define Z_PROBE_LOW_POINT -2 // (mm) Farthest distance below the trigger-point to go before stopping // For M851 give a range for adjusting the Z probe offset #define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MAX 20 // Enable the M48 repeatability test to test probe accuracy -//#define Z_MIN_PROBE_REPEATABILITY_TEST +// #define Z_MIN_PROBE_REPEATABILITY_TEST // Before deploy/stow pause for user confirmation -//#define PAUSE_BEFORE_DEPLOY_STOW +// #define PAUSE_BEFORE_DEPLOY_STOW #if ENABLED(PAUSE_BEFORE_DEPLOY_STOW) - //#define PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED // For Manual Deploy Allenkey Probe +// #define PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED // For Manual Deploy Allenkey Probe #endif /** @@ -1615,21 +1648,21 @@ * These options are most useful for the BLTouch probe, but may also improve * readings with inductive probes and piezo sensors. */ -//#define PROBING_HEATERS_OFF // Turn heaters off when probing +// #define PROBING_HEATERS_OFF // Turn heaters off when probing #if ENABLED(PROBING_HEATERS_OFF) - //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy) - //#define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude) +// #define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy) +// #define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude) #endif -//#define PROBING_FANS_OFF // Turn fans off when probing -//#define PROBING_ESTEPPERS_OFF // Turn all extruder steppers off when probing -//#define PROBING_STEPPERS_OFF // Turn all steppers off (unless needed to hold position) when probing (including extruders) -//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors +// #define PROBING_FANS_OFF // Turn fans off when probing +// #define PROBING_ESTEPPERS_OFF // Turn all extruder steppers off when probing +// #define PROBING_STEPPERS_OFF // Turn all steppers off (unless needed to hold position) when probing (including extruders) +// #define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors // Require minimum nozzle and/or bed temperature for probing -//#define PREHEAT_BEFORE_PROBING +// #define PREHEAT_BEFORE_PROBING #if ENABLED(PREHEAT_BEFORE_PROBING) - #define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time - #define PROBING_BED_TEMP 50 +#define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time +#define PROBING_BED_TEMP 50 #endif // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 @@ -1638,45 +1671,45 @@ #define Y_ENABLE_ON 0 #define Z_ENABLE_ON 0 #define E_ENABLE_ON 0 // For all extruders -//#define I_ENABLE_ON 0 -//#define J_ENABLE_ON 0 -//#define K_ENABLE_ON 0 -//#define U_ENABLE_ON 0 -//#define V_ENABLE_ON 0 -//#define W_ENABLE_ON 0 +// #define I_ENABLE_ON 0 +// #define J_ENABLE_ON 0 +// #define K_ENABLE_ON 0 +// #define U_ENABLE_ON 0 +// #define V_ENABLE_ON 0 +// #define W_ENABLE_ON 0 // Disable axis steppers immediately when they're not being stepped. // WARNING: When motors turn off there is a chance of losing position accuracy! -//#define DISABLE_X -//#define DISABLE_Y -//#define DISABLE_Z -//#define DISABLE_I -//#define DISABLE_J -//#define DISABLE_K -//#define DISABLE_U -//#define DISABLE_V -//#define DISABLE_W +// #define DISABLE_X +// #define DISABLE_Y +// #define DISABLE_Z +// #define DISABLE_I +// #define DISABLE_J +// #define DISABLE_K +// #define DISABLE_U +// #define DISABLE_V +// #define DISABLE_W // Turn off the display blinking that warns about possible accuracy reduction -//#define DISABLE_REDUCED_ACCURACY_WARNING +// #define DISABLE_REDUCED_ACCURACY_WARNING // @section extruder -//#define DISABLE_E // Disable the extruder when not stepping -#define DISABLE_OTHER_EXTRUDERS // Keep only the active extruder enabled +// #define DISABLE_E // Disable the extruder when not stepping +// #define DISABLE_OTHER_EXTRUDERS // Keep only the active extruder enabled // @section motion // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false -//#define INVERT_I_DIR false -//#define INVERT_J_DIR false -//#define INVERT_K_DIR false -//#define INVERT_U_DIR false -//#define INVERT_V_DIR false -//#define INVERT_W_DIR false +#define INVERT_Y_DIR false +#define INVERT_Z_DIR true +// #define INVERT_I_DIR false +// #define INVERT_J_DIR false +// #define INVERT_K_DIR false +// #define INVERT_U_DIR false +// #define INVERT_V_DIR false +// #define INVERT_W_DIR false // @section extruder @@ -1692,38 +1725,38 @@ // @section homing -//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed. Also enable HOME_AFTER_DEACTIVATE for extra safety. -//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated. Also enable NO_MOTION_BEFORE_HOMING for extra safety. +// #define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed. Also enable HOME_AFTER_DEACTIVATE for extra safety. +// #define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated. Also enable NO_MOTION_BEFORE_HOMING for extra safety. /** * Set Z_IDLE_HEIGHT if the Z-Axis moves on its own when steppers are disabled. * - Use a low value (i.e., Z_MIN_POS) if the nozzle falls down to the bed. * - Use a large value (i.e., Z_MAX_POS) if the bed falls down, away from the nozzle. */ -//#define Z_IDLE_HEIGHT Z_HOME_POS +// #define Z_IDLE_HEIGHT Z_HOME_POS -//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. +// #define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... +// Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. -//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z +// #define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 -//#define I_HOME_DIR -1 -//#define J_HOME_DIR -1 -//#define K_HOME_DIR -1 -//#define U_HOME_DIR -1 -//#define V_HOME_DIR -1 -//#define W_HOME_DIR -1 +// #define I_HOME_DIR -1 +// #define J_HOME_DIR -1 +// #define K_HOME_DIR -1 +// #define U_HOME_DIR -1 +// #define V_HOME_DIR -1 +// #define W_HOME_DIR -1 // @section geometry // The size of the printable area -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE 235 +#define Y_BED_SIZE 235 // Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions. #define X_MIN_POS 0 @@ -1731,19 +1764,19 @@ #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE -#define Z_MAX_POS 200 -//#define I_MIN_POS 0 -//#define I_MAX_POS 50 -//#define J_MIN_POS 0 -//#define J_MAX_POS 50 -//#define K_MIN_POS 0 -//#define K_MAX_POS 50 -//#define U_MIN_POS 0 -//#define U_MAX_POS 50 -//#define V_MIN_POS 0 -//#define V_MAX_POS 50 -//#define W_MIN_POS 0 -//#define W_MAX_POS 50 +#define Z_MAX_POS 250 +// #define I_MIN_POS 0 +// #define I_MAX_POS 50 +// #define J_MIN_POS 0 +// #define J_MAX_POS 50 +// #define K_MIN_POS 0 +// #define K_MAX_POS 50 +// #define U_MIN_POS 0 +// #define U_MAX_POS 50 +// #define V_MIN_POS 0 +// #define V_MAX_POS 50 +// #define W_MIN_POS 0 +// #define W_MAX_POS 50 /** * Software Endstops @@ -1757,33 +1790,33 @@ // Min software endstops constrain movement within minimum coordinate bounds #define MIN_SOFTWARE_ENDSTOPS #if ENABLED(MIN_SOFTWARE_ENDSTOPS) - #define MIN_SOFTWARE_ENDSTOP_X - #define MIN_SOFTWARE_ENDSTOP_Y - #define MIN_SOFTWARE_ENDSTOP_Z - #define MIN_SOFTWARE_ENDSTOP_I - #define MIN_SOFTWARE_ENDSTOP_J - #define MIN_SOFTWARE_ENDSTOP_K - #define MIN_SOFTWARE_ENDSTOP_U - #define MIN_SOFTWARE_ENDSTOP_V - #define MIN_SOFTWARE_ENDSTOP_W +#define MIN_SOFTWARE_ENDSTOP_X +#define MIN_SOFTWARE_ENDSTOP_Y +#define MIN_SOFTWARE_ENDSTOP_Z +#define MIN_SOFTWARE_ENDSTOP_I +#define MIN_SOFTWARE_ENDSTOP_J +#define MIN_SOFTWARE_ENDSTOP_K +#define MIN_SOFTWARE_ENDSTOP_U +#define MIN_SOFTWARE_ENDSTOP_V +#define MIN_SOFTWARE_ENDSTOP_W #endif // Max software endstops constrain movement within maximum coordinate bounds #define MAX_SOFTWARE_ENDSTOPS #if ENABLED(MAX_SOFTWARE_ENDSTOPS) - #define MAX_SOFTWARE_ENDSTOP_X - #define MAX_SOFTWARE_ENDSTOP_Y - #define MAX_SOFTWARE_ENDSTOP_Z - #define MAX_SOFTWARE_ENDSTOP_I - #define MAX_SOFTWARE_ENDSTOP_J - #define MAX_SOFTWARE_ENDSTOP_K - #define MAX_SOFTWARE_ENDSTOP_U - #define MAX_SOFTWARE_ENDSTOP_V - #define MAX_SOFTWARE_ENDSTOP_W +#define MAX_SOFTWARE_ENDSTOP_X +#define MAX_SOFTWARE_ENDSTOP_Y +#define MAX_SOFTWARE_ENDSTOP_Z +#define MAX_SOFTWARE_ENDSTOP_I +#define MAX_SOFTWARE_ENDSTOP_J +#define MAX_SOFTWARE_ENDSTOP_K +#define MAX_SOFTWARE_ENDSTOP_U +#define MAX_SOFTWARE_ENDSTOP_V +#define MAX_SOFTWARE_ENDSTOP_W #endif #if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) - //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD +// #define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD #endif /** @@ -1799,66 +1832,66 @@ * RAMPS-based boards use SERVO3_PIN for the first runout sensor. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. */ -//#define FILAMENT_RUNOUT_SENSOR +// #define FILAMENT_RUNOUT_SENSOR #if ENABLED(FILAMENT_RUNOUT_SENSOR) - #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. - #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. +#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. +#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. - #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. - #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins. - //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins. - //#define WATCH_ALL_RUNOUT_SENSORS // Execute runout script on any triggering sensor, not only for the active extruder. - // This is automatically enabled for MIXING_EXTRUDERs. +#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. +#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins. +// #define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins. +// #define WATCH_ALL_RUNOUT_SENSORS // Execute runout script on any triggering sensor, not only for the active extruder. +// This is automatically enabled for MIXING_EXTRUDERs. - // Override individually if the runout sensors vary - //#define FIL_RUNOUT1_STATE LOW - //#define FIL_RUNOUT1_PULLUP - //#define FIL_RUNOUT1_PULLDOWN +// Override individually if the runout sensors vary +// #define FIL_RUNOUT1_STATE LOW +// #define FIL_RUNOUT1_PULLUP +// #define FIL_RUNOUT1_PULLDOWN - //#define FIL_RUNOUT2_STATE LOW - //#define FIL_RUNOUT2_PULLUP - //#define FIL_RUNOUT2_PULLDOWN +// #define FIL_RUNOUT2_STATE LOW +// #define FIL_RUNOUT2_PULLUP +// #define FIL_RUNOUT2_PULLDOWN - //#define FIL_RUNOUT3_STATE LOW - //#define FIL_RUNOUT3_PULLUP - //#define FIL_RUNOUT3_PULLDOWN +// #define FIL_RUNOUT3_STATE LOW +// #define FIL_RUNOUT3_PULLUP +// #define FIL_RUNOUT3_PULLDOWN - //#define FIL_RUNOUT4_STATE LOW - //#define FIL_RUNOUT4_PULLUP - //#define FIL_RUNOUT4_PULLDOWN +// #define FIL_RUNOUT4_STATE LOW +// #define FIL_RUNOUT4_PULLUP +// #define FIL_RUNOUT4_PULLDOWN - //#define FIL_RUNOUT5_STATE LOW - //#define FIL_RUNOUT5_PULLUP - //#define FIL_RUNOUT5_PULLDOWN +// #define FIL_RUNOUT5_STATE LOW +// #define FIL_RUNOUT5_PULLUP +// #define FIL_RUNOUT5_PULLDOWN - //#define FIL_RUNOUT6_STATE LOW - //#define FIL_RUNOUT6_PULLUP - //#define FIL_RUNOUT6_PULLDOWN +// #define FIL_RUNOUT6_STATE LOW +// #define FIL_RUNOUT6_PULLUP +// #define FIL_RUNOUT6_PULLDOWN - //#define FIL_RUNOUT7_STATE LOW - //#define FIL_RUNOUT7_PULLUP - //#define FIL_RUNOUT7_PULLDOWN +// #define FIL_RUNOUT7_STATE LOW +// #define FIL_RUNOUT7_PULLUP +// #define FIL_RUNOUT7_PULLDOWN - //#define FIL_RUNOUT8_STATE LOW - //#define FIL_RUNOUT8_PULLUP - //#define FIL_RUNOUT8_PULLDOWN +// #define FIL_RUNOUT8_STATE LOW +// #define FIL_RUNOUT8_PULLUP +// #define FIL_RUNOUT8_PULLDOWN - // Commands to execute on filament runout. - // With multiple runout sensors use the %c placeholder for the current tool in commands (e.g., "M600 T%c") - // NOTE: After 'M412 H1' the host handles filament runout and this script does not apply. - #define FILAMENT_RUNOUT_SCRIPT "M600" +// Commands to execute on filament runout. +// With multiple runout sensors use the %c placeholder for the current tool in commands (e.g., "M600 T%c") +// NOTE: After 'M412 H1' the host handles filament runout and this script does not apply. +#define FILAMENT_RUNOUT_SCRIPT "M600" - // After a runout is detected, continue printing this length of filament - // before executing the runout script. Useful for a sensor at the end of - // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead. - //#define FILAMENT_RUNOUT_DISTANCE_MM 25 +// After a runout is detected, continue printing this length of filament +// before executing the runout script. Useful for a sensor at the end of +// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead. +// #define FILAMENT_RUNOUT_DISTANCE_MM 25 - #ifdef FILAMENT_RUNOUT_DISTANCE_MM - // Enable this option to use an encoder disc that toggles the runout pin - // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM - // large enough to avoid false positives.) - //#define FILAMENT_MOTION_SENSOR - #endif +#ifdef FILAMENT_RUNOUT_DISTANCE_MM +// Enable this option to use an encoder disc that toggles the runout pin +// as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM +// large enough to avoid false positives.) +// #define FILAMENT_MOTION_SENSOR +#endif #endif //=========================================================================== @@ -1899,33 +1932,33 @@ * leveling in steps so you can manually adjust the Z height at each grid-point. * With an LCD controller the process is guided step-by-step. */ -//#define AUTO_BED_LEVELING_3POINT -//#define AUTO_BED_LEVELING_LINEAR -//#define AUTO_BED_LEVELING_BILINEAR -//#define AUTO_BED_LEVELING_UBL -//#define MESH_BED_LEVELING +// #define AUTO_BED_LEVELING_3POINT +// #define AUTO_BED_LEVELING_LINEAR +#define AUTO_BED_LEVELING_BILINEAR +// #define AUTO_BED_LEVELING_UBL +// #define MESH_BED_LEVELING /** * Commands to execute at the end of G29 probing. * Useful to retract or move the Z probe out of the way. */ -//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" +// #define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" /** * Normally G28 leaves leveling disabled on completion. Enable one of * these options to restore the prior leveling state or to always enable * leveling immediately after G28. */ -//#define RESTORE_LEVELING_AFTER_G28 -//#define ENABLE_LEVELING_AFTER_G28 +// #define RESTORE_LEVELING_AFTER_G28 +// #define ENABLE_LEVELING_AFTER_G28 /** * Auto-leveling needs preheating */ -//#define PREHEAT_BEFORE_LEVELING +// #define PREHEAT_BEFORE_LEVELING #if ENABLED(PREHEAT_BEFORE_LEVELING) - #define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time - #define LEVELING_BED_TEMP 50 +#define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time +#define LEVELING_BED_TEMP 50 #endif /** @@ -1935,115 +1968,115 @@ * For information about this sensor https://github.com/markniu/Bed_Distance_sensor * Uses I2C port, so it requires I2C library markyue/Panda_SoftMasterI2C. */ -//#define BD_SENSOR +// #define BD_SENSOR /** * Enable detailed logging of G28, G29, M48, etc. * Turn on with the command 'M111 S32'. * NOTE: Requires a lot of flash! */ -//#define DEBUG_LEVELING_FEATURE +// #define DEBUG_LEVELING_FEATURE #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL, PROBE_MANUALLY) - // Set a height for the start of manual adjustment - #define MANUAL_PROBE_START_Z 0.2 // (mm) Comment out to use the last-measured height +// Set a height for the start of manual adjustment +#define MANUAL_PROBE_START_Z 0.2 // (mm) Comment out to use the last-measured height #endif #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL) - /** - * Gradually reduce leveling correction until a set height is reached, - * at which point movement will be level to the machine's XY plane. - * The height can be set with M420 Z - */ - #define ENABLE_LEVELING_FADE_HEIGHT - #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) - #define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height. - #endif +/** + * Gradually reduce leveling correction until a set height is reached, + * at which point movement will be level to the machine's XY plane. + * The height can be set with M420 Z + */ +#define ENABLE_LEVELING_FADE_HEIGHT +#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) +#define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height. +#endif - /** - * For Cartesian machines, instead of dividing moves on mesh boundaries, - * split up moves into short segments like a Delta. This follows the - * contours of the bed more closely than edge-to-edge straight moves. - */ - #define SEGMENT_LEVELED_MOVES - #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one) +/** + * For Cartesian machines, instead of dividing moves on mesh boundaries, + * split up moves into short segments like a Delta. This follows the + * contours of the bed more closely than edge-to-edge straight moves. + */ +#define SEGMENT_LEVELED_MOVES +#define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one) - /** - * Enable the G26 Mesh Validation Pattern tool. - */ - //#define G26_MESH_VALIDATION - #if ENABLED(G26_MESH_VALIDATION) - #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle. - #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26. - #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26. - #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26. - #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves. - #define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves. - #define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) used by default between mesh test elements. - #endif +/** + * Enable the G26 Mesh Validation Pattern tool. + */ +// #define G26_MESH_VALIDATION +#if ENABLED(G26_MESH_VALIDATION) +#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle. +#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26. +#define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26. +#define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26. +#define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves. +#define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves. +#define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) used by default between mesh test elements. +#endif #endif #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) - // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 - #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X +// Set the number of grid points per dimension. +#define GRID_MAX_POINTS_X 5 +#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X - // Probe along the Y axis, advancing X after each column - //#define PROBE_Y_FIRST +// Probe along the Y axis, advancing X after each column +// #define PROBE_Y_FIRST - #if ENABLED(AUTO_BED_LEVELING_BILINEAR) +#if ENABLED(AUTO_BED_LEVELING_BILINEAR) - // Beyond the probed grid, continue the implied tilt? - // Default is to maintain the height of the nearest edge. - //#define EXTRAPOLATE_BEYOND_GRID +// Beyond the probed grid, continue the implied tilt? +// Default is to maintain the height of the nearest edge. +// #define EXTRAPOLATE_BEYOND_GRID - // - // Subdivision of the grid by Catmull-Rom method. - // Synthesizes intermediate points to produce a more detailed mesh. - // - //#define ABL_BILINEAR_SUBDIVISION - #if ENABLED(ABL_BILINEAR_SUBDIVISION) - // Number of subdivisions between probe points - #define BILINEAR_SUBDIVISIONS 3 - #endif +// +// Subdivision of the grid by Catmull-Rom method. +// Synthesizes intermediate points to produce a more detailed mesh. +// +// #define ABL_BILINEAR_SUBDIVISION +#if ENABLED(ABL_BILINEAR_SUBDIVISION) +// Number of subdivisions between probe points +#define BILINEAR_SUBDIVISIONS 3 +#endif - #endif +#endif #elif ENABLED(AUTO_BED_LEVELING_UBL) - //=========================================================================== - //========================= Unified Bed Leveling ============================ - //=========================================================================== +//=========================================================================== +//========================= Unified Bed Leveling ============================ +//=========================================================================== - //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh +// #define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh - #define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed - #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited. - #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X +#define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed +#define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited. +#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X - //#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points +// #define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points - #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle - #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500 +#define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle +#define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500 - //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used - // as the Z-Height correction value. +// #define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used +// as the Z-Height correction value. - //#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh +// #define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh #elif ENABLED(MESH_BED_LEVELING) - //=========================================================================== - //=================================== Mesh ================================== - //=========================================================================== +//=========================================================================== +//=================================== Mesh ================================== +//=========================================================================== - #define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed - #define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited. - #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X +#define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed +#define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited. +#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS +// #define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS #endif // BED_LEVELING @@ -2051,65 +2084,65 @@ * Add a bed leveling sub-menu for ABL or MBL. * Include a guided procedure if manual probing is enabled. */ -//#define LCD_BED_LEVELING +// #define LCD_BED_LEVELING #if ENABLED(LCD_BED_LEVELING) - #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. - #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment - //#define MESH_EDIT_MENU // Add a menu to edit mesh points +#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. +#define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment +// #define MESH_EDIT_MENU // Add a menu to edit mesh points #endif // Add a menu item to move between bed corners for manual bed adjustment -//#define LCD_BED_TRAMMING +// #define LCD_BED_TRAMMING #if ENABLED(LCD_BED_TRAMMING) - #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets - #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at tramming points - #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between tramming points - //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner - //#define BED_TRAMMING_USE_PROBE - #if ENABLED(BED_TRAMMING_USE_PROBE) - #define BED_TRAMMING_PROBE_TOLERANCE 0.1 // (mm) - #define BED_TRAMMING_VERIFY_RAISED // After adjustment triggers the probe, re-probe to verify - //#define BED_TRAMMING_AUDIO_FEEDBACK - #endif +#define BED_TRAMMING_INSET_LFRB {30, 30, 30, 30} // (mm) Left, Front, Right, Back insets +#define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at tramming points +#define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between tramming points +// #define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner +// #define BED_TRAMMING_USE_PROBE +#if ENABLED(BED_TRAMMING_USE_PROBE) +#define BED_TRAMMING_PROBE_TOLERANCE 0.1 // (mm) +#define BED_TRAMMING_VERIFY_RAISED // After adjustment triggers the probe, re-probe to verify +// #define BED_TRAMMING_AUDIO_FEEDBACK +#endif - /** - * Corner Leveling Order - * - * Set 2 or 4 points. When 2 points are given, the 3rd is the center of the opposite edge. - * - * LF Left-Front RF Right-Front - * LB Left-Back RB Right-Back - * - * Examples: - * - * Default {LF,RB,LB,RF} {LF,RF} {LB,LF} - * LB --------- RB LB --------- RB LB --------- RB LB --------- RB - * | 4 3 | | 3 2 | | <3> | | 1 | - * | | | | | | | <3>| - * | 1 2 | | 1 4 | | 1 2 | | 2 | - * LF --------- RF LF --------- RF LF --------- RF LF --------- RF - */ - #define BED_TRAMMING_LEVELING_ORDER { LF, RF, RB, LB } +/** + * Corner Leveling Order + * + * Set 2 or 4 points. When 2 points are given, the 3rd is the center of the opposite edge. + * + * LF Left-Front RF Right-Front + * LB Left-Back RB Right-Back + * + * Examples: + * + * Default {LF,RB,LB,RF} {LF,RF} {LB,LF} + * LB --------- RB LB --------- RB LB --------- RB LB --------- RB + * | 4 3 | | 3 2 | | <3> | | 1 | + * | | | | | | | <3>| + * | 1 2 | | 1 4 | | 1 2 | | 2 | + * LF --------- RF LF --------- RF LF --------- RF LF --------- RF + */ +#define BED_TRAMMING_LEVELING_ORDER {LF, RF, RB, LB} #endif // @section homing // The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 +// #define BED_CENTER_AT_0_0 // Manually set the home position. Leave these undefined for automatic settings. // For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 -//#define MANUAL_I_HOME_POS 0 -//#define MANUAL_J_HOME_POS 0 -//#define MANUAL_K_HOME_POS 0 -//#define MANUAL_U_HOME_POS 0 -//#define MANUAL_V_HOME_POS 0 -//#define MANUAL_W_HOME_POS 0 +// #define MANUAL_X_HOME_POS 0 +// #define MANUAL_Y_HOME_POS 0 +// #define MANUAL_Z_HOME_POS 0 +// #define MANUAL_I_HOME_POS 0 +// #define MANUAL_J_HOME_POS 0 +// #define MANUAL_K_HOME_POS 0 +// #define MANUAL_U_HOME_POS 0 +// #define MANUAL_V_HOME_POS 0 +// #define MANUAL_W_HOME_POS 0 /** * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. @@ -2118,15 +2151,15 @@ * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ -//#define Z_SAFE_HOMING +#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT X_CENTER // (mm) X point for Z homing - #define Z_SAFE_HOMING_Y_POINT Y_CENTER // (mm) Y point for Z homing +#define Z_SAFE_HOMING_X_POINT X_CENTER // (mm) X point for Z homing +#define Z_SAFE_HOMING_Y_POINT Y_CENTER // (mm) Y point for Z homing #endif // Homing speeds (linear=mm/min, rotational=°/min) -#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +#define HOMING_FEEDRATE_MM_M {(20 * 60), (20 * 60), (4 * 60)} // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -2161,32 +2194,32 @@ * +-------------->X +-------------->X +-------------->Y * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR */ -//#define SKEW_CORRECTION +// #define SKEW_CORRECTION #if ENABLED(SKEW_CORRECTION) - // Input all length measurements here: - #define XY_DIAG_AC 282.8427124746 - #define XY_DIAG_BD 282.8427124746 - #define XY_SIDE_AD 200 +// Input all length measurements here: +#define XY_DIAG_AC 282.8427124746 +#define XY_DIAG_BD 282.8427124746 +#define XY_SIDE_AD 200 - // Or, set the XY skew factor directly: - //#define XY_SKEW_FACTOR 0.0 +// Or, set the XY skew factor directly: +// #define XY_SKEW_FACTOR 0.0 - //#define SKEW_CORRECTION_FOR_Z - #if ENABLED(SKEW_CORRECTION_FOR_Z) - #define XZ_DIAG_AC 282.8427124746 - #define XZ_DIAG_BD 282.8427124746 - #define YZ_DIAG_AC 282.8427124746 - #define YZ_DIAG_BD 282.8427124746 - #define YZ_SIDE_AD 200 +// #define SKEW_CORRECTION_FOR_Z +#if ENABLED(SKEW_CORRECTION_FOR_Z) +#define XZ_DIAG_AC 282.8427124746 +#define XZ_DIAG_BD 282.8427124746 +#define YZ_DIAG_AC 282.8427124746 +#define YZ_DIAG_BD 282.8427124746 +#define YZ_SIDE_AD 200 - // Or, set the Z skew factors directly: - //#define XZ_SKEW_FACTOR 0.0 - //#define YZ_SKEW_FACTOR 0.0 - #endif +// Or, set the Z skew factors directly: +// #define XZ_SKEW_FACTOR 0.0 +// #define YZ_SKEW_FACTOR 0.0 +#endif - // Enable this option for M852 to set skew at runtime - //#define SKEW_CORRECTION_GCODE +// Enable this option for M852 to set skew at runtime +// #define SKEW_CORRECTION_GCODE #endif //============================================================================= @@ -2204,13 +2237,13 @@ * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes) * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.) */ -//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 -//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release! -#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash. -#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load +#define EEPROM_SETTINGS // Persistent storage with M500 and M501 +// #define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release! +#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash. +#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load #if ENABLED(EEPROM_SETTINGS) - //#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. - //#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. +// #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. +// #define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. #endif // @section host @@ -2221,38 +2254,38 @@ // When enabled Marlin will send a busy status message to the host // every couple of seconds when it can't accept commands. // -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. -#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating +#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages +#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. +#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating // @section units // // G20/G21 Inch mode support // -//#define INCH_MODE_SUPPORT +// #define INCH_MODE_SUPPORT // // M149 Set temperature units support // -//#define TEMPERATURE_UNITS_SUPPORT +// #define TEMPERATURE_UNITS_SUPPORT // @section temperature // // Preheat Constants - Up to 10 are supported without changes // -#define PREHEAT_1_LABEL "PLA" -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 +#define PREHEAT_1_LABEL "PLA" +#define PREHEAT_1_TEMP_HOTEND 185 +#define PREHEAT_1_TEMP_BED 45 #define PREHEAT_1_TEMP_CHAMBER 35 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" +#define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 +#define PREHEAT_2_TEMP_BED 70 #define PREHEAT_2_TEMP_CHAMBER 35 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 // @section motion @@ -2488,7 +2521,7 @@ * SD Card support is disabled by default. If your controller has an SD slot, * you must uncomment the following option or it won't work. */ -//#define SDSUPPORT +#define SDSUPPORT /** * SD CARD: ENABLE CRC @@ -2577,7 +2610,7 @@ // If you have a speaker that can produce tones, enable it here. // By default Marlin assumes you have a buzzer with a fixed frequency. // -//#define SPEAKER +#define SPEAKER // // The duration and frequency for the UI feedback sound. @@ -2866,7 +2899,10 @@ // // Connect to EXP1 on RAMPS and compatible boards. // -//#define CR10_STOCKDISPLAY +#define CR10_STOCKDISPLAY +#if ENABLED(CR10_STOCKDISPLAY) +#define RET6_12864_LCD // Specific to the SoC (can either be RET / VET) +#endif // // Ender-2 OEM display, a variant of the MKS_MINI_12864 @@ -3255,7 +3291,7 @@ // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not as annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM +#define FAN_SOFT_PWM // Incrementing this by 1 will double the software PWM frequency, // affecting heaters, and the fan if FAN_SOFT_PWM is enabled. diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 519ef50bf3..8160d3f68a 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -21,6 +21,8 @@ */ #pragma once +#define CONFIG_EXAMPLES_DIR "config/examples/Creality/Ender-3 Pro/CrealityV427" + /** * Configuration_adv.h * @@ -885,80 +887,79 @@ //#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (linear=mm, rotational=°) Backoff from endstops after homing //#define XY_COUNTERPART_BACKOFF_MM 0 // (mm) Backoff X after homing Y, and vice-versa -//#define QUICK_HOME // If G28 contains XY do a diagonal move first -//#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X -//#define HOME_Z_FIRST // Home Z first. Requires a real endstop (not a probe). -//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first +#define QUICK_HOME // If G28 contains XY do a diagonal move first +// #define HOME_Y_BEFORE_X // If G28 contains XY home Y before X +// #define HOME_Z_FIRST // Home Z first. Requires a real endstop (not a probe). +// #define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first // @section bltouch #if ENABLED(BLTOUCH) - /** - * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES - * Do not activate settings that the probe might not understand. Clones might misunderstand - * advanced commands. - * - * Note: If the probe is not deploying, do a "Reset" and "Self-Test" and then check the - * wiring of the BROWN, RED and ORANGE wires. - * - * Note: If the trigger signal of your probe is not being recognized, it has been very often - * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable" - * like they would be with a real switch. So please check the wiring first. - * - * Settings for all BLTouch and clone probes: - */ +/** + * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES + * Do not activate settings that the probe might not understand. Clones might misunderstand + * advanced commands. + * + * Note: If the probe is not deploying, do a "Reset" and "Self-Test" and then check the + * wiring of the BROWN, RED and ORANGE wires. + * + * Note: If the trigger signal of your probe is not being recognized, it has been very often + * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable" + * like they would be with a real switch. So please check the wiring first. + * + * Settings for all BLTouch and clone probes: + */ - // Safety: The probe needs time to recognize the command. - // Minimum command delay (ms). Enable and increase if needed. - //#define BLTOUCH_DELAY 500 +// Safety: The probe needs time to recognize the command. +// Minimum command delay (ms). Enable and increase if needed. +// #define BLTOUCH_DELAY 500 - /** - * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones: - */ +/** + * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones: + */ - // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful - // in special cases, like noisy or filtered input configurations. - //#define BLTOUCH_FORCE_SW_MODE +// Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful +// in special cases, like noisy or filtered input configurations. +// #define BLTOUCH_FORCE_SW_MODE - /** - * Settings for BLTouch Smart 3.0 and 3.1 - * Summary: - * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes - * - High-Speed mode - * - Disable LCD voltage options - */ +/** + * Settings for BLTouch Smart 3.0 and 3.1 + * Summary: + * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes + * - High-Speed mode + * - Disable LCD voltage options + */ - /** - * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller! - * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup. - * If disabled, OD mode is the hard-coded default on 3.0 - * On startup, Marlin will compare its EEPROM to this value. If the selected mode - * differs, a mode set EEPROM write will be completed at initialization. - * Use the option below to force an EEPROM write to a V3.1 probe regardless. - */ - //#define BLTOUCH_SET_5V_MODE +/** + * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller! + * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup. + * If disabled, OD mode is the hard-coded default on 3.0 + * On startup, Marlin will compare its EEPROM to this value. If the selected mode + * differs, a mode set EEPROM write will be completed at initialization. + * Use the option below to force an EEPROM write to a V3.1 probe regardless. + */ +// #define BLTOUCH_SET_5V_MODE - // Safety: Enable voltage mode settings in the LCD menu. - //#define BLTOUCH_LCD_VOLTAGE_MENU +// Safety: Enable voltage mode settings in the LCD menu. +// #define BLTOUCH_LCD_VOLTAGE_MENU - /** - * Safety: Activate if connecting a probe with an unknown voltage mode. - * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0 - * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write ) - * To preserve the life of the probe, use this once then turn it off and re-flash. - */ - //#define BLTOUCH_FORCE_MODE_SET - - /** - * Enable "HIGH SPEED" option for probing. - * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems. - * This feature was designed for Deltabots with very fast Z moves; however, higher speed Cartesians - * might be able to use it. If the machine can't raise Z fast enough the BLTouch may go into ALARM. - * - * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset. - */ - //#define BLTOUCH_HS_MODE true +/** + * Safety: Activate if connecting a probe with an unknown voltage mode. + * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0 + * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write ) + * To preserve the life of the probe, use this once then turn it off and re-flash. + */ +// #define BLTOUCH_FORCE_MODE_SET +/** + * Enable "HIGH SPEED" option for probing. + * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems. + * This feature was designed for Deltabots with very fast Z moves; however, higher speed Cartesians + * might be able to use it. If the machine can't raise Z fast enough the BLTouch may go into ALARM. + * + * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset. + */ +// #define BLTOUCH_HS_MODE true #endif // BLTOUCH @@ -968,94 +969,97 @@ * Z Steppers Auto-Alignment * Add the G34 command to align multiple Z steppers using a bed probe. */ -//#define Z_STEPPER_AUTO_ALIGN +// #define Z_STEPPER_AUTO_ALIGN #if ENABLED(Z_STEPPER_AUTO_ALIGN) - /** - * Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]] - * These positions are machine-relative and do not shift with the M206 home offset! - * If not defined, probe limits will be used. - * Override with 'M422 S X Y'. - */ - //#define Z_STEPPER_ALIGN_XY { { 10, 190 }, { 100, 10 }, { 190, 190 } } +/** + * Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]] + * These positions are machine-relative and do not shift with the M206 home offset! + * If not defined, probe limits will be used. + * Override with 'M422 S X Y'. + */ +// #define Z_STEPPER_ALIGN_XY { { 10, 190 }, { 100, 10 }, { 190, 190 } } - /** - * Orientation for the automatically-calculated probe positions. - * Override Z stepper align points with 'M422 S X Y' - * - * 2 Steppers: (0) (1) - * | | 2 | - * | 1 2 | | - * | | 1 | - * - * 3 Steppers: (0) (1) (2) (3) - * | 3 | 1 | 2 1 | 2 | - * | | 3 | | 3 | - * | 1 2 | 2 | 3 | 1 | - * - * 4 Steppers: (0) (1) (2) (3) - * | 4 3 | 1 4 | 2 1 | 3 2 | - * | | | | | - * | 1 2 | 2 3 | 3 4 | 4 1 | - */ - #ifndef Z_STEPPER_ALIGN_XY - //#define Z_STEPPERS_ORIENTATION 0 - #endif +/** + * Orientation for the automatically-calculated probe positions. + * Override Z stepper align points with 'M422 S X Y' + * + * 2 Steppers: (0) (1) + * | | 2 | + * | 1 2 | | + * | | 1 | + * + * 3 Steppers: (0) (1) (2) (3) + * | 3 | 1 | 2 1 | 2 | + * | | 3 | | 3 | + * | 1 2 | 2 | 3 | 1 | + * + * 4 Steppers: (0) (1) (2) (3) + * | 4 3 | 1 4 | 2 1 | 3 2 | + * | | | | | + * | 1 2 | 2 3 | 3 4 | 4 1 | + */ +#ifndef Z_STEPPER_ALIGN_XY +// #define Z_STEPPERS_ORIENTATION 0 +#endif - /** - * Z Stepper positions for more rapid convergence in bed alignment. - * Requires 3 or 4 Z steppers. - * - * Define Stepper XY positions for Z1, Z2, Z3... corresponding to the screw - * positions in the bed carriage, with one position per Z stepper in stepper - * driver order. - */ - //#define Z_STEPPER_ALIGN_STEPPER_XY { { 210.7, 102.5 }, { 152.6, 220.0 }, { 94.5, 102.5 } } +/** + * Z Stepper positions for more rapid convergence in bed alignment. + * Requires 3 or 4 Z steppers. + * + * Define Stepper XY positions for Z1, Z2, Z3... corresponding to the screw + * positions in the bed carriage, with one position per Z stepper in stepper + * driver order. + */ +// #define Z_STEPPER_ALIGN_STEPPER_XY { { 210.7, 102.5 }, { 152.6, 220.0 }, { 94.5, 102.5 } } - #ifndef Z_STEPPER_ALIGN_STEPPER_XY - // Amplification factor. Used to scale the correction step up or down in case - // the stepper (spindle) position is farther out than the test point. - #define Z_STEPPER_ALIGN_AMP 1.0 // Use a value > 1.0 NOTE: This may cause instability! - #endif +#ifndef Z_STEPPER_ALIGN_STEPPER_XY +// Amplification factor. Used to scale the correction step up or down in case +// the stepper (spindle) position is farther out than the test point. +#define Z_STEPPER_ALIGN_AMP 1.0 // Use a value > 1.0 NOTE: This may cause instability! +#endif - // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm - #define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle - #define Z_STEPPER_ALIGN_ITERATIONS 5 // Number of iterations to apply during alignment - #define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this - #define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done? - // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights? - // Re-homing might be more precise in reproducing the actual 'G28 Z' homing height, especially on an uneven bed. - #define HOME_AFTER_G34 +// On a 300mm bed a 5% grade would give a misalignment of ~1.5cm +#define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle +#define Z_STEPPER_ALIGN_ITERATIONS 5 // Number of iterations to apply during alignment +#define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this +#define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done? +// After G34, re-home Z (G28 Z) or just calculate it from the last probe heights? +// Re-homing might be more precise in reproducing the actual 'G28 Z' homing height, especially on an uneven bed. +#define HOME_AFTER_G34 #endif // // Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. // -//#define ASSISTED_TRAMMING +// #define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) - // Define from 3 to 9 points to probe. - #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } } +// Define from 3 to 9 points to probe. +#define TRAMMING_POINT_XY \ + { \ + {20, 20}, {180, 20}, {180, 180}, { 20, 180 } \ + } - // Define position names for probe points. - #define TRAMMING_POINT_NAME_1 "Front-Left" - #define TRAMMING_POINT_NAME_2 "Front-Right" - #define TRAMMING_POINT_NAME_3 "Back-Right" - #define TRAMMING_POINT_NAME_4 "Back-Left" +// Define position names for probe points. +#define TRAMMING_POINT_NAME_1 "Front-Left" +#define TRAMMING_POINT_NAME_2 "Front-Right" +#define TRAMMING_POINT_NAME_3 "Back-Right" +#define TRAMMING_POINT_NAME_4 "Back-Left" - #define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation - //#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first +#define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation +// #define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first - //#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu +// #define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu - //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment +// #define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment - /** - * Screw thread: - * M3: 30 = Clockwise, 31 = Counter-Clockwise - * M4: 40 = Clockwise, 41 = Counter-Clockwise - * M5: 50 = Clockwise, 51 = Counter-Clockwise - */ - #define TRAMMING_SCREW_THREAD 30 +/** + * Screw thread: + * M3: 30 = Clockwise, 31 = Counter-Clockwise + * M4: 40 = Clockwise, 41 = Counter-Clockwise + * M5: 50 = Clockwise, 51 = Counter-Clockwise + */ +#define TRAMMING_SCREW_THREAD 30 #endif @@ -1082,28 +1086,28 @@ * X<1> Set the given parameters only for the X axis. * Y<1> Set the given parameters only for the Y axis. */ -//#define INPUT_SHAPING_X -//#define INPUT_SHAPING_Y +// #define INPUT_SHAPING_X +// #define INPUT_SHAPING_Y #if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y) - #if ENABLED(INPUT_SHAPING_X) - #define SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. - #define SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). - #endif - #if ENABLED(INPUT_SHAPING_Y) - #define SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. - #define SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). - #endif - //#define SHAPING_MIN_FREQ 20 // By default the minimum of the shaping frequencies. Override to affect SRAM usage. - //#define SHAPING_MAX_STEPRATE 10000 // By default the maximum total step rate of the shaped axes. Override to affect SRAM usage. - //#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters. +#if ENABLED(INPUT_SHAPING_X) +#define SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. +#define SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). +#endif +#if ENABLED(INPUT_SHAPING_Y) +#define SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. +#define SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). +#endif +// #define SHAPING_MIN_FREQ 20 // By default the minimum of the shaping frequencies. Override to affect SRAM usage. +// #define SHAPING_MAX_STEPRATE 10000 // By default the maximum total step rate of the shaped axes. Override to affect SRAM usage. +// #define SHAPING_MENU // Add a menu to the LCD to set shaping parameters. #endif // @section motion -#define AXIS_RELATIVE_MODES { false, false, false, false } +#define AXIS_RELATIVE_MODES {false, false, false, false} // Add a Duplicate option for well-separated conjoined nozzles -//#define MULTI_NOZZLE_DUPLICATION +// #define MULTI_NOZZLE_DUPLICATION // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. #define INVERT_X_STEP_PIN false @@ -1125,27 +1129,27 @@ #define DEFAULT_STEPPER_TIMEOUT_SEC 120 #define DISABLE_IDLE_X #define DISABLE_IDLE_Y -#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! -//#define DISABLE_IDLE_I -//#define DISABLE_IDLE_J -//#define DISABLE_IDLE_K -//#define DISABLE_IDLE_U -//#define DISABLE_IDLE_V -//#define DISABLE_IDLE_W -#define DISABLE_IDLE_E // Shut down all idle extruders +#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! +// #define DISABLE_IDLE_I +// #define DISABLE_IDLE_J +// #define DISABLE_IDLE_K +// #define DISABLE_IDLE_U +// #define DISABLE_IDLE_V +// #define DISABLE_IDLE_W +#define DISABLE_IDLE_E // Shut down all idle extruders // Default Minimum Feedrates for printing and travel moves -#define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum feedrate. Set with M205 S. -#define DEFAULT_MINTRAVELFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum travel feedrate. Set with M205 T. +#define DEFAULT_MINIMUMFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum feedrate. Set with M205 S. +#define DEFAULT_MINTRAVELFEEDRATE 0.0 // (mm/s. °/s for rotational-only moves) Minimum travel feedrate. Set with M205 T. // Minimum time that a segment needs to take as the buffer gets emptied -#define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B. +#define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B. // Slow down the machine if the lookahead buffer is (by default) half full. // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN #if ENABLED(SLOWDOWN) - #define SLOWDOWN_DIVISOR 2 +#define SLOWDOWN_DIVISOR 2 #endif /** @@ -1154,9 +1158,9 @@ * See https://hydraraptor.blogspot.com/2010/12/frequency-limit.html * Use M201 F S to change limits at runtime. */ -//#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F. +// #define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F. #ifdef XY_FREQUENCY_LIMIT - #define XY_FREQUENCY_MIN_PERCENT 5 // (%) Minimum FR percentage to apply. Set with M201 S. +#define XY_FREQUENCY_MIN_PERCENT 5 // (%) Minimum FR percentage to apply. Set with M201 S. #endif // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end @@ -1168,36 +1172,36 @@ // Backlash Compensation // Adds extra movement to axes on direction-changes to account for backlash. // -//#define BACKLASH_COMPENSATION +// #define BACKLASH_COMPENSATION #if ENABLED(BACKLASH_COMPENSATION) - // Define values for backlash distance and correction. - // If BACKLASH_GCODE is enabled these values are the defaults. - #define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (linear=mm, rotational=°) One value for each linear axis - #define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction +// Define values for backlash distance and correction. +// If BACKLASH_GCODE is enabled these values are the defaults. +#define BACKLASH_DISTANCE_MM {0, 0, 0} // (linear=mm, rotational=°) One value for each linear axis +#define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction - // Add steps for motor direction changes on CORE kinematics - //#define CORE_BACKLASH +// Add steps for motor direction changes on CORE kinematics +// #define CORE_BACKLASH - // Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments - // to reduce print artifacts. (Enabling this is costly in memory and computation!) - //#define BACKLASH_SMOOTHING_MM 3 // (mm) +// Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments +// to reduce print artifacts. (Enabling this is costly in memory and computation!) +// #define BACKLASH_SMOOTHING_MM 3 // (mm) - // Add runtime configuration and tuning of backlash values (M425) - //#define BACKLASH_GCODE +// Add runtime configuration and tuning of backlash values (M425) +// #define BACKLASH_GCODE - #if ENABLED(BACKLASH_GCODE) - // Measure the Z backlash when probing (G29) and set with "M425 Z" - #define MEASURE_BACKLASH_WHEN_PROBING +#if ENABLED(BACKLASH_GCODE) +// Measure the Z backlash when probing (G29) and set with "M425 Z" +#define MEASURE_BACKLASH_WHEN_PROBING - #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING) - // When measuring, the probe will move up to BACKLASH_MEASUREMENT_LIMIT - // mm away from point of contact in BACKLASH_MEASUREMENT_RESOLUTION - // increments while checking for the contact to be broken. - #define BACKLASH_MEASUREMENT_LIMIT 0.5 // (mm) - #define BACKLASH_MEASUREMENT_RESOLUTION 0.005 // (mm) - #define BACKLASH_MEASUREMENT_FEEDRATE Z_PROBE_FEEDRATE_SLOW // (mm/min) - #endif - #endif +#if ENABLED(MEASURE_BACKLASH_WHEN_PROBING) +// When measuring, the probe will move up to BACKLASH_MEASUREMENT_LIMIT +// mm away from point of contact in BACKLASH_MEASUREMENT_RESOLUTION +// increments while checking for the contact to be broken. +#define BACKLASH_MEASUREMENT_LIMIT 0.5 // (mm) +#define BACKLASH_MEASUREMENT_RESOLUTION 0.005 // (mm) +#define BACKLASH_MEASUREMENT_FEEDRATE Z_PROBE_FEEDRATE_SLOW // (mm/min) +#endif +#endif #endif /** @@ -1213,60 +1217,60 @@ * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within * ±5mm of true values for G425 to succeed. */ -//#define CALIBRATION_GCODE +// #define CALIBRATION_GCODE #if ENABLED(CALIBRATION_GCODE) - //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." - //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" +// #define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." +// #define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" - #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm +#define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm - #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min - #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min - #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min +#define CALIBRATION_FEEDRATE_SLOW 60 // mm/min +#define CALIBRATION_FEEDRATE_FAST 1200 // mm/min +#define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min - // The following parameters refer to the conical section of the nozzle tip. - #define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm - #define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm +// The following parameters refer to the conical section of the nozzle tip. +#define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm +#define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm - // Uncomment to enable reporting (required for "G425 V", but consumes flash). - //#define CALIBRATION_REPORTING +// Uncomment to enable reporting (required for "G425 V", but consumes flash). +// #define CALIBRATION_REPORTING - // The true location and dimension the cube/bolt/washer on the bed. - #define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0 } // mm - #define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0 } // mm +// The true location and dimension the cube/bolt/washer on the bed. +#define CALIBRATION_OBJECT_CENTER {264.0, -22.0, -2.0} // mm +#define CALIBRATION_OBJECT_DIMENSIONS {10.0, 10.0, 10.0} // mm - // Comment out any sides which are unreachable by the probe. For best - // auto-calibration results, all sides must be reachable. - #define CALIBRATION_MEASURE_RIGHT - #define CALIBRATION_MEASURE_FRONT - #define CALIBRATION_MEASURE_LEFT - #define CALIBRATION_MEASURE_BACK +// Comment out any sides which are unreachable by the probe. For best +// auto-calibration results, all sides must be reachable. +#define CALIBRATION_MEASURE_RIGHT +#define CALIBRATION_MEASURE_FRONT +#define CALIBRATION_MEASURE_LEFT +#define CALIBRATION_MEASURE_BACK - //#define CALIBRATION_MEASURE_IMIN - //#define CALIBRATION_MEASURE_IMAX - //#define CALIBRATION_MEASURE_JMIN - //#define CALIBRATION_MEASURE_JMAX - //#define CALIBRATION_MEASURE_KMIN - //#define CALIBRATION_MEASURE_KMAX - //#define CALIBRATION_MEASURE_UMIN - //#define CALIBRATION_MEASURE_UMAX - //#define CALIBRATION_MEASURE_VMIN - //#define CALIBRATION_MEASURE_VMAX - //#define CALIBRATION_MEASURE_WMIN - //#define CALIBRATION_MEASURE_WMAX +// #define CALIBRATION_MEASURE_IMIN +// #define CALIBRATION_MEASURE_IMAX +// #define CALIBRATION_MEASURE_JMIN +// #define CALIBRATION_MEASURE_JMAX +// #define CALIBRATION_MEASURE_KMIN +// #define CALIBRATION_MEASURE_KMAX +// #define CALIBRATION_MEASURE_UMIN +// #define CALIBRATION_MEASURE_UMAX +// #define CALIBRATION_MEASURE_VMIN +// #define CALIBRATION_MEASURE_VMAX +// #define CALIBRATION_MEASURE_WMIN +// #define CALIBRATION_MEASURE_WMAX - // Probing at the exact top center only works if the center is flat. If - // probing on a screw head or hollow washer, probe near the edges. - //#define CALIBRATION_MEASURE_AT_TOP_EDGES +// Probing at the exact top center only works if the center is flat. If +// probing on a screw head or hollow washer, probe near the edges. +// #define CALIBRATION_MEASURE_AT_TOP_EDGES - // Define the pin to read during calibration - #ifndef CALIBRATION_PIN - //#define CALIBRATION_PIN -1 // Define here to override the default pin - #define CALIBRATION_PIN_INVERTING false // Set to true to invert the custom pin - //#define CALIBRATION_PIN_PULLDOWN - #define CALIBRATION_PIN_PULLUP - #endif +// Define the pin to read during calibration +#ifndef CALIBRATION_PIN +// #define CALIBRATION_PIN -1 // Define here to override the default pin +#define CALIBRATION_PIN_INVERTING false // Set to true to invert the custom pin +// #define CALIBRATION_PIN_PULLDOWN +#define CALIBRATION_PIN_PULLUP +#endif #endif /** @@ -1275,21 +1279,21 @@ * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the * lowest stepping frequencies. */ -//#define ADAPTIVE_STEP_SMOOTHING +// #define ADAPTIVE_STEP_SMOOTHING /** * Custom Microstepping * Override as-needed for your setup. Up to 3 MS pins are supported. */ -//#define MICROSTEP1 LOW,LOW,LOW -//#define MICROSTEP2 HIGH,LOW,LOW -//#define MICROSTEP4 LOW,HIGH,LOW -//#define MICROSTEP8 HIGH,HIGH,LOW -//#define MICROSTEP16 LOW,LOW,HIGH -//#define MICROSTEP32 HIGH,LOW,HIGH +// #define MICROSTEP1 LOW,LOW,LOW +// #define MICROSTEP2 HIGH,LOW,LOW +// #define MICROSTEP4 LOW,HIGH,LOW +// #define MICROSTEP8 HIGH,HIGH,LOW +// #define MICROSTEP16 LOW,LOW,HIGH +// #define MICROSTEP32 HIGH,LOW,HIGH // Microstep settings (Requires a board with pins named X_MS1, X_MS2, etc.) -#define MICROSTEP_MODES { 16, 16, 16, 16, 16, 16 } // [1,2,4,8,16] +#define MICROSTEP_MODES {16, 16, 16, 16, 16, 16} // [1,2,4,8,16] /** * @section stepper motor current @@ -1311,36 +1315,36 @@ * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2 */ -//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps -//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) -//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis +// #define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps +// #define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +// #define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis /** * I2C-based DIGIPOTs (e.g., Azteeg X3 Pro) */ -//#define DIGIPOT_MCP4018 // Requires https://github.com/felias-fogg/SlowSoftI2CMaster -//#define DIGIPOT_MCP4451 +// #define DIGIPOT_MCP4018 // Requires https://github.com/felias-fogg/SlowSoftI2CMaster +// #define DIGIPOT_MCP4451 #if EITHER(DIGIPOT_MCP4018, DIGIPOT_MCP4451) - #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT:4 AZTEEG_X3_PRO:8 MKS_SBASE:5 MIGHTYBOARD_REVE:5 +#define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT:4 AZTEEG_X3_PRO:8 MKS_SBASE:5 MIGHTYBOARD_REVE:5 - // Actual motor currents in Amps. The number of entries must match DIGIPOT_I2C_NUM_CHANNELS. - // These correspond to the physical drivers, so be mindful if the order is changed. - #define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 } // AZTEEG_X3_PRO +// Actual motor currents in Amps. The number of entries must match DIGIPOT_I2C_NUM_CHANNELS. +// These correspond to the physical drivers, so be mindful if the order is changed. +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} // AZTEEG_X3_PRO - //#define DIGIPOT_USE_RAW_VALUES // Use DIGIPOT_MOTOR_CURRENT raw wiper values (instead of A4988 motor currents) +// #define DIGIPOT_USE_RAW_VALUES // Use DIGIPOT_MOTOR_CURRENT raw wiper values (instead of A4988 motor currents) - /** - * Common slave addresses: - * - * A (A shifted) B (B shifted) IC - * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451 - * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451 - * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451 - * AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451 - * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018 - */ - //#define DIGIPOT_I2C_ADDRESS_A 0x2C // Unshifted slave address for first DIGIPOT - //#define DIGIPOT_I2C_ADDRESS_B 0x2D // Unshifted slave address for second DIGIPOT +/** + * Common slave addresses: + * + * A (A shifted) B (B shifted) IC + * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451 + * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451 + * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451 + * AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451 + * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018 + */ +// #define DIGIPOT_I2C_ADDRESS_A 0x2C // Unshifted slave address for first DIGIPOT +// #define DIGIPOT_I2C_ADDRESS_B 0x2D // Unshifted slave address for second DIGIPOT #endif //=========================================================================== @@ -1350,412 +1354,412 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel - #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines - #if IS_ULTIPANEL - #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" - #define ULTIPANEL_FEEDMULTIPLY // Encoder sets the feedrate multiplier on the Status Screen - #endif +#define MANUAL_FEEDRATE {50 * 60, 50 * 60, 4 * 60, 2 * 60} // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel +#define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines +#if IS_ULTIPANEL +#define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" +#define ULTIPANEL_FEEDMULTIPLY // Encoder sets the feedrate multiplier on the Status Screen +#endif #endif // Change values more rapidly when the encoder is rotated faster #define ENCODER_RATE_MULTIPLIER #if ENABLED(ENCODER_RATE_MULTIPLIER) - #define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed - #define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed +#define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed +#define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed #endif // Play a beep when the feedrate is changed from the Status Screen -//#define BEEP_ON_FEEDRATE_CHANGE +// #define BEEP_ON_FEEDRATE_CHANGE #if ENABLED(BEEP_ON_FEEDRATE_CHANGE) - #define FEEDRATE_CHANGE_BEEP_DURATION 10 - #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 +#define FEEDRATE_CHANGE_BEEP_DURATION 10 +#define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 #endif // // LCD Backlight Timeout // -//#define LCD_BACKLIGHT_TIMEOUT_MINS 1 // (minutes) Timeout before turning off the backlight +// #define LCD_BACKLIGHT_TIMEOUT_MINS 1 // (minutes) Timeout before turning off the backlight #if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - //#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu - #if ENABLED(PROBE_OFFSET_WIZARD) - /** - * Enable to init the Probe Z-Offset when starting the Wizard. - * Use a height slightly above the estimated nozzle-to-probe Z offset. - * For example, with an offset of -5, consider a starting height of -4. - */ - //#define PROBE_OFFSET_WIZARD_START_Z -4.0 +#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu +#if ENABLED(PROBE_OFFSET_WIZARD) +/** + * Enable to init the Probe Z-Offset when starting the Wizard. + * Use a height slightly above the estimated nozzle-to-probe Z offset. + * For example, with an offset of -5, consider a starting height of -4. + */ +// #define PROBE_OFFSET_WIZARD_START_Z -4.0 - // Set a convenient position to do the calibration (probing point and nozzle/bed-distance) - //#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } - #endif +// Set a convenient position to do the calibration (probing point and nozzle/bed-distance) +// #define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } +#endif #endif #if HAS_MARLINUI_MENU - #if HAS_BED_PROBE - // Add calibration in the Probe Offsets menu to compensate for X-axis twist. - //#define X_AXIS_TWIST_COMPENSATION - #if ENABLED(X_AXIS_TWIST_COMPENSATION) - /** - * Enable to init the Probe Z-Offset when starting the Wizard. - * Use a height slightly above the estimated nozzle-to-probe Z offset. - * For example, with an offset of -5, consider a starting height of -4. - */ - #define XATC_START_Z 0.0 - #define XATC_MAX_POINTS 3 // Number of points to probe in the wizard - #define XATC_Y_POSITION Y_CENTER // (mm) Y position to probe - #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points - #endif +#if HAS_BED_PROBE +// Add calibration in the Probe Offsets menu to compensate for X-axis twist. +// #define X_AXIS_TWIST_COMPENSATION +#if ENABLED(X_AXIS_TWIST_COMPENSATION) +/** + * Enable to init the Probe Z-Offset when starting the Wizard. + * Use a height slightly above the estimated nozzle-to-probe Z offset. + * For example, with an offset of -5, consider a starting height of -4. + */ +#define XATC_START_Z 0.0 +#define XATC_MAX_POINTS 3 // Number of points to probe in the wizard +#define XATC_Y_POSITION Y_CENTER // (mm) Y position to probe +#define XATC_Z_OFFSETS {0, 0, 0} // Z offsets for X axis sample points +#endif - // Show Deploy / Stow Probe options in the Motion menu. - #define PROBE_DEPLOY_STOW_MENU - #endif +// Show Deploy / Stow Probe options in the Motion menu. +#define PROBE_DEPLOY_STOW_MENU +#endif - // Include a page of printer information in the LCD Main Menu - //#define LCD_INFO_MENU - #if ENABLED(LCD_INFO_MENU) - //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages - #endif +// Include a page of printer information in the LCD Main Menu +#define LCD_INFO_MENU +#if ENABLED(LCD_INFO_MENU) +// #define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages +#endif - // BACK menu items keep the highlight at the top - //#define TURBO_BACK_MENU_ITEM +// BACK menu items keep the highlight at the top +// #define TURBO_BACK_MENU_ITEM - // Insert a menu for preheating at the top level to allow for quick access - //#define PREHEAT_SHORTCUT_MENU_ITEM +// Insert a menu for preheating at the top level to allow for quick access +// #define PREHEAT_SHORTCUT_MENU_ITEM #endif // HAS_MARLINUI_MENU #if ANY(HAS_DISPLAY, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI) - //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu - #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state +// #define SOUND_MENU_ITEM // Add a mute option to the LCD menu +#define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state #endif #if EITHER(HAS_DISPLAY, DWIN_LCD_PROUI) - // The timeout to return to the status screen from sub-menus - //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) +// The timeout to return to the status screen from sub-menus +// #define LCD_TIMEOUT_TO_STATUS 15000 // (ms) - #if ENABLED(SHOW_BOOTSCREEN) - #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) - #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) - #endif - #endif +#if ENABLED(SHOW_BOOTSCREEN) +#define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) +#if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) +#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) +#endif +#endif - // Scroll a longer status message into view - //#define STATUS_MESSAGE_SCROLLING +// Scroll a longer status message into view +#define STATUS_MESSAGE_SCROLLING - // Apply a timeout to low-priority status messages - //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) +// Apply a timeout to low-priority status messages +// #define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) - // On the Info Screen, display XY with one decimal place when possible - //#define LCD_DECIMAL_SMALL_XY +// On the Info Screen, display XY with one decimal place when possible +// #define LCD_DECIMAL_SMALL_XY - // Show the E position (filament used) during printing - //#define LCD_SHOW_E_TOTAL +// Show the E position (filament used) during printing +// #define LCD_SHOW_E_TOTAL - /** - * LED Control Menu - * Add LED Control to the LCD menu - */ - //#define LED_CONTROL_MENU - #if ENABLED(LED_CONTROL_MENU) - #define LED_COLOR_PRESETS // Enable the Preset Color menu option - //#define NEO2_COLOR_PRESETS // Enable a second NeoPixel Preset Color menu option - #if ENABLED(LED_COLOR_PRESETS) - #define LED_USER_PRESET_RED 255 // User defined RED value - #define LED_USER_PRESET_GREEN 128 // User defined GREEN value - #define LED_USER_PRESET_BLUE 0 // User defined BLUE value - #define LED_USER_PRESET_WHITE 255 // User defined WHITE value - #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity - //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup - #endif - #if ENABLED(NEO2_COLOR_PRESETS) - #define NEO2_USER_PRESET_RED 255 // User defined RED value - #define NEO2_USER_PRESET_GREEN 128 // User defined GREEN value - #define NEO2_USER_PRESET_BLUE 0 // User defined BLUE value - #define NEO2_USER_PRESET_WHITE 255 // User defined WHITE value - #define NEO2_USER_PRESET_BRIGHTNESS 255 // User defined intensity - //#define NEO2_USER_PRESET_STARTUP // Have the printer display the user preset color on startup for the second strip - #endif - #endif +/** + * LED Control Menu + * Add LED Control to the LCD menu + */ +// #define LED_CONTROL_MENU +#if ENABLED(LED_CONTROL_MENU) +#define LED_COLOR_PRESETS // Enable the Preset Color menu option +// #define NEO2_COLOR_PRESETS // Enable a second NeoPixel Preset Color menu option +#if ENABLED(LED_COLOR_PRESETS) +#define LED_USER_PRESET_RED 255 // User defined RED value +#define LED_USER_PRESET_GREEN 128 // User defined GREEN value +#define LED_USER_PRESET_BLUE 0 // User defined BLUE value +#define LED_USER_PRESET_WHITE 255 // User defined WHITE value +#define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity +// #define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup +#endif +#if ENABLED(NEO2_COLOR_PRESETS) +#define NEO2_USER_PRESET_RED 255 // User defined RED value +#define NEO2_USER_PRESET_GREEN 128 // User defined GREEN value +#define NEO2_USER_PRESET_BLUE 0 // User defined BLUE value +#define NEO2_USER_PRESET_WHITE 255 // User defined WHITE value +#define NEO2_USER_PRESET_BRIGHTNESS 255 // User defined intensity +// #define NEO2_USER_PRESET_STARTUP // Have the printer display the user preset color on startup for the second strip +#endif +#endif #endif // HAS_DISPLAY || DWIN_LCD_PROUI // Add 'M73' to set print job progress, overrides Marlin's built-in estimate -//#define SET_PROGRESS_MANUALLY +// #define SET_PROGRESS_MANUALLY #if ENABLED(SET_PROGRESS_MANUALLY) - #define SET_PROGRESS_PERCENT // Add 'P' parameter to set percentage done - #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time - //#define SET_INTERACTION_TIME // Add 'C' parameter to set time until next filament change or other user interaction - //#define M73_REPORT // Report M73 values to host - #if BOTH(M73_REPORT, SDSUPPORT) - #define M73_REPORT_SD_ONLY // Report only when printing from SD - #endif +#define SET_PROGRESS_PERCENT // Add 'P' parameter to set percentage done +#define SET_REMAINING_TIME // Add 'R' parameter to set remaining time +// #define SET_INTERACTION_TIME // Add 'C' parameter to set time until next filament change or other user interaction +// #define M73_REPORT // Report M73 values to host +#if BOTH(M73_REPORT, SDSUPPORT) +#define M73_REPORT_SD_ONLY // Report only when printing from SD +#endif #endif // LCD Print Progress options. Multiple times may be displayed in turn. #if HAS_DISPLAY && EITHER(SDSUPPORT, SET_PROGRESS_MANUALLY) - #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) - #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') - //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') - #if ENABLED(SET_INTERACTION_TIME) - #define SHOW_INTERACTION_TIME // Display time until next user interaction ('C' = filament change) - #endif - //#define PRINT_PROGRESS_SHOW_DECIMALS // Show/report progress with decimal digits, not all UIs support this +#define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) +#define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') +// #define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') +#if ENABLED(SET_INTERACTION_TIME) +#define SHOW_INTERACTION_TIME // Display time until next user interaction ('C' = filament change) +#endif +// #define PRINT_PROGRESS_SHOW_DECIMALS // Show/report progress with decimal digits, not all UIs support this - #if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) - //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing - #if ENABLED(LCD_PROGRESS_BAR) - #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar - #define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message - #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever) - //#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it - //#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar - #endif - #endif +#if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL) +// #define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing +#if ENABLED(LCD_PROGRESS_BAR) +#define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar +#define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message +#define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever) +// #define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it +// #define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar +#endif +#endif #endif #if ENABLED(SDSUPPORT) - /** - * SD Card SPI Speed - * May be required to resolve "volume init" errors. - * - * Enable and set to SPI_HALF_SPEED, SPI_QUARTER_SPEED, or SPI_EIGHTH_SPEED - * otherwise full speed will be applied. - * - * :['SPI_HALF_SPEED', 'SPI_QUARTER_SPEED', 'SPI_EIGHTH_SPEED'] - */ - //#define SD_SPI_SPEED SPI_HALF_SPEED +/** + * SD Card SPI Speed + * May be required to resolve "volume init" errors. + * + * Enable and set to SPI_HALF_SPEED, SPI_QUARTER_SPEED, or SPI_EIGHTH_SPEED + * otherwise full speed will be applied. + * + * :['SPI_HALF_SPEED', 'SPI_QUARTER_SPEED', 'SPI_EIGHTH_SPEED'] + */ +// #define SD_SPI_SPEED SPI_HALF_SPEED - // The standard SD detect circuit reads LOW when media is inserted and HIGH when empty. - // Enable this option and set to HIGH if your SD cards are incorrectly detected. - //#define SD_DETECT_STATE HIGH +// The standard SD detect circuit reads LOW when media is inserted and HIGH when empty. +// Enable this option and set to HIGH if your SD cards are incorrectly detected. +// #define SD_DETECT_STATE HIGH - //#define SD_IGNORE_AT_STARTUP // Don't mount the SD card when starting up - //#define SDCARD_READONLY // Read-only SD card (to save over 2K of flash) +// #define SD_IGNORE_AT_STARTUP // Don't mount the SD card when starting up +// #define SDCARD_READONLY // Read-only SD card (to save over 2K of flash) - //#define GCODE_REPEAT_MARKERS // Enable G-code M808 to set repeat markers and do looping +// #define GCODE_REPEAT_MARKERS // Enable G-code M808 to set repeat markers and do looping - #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls +#define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls - #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished - #define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place +#define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished +#define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place - // Reverse SD sort to show "more recent" files first, according to the card's FAT. - // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended. - #define SDCARD_RATHERRECENTFIRST +// Reverse SD sort to show "more recent" files first, according to the card's FAT. +// Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended. +#define SDCARD_RATHERRECENTFIRST - #define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing +#define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing - //#define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM - //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files +// #define NO_SD_AUTOSTART // Remove auto#.g file support completely to save some Flash, SRAM +// #define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files - //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted +// #define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted - //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu +// #define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu - #define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") +#define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") - #if ENABLED(PRINTER_EVENT_LEDS) - #define PE_LEDS_COMPLETED_TIME (30*60) // (seconds) Time to keep the LED "done" color before restoring normal illumination - #endif +#if ENABLED(PRINTER_EVENT_LEDS) +#define PE_LEDS_COMPLETED_TIME (30 * 60) // (seconds) Time to keep the LED "done" color before restoring normal illumination +#endif - /** - * Continue after Power-Loss (Creality3D) - * - * Store the current state to the SD Card at the start of each layer - * during SD printing. If the recovery file is found at boot time, present - * an option on the LCD screen to continue the print from the last-known - * point in the file. - */ - //#define POWER_LOSS_RECOVERY - #if ENABLED(POWER_LOSS_RECOVERY) - #define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500) - //#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss - //#define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS) - //#define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module. - //#define POWER_LOSS_STATE HIGH // State of pin indicating power loss - //#define POWER_LOSS_PULLUP // Set pullup / pulldown as appropriate for your sensor - //#define POWER_LOSS_PULLDOWN - //#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume - //#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power. +/** + * Continue after Power-Loss (Creality3D) + * + * Store the current state to the SD Card at the start of each layer + * during SD printing. If the recovery file is found at boot time, present + * an option on the LCD screen to continue the print from the last-known + * point in the file. + */ +// #define POWER_LOSS_RECOVERY +#if ENABLED(POWER_LOSS_RECOVERY) +#define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500) +// #define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss +// #define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS) +// #define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module. +// #define POWER_LOSS_STATE HIGH // State of pin indicating power loss +// #define POWER_LOSS_PULLUP // Set pullup / pulldown as appropriate for your sensor +// #define POWER_LOSS_PULLDOWN +// #define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume +// #define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power. - // Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card, - // especially with "vase mode" printing. Set too high and vases cannot be continued. - #define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data +// Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card, +// especially with "vase mode" printing. Set too high and vases cannot be continued. +#define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data - // Enable if Z homing is needed for proper recovery. 99.9% of the time this should be disabled! - //#define POWER_LOSS_RECOVER_ZHOME - #if ENABLED(POWER_LOSS_RECOVER_ZHOME) - //#define POWER_LOSS_ZHOME_POS { 0, 0 } // Safe XY position to home Z while avoiding objects on the bed - #endif - #endif +// Enable if Z homing is needed for proper recovery. 99.9% of the time this should be disabled! +// #define POWER_LOSS_RECOVER_ZHOME +#if ENABLED(POWER_LOSS_RECOVER_ZHOME) +// #define POWER_LOSS_ZHOME_POS { 0, 0 } // Safe XY position to home Z while avoiding objects on the bed +#endif +#endif - /** - * Sort SD file listings in alphabetical order. - * - * With this option enabled, items on SD cards will be sorted - * by name for easier navigation. - * - * By default... - * - * - Use the slowest -but safest- method for sorting. - * - Folders are sorted to the top. - * - The sort key is statically allocated. - * - No added G-code (M34) support. - * - 40 item sorting limit. (Items after the first 40 are unsorted.) - * - * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the - * compiler to calculate the worst-case usage and throw an error if the SRAM - * limit is exceeded. - * - * - SDSORT_USES_RAM provides faster sorting via a static directory buffer. - * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer. - * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) - * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) - */ - //#define SDCARD_SORT_ALPHA +/** + * Sort SD file listings in alphabetical order. + * + * With this option enabled, items on SD cards will be sorted + * by name for easier navigation. + * + * By default... + * + * - Use the slowest -but safest- method for sorting. + * - Folders are sorted to the top. + * - The sort key is statically allocated. + * - No added G-code (M34) support. + * - 40 item sorting limit. (Items after the first 40 are unsorted.) + * + * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the + * compiler to calculate the worst-case usage and throw an error if the SRAM + * limit is exceeded. + * + * - SDSORT_USES_RAM provides faster sorting via a static directory buffer. + * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer. + * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) + * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) + */ +// #define SDCARD_SORT_ALPHA - // SD Card Sorting options - #if ENABLED(SDCARD_SORT_ALPHA) - #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each. - #define SDSORT_FOLDERS -1 // -1=above 0=none 1=below - #define SDSORT_GCODE false // Enable G-code M34 to set sorting behaviors: M34 S<-1|0|1> F<-1|0|1> - #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. - #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) - #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. - #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! - #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting. - // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM. - #endif +// SD Card Sorting options +#if ENABLED(SDCARD_SORT_ALPHA) +#define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each. +#define SDSORT_FOLDERS -1 // -1=above 0=none 1=below +#define SDSORT_GCODE false // Enable G-code M34 to set sorting behaviors: M34 S<-1|0|1> F<-1|0|1> +#define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. +#define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) +#define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. +#define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! +#define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting. + // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM. +#endif - // Allow international symbols in long filenames. To display correctly, the - // LCD's font must contain the characters. Check your selected LCD language. - //#define UTF_FILENAME_SUPPORT +// Allow international symbols in long filenames. To display correctly, the +// LCD's font must contain the characters. Check your selected LCD language. +// #define UTF_FILENAME_SUPPORT - //#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' - //#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol - //#define M20_TIMESTAMP_SUPPORT // Include timestamps by adding the 'T' flag to M20 commands +// #define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' +// #define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol +// #define M20_TIMESTAMP_SUPPORT // Include timestamps by adding the 'T' flag to M20 commands - //#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu +#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu - //#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!) +// #define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!) - /** - * Abort SD printing when any endstop is triggered. - * This feature is enabled with 'M540 S1' or from the LCD menu. - * Endstops must be activated for this option to work. - */ - //#define SD_ABORT_ON_ENDSTOP_HIT - #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) - //#define SD_ABORT_ON_ENDSTOP_HIT_GCODE "G28XY" // G-code to run on endstop hit (e.g., "G28XY" or "G27") - #endif +/** + * Abort SD printing when any endstop is triggered. + * This feature is enabled with 'M540 S1' or from the LCD menu. + * Endstops must be activated for this option to work. + */ +// #define SD_ABORT_ON_ENDSTOP_HIT +#if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) +// #define SD_ABORT_ON_ENDSTOP_HIT_GCODE "G28XY" // G-code to run on endstop hit (e.g., "G28XY" or "G27") +#endif - //#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file +// #define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file - //#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' +// #define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' - /** - * Support for USB thumb drives using an Arduino USB Host Shield or - * equivalent MAX3421E breakout board. The USB thumb drive will appear - * to Marlin as an SD card. - * - * The MAX3421E can be assigned the same pins as the SD card reader, with - * the following pin mapping: - * - * SCLK, MOSI, MISO --> SCLK, MOSI, MISO - * INT --> SD_DETECT_PIN [1] - * SS --> SDSS - * - * [1] On AVR an interrupt-capable pin is best for UHS3 compatibility. - */ - //#define USB_FLASH_DRIVE_SUPPORT - #if ENABLED(USB_FLASH_DRIVE_SUPPORT) - /** - * USB Host Shield Library - * - * - UHS2 uses no interrupts and has been production-tested - * on a LulzBot TAZ Pro with a 32-bit Archim board. - * - * - UHS3 is newer code with better USB compatibility. But it - * is less tested and is known to interfere with Servos. - * [1] This requires USB_INTR_PIN to be interrupt-capable. - */ - //#define USE_UHS2_USB - //#define USE_UHS3_USB +/** + * Support for USB thumb drives using an Arduino USB Host Shield or + * equivalent MAX3421E breakout board. The USB thumb drive will appear + * to Marlin as an SD card. + * + * The MAX3421E can be assigned the same pins as the SD card reader, with + * the following pin mapping: + * + * SCLK, MOSI, MISO --> SCLK, MOSI, MISO + * INT --> SD_DETECT_PIN [1] + * SS --> SDSS + * + * [1] On AVR an interrupt-capable pin is best for UHS3 compatibility. + */ +// #define USB_FLASH_DRIVE_SUPPORT +#if ENABLED(USB_FLASH_DRIVE_SUPPORT) +/** + * USB Host Shield Library + * + * - UHS2 uses no interrupts and has been production-tested + * on a LulzBot TAZ Pro with a 32-bit Archim board. + * + * - UHS3 is newer code with better USB compatibility. But it + * is less tested and is known to interfere with Servos. + * [1] This requires USB_INTR_PIN to be interrupt-capable. + */ +// #define USE_UHS2_USB +// #define USE_UHS3_USB - #define DISABLE_DUE_SD_MMC // Disable USB Host access to USB Drive to prevent hangs on block access for DUE platform +#define DISABLE_DUE_SD_MMC // Disable USB Host access to USB Drive to prevent hangs on block access for DUE platform - /** - * Native USB Host supported by some boards (USB OTG) - */ - //#define USE_OTG_USB_HOST +/** + * Native USB Host supported by some boards (USB OTG) + */ +// #define USE_OTG_USB_HOST - #if DISABLED(USE_OTG_USB_HOST) - #define USB_CS_PIN SDSS - #define USB_INTR_PIN SD_DETECT_PIN - #endif - #endif +#if DISABLED(USE_OTG_USB_HOST) +#define USB_CS_PIN SDSS +#define USB_INTR_PIN SD_DETECT_PIN +#endif +#endif - /** - * When using a bootloader that supports SD-Firmware-Flashing, - * add a menu item to activate SD-FW-Update on the next reboot. - * - * Requires ATMEGA2560 (Arduino Mega) - * - * Tested with this bootloader: - * https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560 - */ - //#define SD_FIRMWARE_UPDATE - #if ENABLED(SD_FIRMWARE_UPDATE) - #define SD_FIRMWARE_UPDATE_EEPROM_ADDR 0x1FF - #define SD_FIRMWARE_UPDATE_ACTIVE_VALUE 0xF0 - #define SD_FIRMWARE_UPDATE_INACTIVE_VALUE 0xFF - #endif +/** + * When using a bootloader that supports SD-Firmware-Flashing, + * add a menu item to activate SD-FW-Update on the next reboot. + * + * Requires ATMEGA2560 (Arduino Mega) + * + * Tested with this bootloader: + * https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560 + */ +// #define SD_FIRMWARE_UPDATE +#if ENABLED(SD_FIRMWARE_UPDATE) +#define SD_FIRMWARE_UPDATE_EEPROM_ADDR 0x1FF +#define SD_FIRMWARE_UPDATE_ACTIVE_VALUE 0xF0 +#define SD_FIRMWARE_UPDATE_INACTIVE_VALUE 0xFF +#endif - /** - * Enable this option if you have more than ~3K of unused flash space. - * Marlin will embed all settings in the firmware binary as compressed data. - * Use 'M503 C' to write the settings out to the SD Card as 'mc.zip'. - * See docs/ConfigEmbedding.md for details on how to use 'mc-apply.py'. - */ - //#define CONFIGURATION_EMBEDDING +/** + * Enable this option if you have more than ~3K of unused flash space. + * Marlin will embed all settings in the firmware binary as compressed data. + * Use 'M503 C' to write the settings out to the SD Card as 'mc.zip'. + * See docs/ConfigEmbedding.md for details on how to use 'mc-apply.py'. + */ +// #define CONFIGURATION_EMBEDDING - // Add an optimized binary file transfer mode, initiated with 'M28 B1' - //#define BINARY_FILE_TRANSFER +// Add an optimized binary file transfer mode, initiated with 'M28 B1' +// #define BINARY_FILE_TRANSFER - #if ENABLED(BINARY_FILE_TRANSFER) - // Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER - //#define CUSTOM_FIRMWARE_UPLOAD - #endif +#if ENABLED(BINARY_FILE_TRANSFER) +// Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER +// #define CUSTOM_FIRMWARE_UPLOAD +#endif - /** - * Set this option to one of the following (or the board's defaults apply): - * - * LCD - Use the SD drive in the external LCD controller. - * ONBOARD - Use the SD drive on the control board. - * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file). - * - * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ] - */ - //#define SDCARD_CONNECTION LCD +/** + * Set this option to one of the following (or the board's defaults apply): + * + * LCD - Use the SD drive in the external LCD controller. + * ONBOARD - Use the SD drive on the control board. + * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file). + * + * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ] + */ +// #define SDCARD_CONNECTION LCD - // Enable if SD detect is rendered useless (e.g., by using an SD extender) - //#define NO_SD_DETECT +// Enable if SD detect is rendered useless (e.g., by using an SD extender) +// #define NO_SD_DETECT - /** - * Multiple volume support - EXPERIMENTAL. - * Adds 'M21 Pm' / 'M21 S' / 'M21 U' to mount SD Card / USB Drive. - */ - //#define MULTI_VOLUME - #if ENABLED(MULTI_VOLUME) - #define VOLUME_SD_ONBOARD - #define VOLUME_USB_FLASH_DRIVE - #define DEFAULT_VOLUME SV_SD_ONBOARD - #define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE - #endif +/** + * Multiple volume support - EXPERIMENTAL. + * Adds 'M21 Pm' / 'M21 S' / 'M21 U' to mount SD Card / USB Drive. + */ +// #define MULTI_VOLUME +#if ENABLED(MULTI_VOLUME) +#define VOLUME_SD_ONBOARD +#define VOLUME_USB_FLASH_DRIVE +#define DEFAULT_VOLUME SV_SD_ONBOARD +#define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE +#endif #endif // SDSUPPORT @@ -1763,7 +1767,7 @@ * By default an onboard SD card reader may be shared as a USB mass- * storage device. This option hides the SD card from the host PC. */ -//#define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security). +// #define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security). /** * Additional options for Graphical Displays @@ -1778,264 +1782,264 @@ * printing performance versus fast display updates. */ #if HAS_MARLINUI_U8GLIB - // Save many cycles by drawing a hollow frame or no frame on the Info Screen - //#define XYZ_NO_FRAME - #define XYZ_HOLLOW_FRAME +// Save many cycles by drawing a hollow frame or no frame on the Info Screen +// #define XYZ_NO_FRAME +#define XYZ_HOLLOW_FRAME - // A bigger font is available for edit items. Costs 3120 bytes of flash. - // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. - //#define USE_BIG_EDIT_FONT +// A bigger font is available for edit items. Costs 3120 bytes of flash. +// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. +// #define USE_BIG_EDIT_FONT - // A smaller font may be used on the Info Screen. Costs 2434 bytes of flash. - // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. - //#define USE_SMALL_INFOFONT +// A smaller font may be used on the Info Screen. Costs 2434 bytes of flash. +// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. +// #define USE_SMALL_INFOFONT - /** - * Graphical Display Sleep - * - * The U8G library provides sleep / wake functions for SH1106, SSD1306, - * SSD1309, and some other DOGM displays. - * Enable this option to save energy and prevent OLED pixel burn-in. - * Adds the menu item Configuration > LCD Timeout (m) to set a wait period - * from 0 (disabled) to 99 minutes. - */ - //#define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen. Set with M255 S. +/** + * Graphical Display Sleep + * + * The U8G library provides sleep / wake functions for SH1106, SSD1306, + * SSD1309, and some other DOGM displays. + * Enable this option to save energy and prevent OLED pixel burn-in. + * Adds the menu item Configuration > LCD Timeout (m) to set a wait period + * from 0 (disabled) to 99 minutes. + */ +// #define DISPLAY_SLEEP_MINUTES 2 // (minutes) Timeout before turning off the screen. Set with M255 S. - /** - * ST7920-based LCDs can emulate a 16 x 4 character display using - * the ST7920 character-generator for very fast screen updates. - * Enable LIGHTWEIGHT_UI to use this special display mode. - * - * Since LIGHTWEIGHT_UI has limited space, the position and status - * message occupy the same line. Set STATUS_EXPIRE_SECONDS to the - * length of time to display the status message before clearing. - * - * Set STATUS_EXPIRE_SECONDS to zero to never clear the status. - * This will prevent position updates from being displayed. - */ - #if IS_U8GLIB_ST7920 - // Enable this option and reduce the value to optimize screen updates. - // The normal delay is 10µs. Use the lowest value that still gives a reliable display. - //#define DOGM_SPI_DELAY_US 5 +/** + * ST7920-based LCDs can emulate a 16 x 4 character display using + * the ST7920 character-generator for very fast screen updates. + * Enable LIGHTWEIGHT_UI to use this special display mode. + * + * Since LIGHTWEIGHT_UI has limited space, the position and status + * message occupy the same line. Set STATUS_EXPIRE_SECONDS to the + * length of time to display the status message before clearing. + * + * Set STATUS_EXPIRE_SECONDS to zero to never clear the status. + * This will prevent position updates from being displayed. + */ +#if IS_U8GLIB_ST7920 +// Enable this option and reduce the value to optimize screen updates. +// The normal delay is 10µs. Use the lowest value that still gives a reliable display. +// #define DOGM_SPI_DELAY_US 5 - //#define LIGHTWEIGHT_UI - #if ENABLED(LIGHTWEIGHT_UI) - #define STATUS_EXPIRE_SECONDS 20 - #endif - #endif +// #define LIGHTWEIGHT_UI +#if ENABLED(LIGHTWEIGHT_UI) +#define STATUS_EXPIRE_SECONDS 20 +#endif +#endif - /** - * Status (Info) Screen customization - * These options may affect code size and screen render time. - * Custom status screens can forcibly override these settings. - */ - //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones - //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends) - #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM for numbered hotends) - #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating - #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating - #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating - //#define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active - //#define STATUS_COOLER_ANIM // Use a second bitmap to indicate laser cooling - //#define STATUS_FLOWMETER_ANIM // Use multiple bitmaps to indicate coolant flow - //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap - //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap - //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames - //#define STATUS_HEAT_PERCENT // Show heating in a progress bar - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. +/** + * Status (Info) Screen customization + * These options may affect code size and screen render time. + * Custom status screens can forcibly override these settings. + */ +// #define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones +// #define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends) +#define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM for numbered hotends) +#define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating +#define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating +#define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating +// #define STATUS_CUTTER_ANIM // Use a second bitmap to indicate spindle / laser active +// #define STATUS_COOLER_ANIM // Use a second bitmap to indicate laser cooling +// #define STATUS_FLOWMETER_ANIM // Use multiple bitmaps to indicate coolant flow +// #define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap +// #define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap +// #define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames +// #define STATUS_HEAT_PERCENT // Show heating in a progress bar +// #define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. - // Frivolous Game Options - //#define MARLIN_BRICKOUT - //#define MARLIN_INVADERS - //#define MARLIN_SNAKE - //#define GAMES_EASTER_EGG // Add extra blank lines above the "Games" sub-menu +// Frivolous Game Options +// #define MARLIN_BRICKOUT +// #define MARLIN_INVADERS +// #define MARLIN_SNAKE +// #define GAMES_EASTER_EGG // Add extra blank lines above the "Games" sub-menu #endif // HAS_MARLINUI_U8GLIB #if HAS_MARLINUI_U8GLIB || IS_DWIN_MARLINUI - #define MENU_HOLLOW_FRAME // Enable to save many cycles by drawing a hollow frame on Menu Screens - //#define OVERLAY_GFX_REVERSE // Swap the CW/CCW indicators in the graphics overlay +#define MENU_HOLLOW_FRAME // Enable to save many cycles by drawing a hollow frame on Menu Screens +// #define OVERLAY_GFX_REVERSE // Swap the CW/CCW indicators in the graphics overlay #endif // // Additional options for DGUS / DWIN displays // #if HAS_DGUS_LCD - #define LCD_BAUDRATE 115200 +#define LCD_BAUDRATE 115200 - #define DGUS_RX_BUFFER_SIZE 128 - #define DGUS_TX_BUFFER_SIZE 48 - //#define SERIAL_STATS_RX_BUFFER_OVERRUNS // Fix Rx overrun situation (Currently only for AVR) +#define DGUS_RX_BUFFER_SIZE 128 +#define DGUS_TX_BUFFER_SIZE 48 +// #define SERIAL_STATS_RX_BUFFER_OVERRUNS // Fix Rx overrun situation (Currently only for AVR) - #define DGUS_UPDATE_INTERVAL_MS 500 // (ms) Interval between automatic screen updates +#define DGUS_UPDATE_INTERVAL_MS 500 // (ms) Interval between automatic screen updates - #if ANY(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS, DGUS_LCD_UI_HIPRECY) - #define DGUS_PRINT_FILENAME // Display the filename during printing - #define DGUS_PREHEAT_UI // Display a preheat screen during heatup +#if ANY(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS, DGUS_LCD_UI_HIPRECY) +#define DGUS_PRINT_FILENAME // Display the filename during printing +#define DGUS_PREHEAT_UI // Display a preheat screen during heatup - #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS) - //#define DGUS_UI_MOVE_DIS_OPTION // Disabled by default for FYSETC and MKS - #else - #define DGUS_UI_MOVE_DIS_OPTION // Enabled by default for UI_HIPRECY - #endif +#if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_MKS) +// #define DGUS_UI_MOVE_DIS_OPTION // Disabled by default for FYSETC and MKS +#else +#define DGUS_UI_MOVE_DIS_OPTION // Enabled by default for UI_HIPRECY +#endif - #define DGUS_FILAMENT_LOADUNLOAD - #if ENABLED(DGUS_FILAMENT_LOADUNLOAD) - #define DGUS_FILAMENT_PURGE_LENGTH 10 - #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS - #endif +#define DGUS_FILAMENT_LOADUNLOAD +#if ENABLED(DGUS_FILAMENT_LOADUNLOAD) +#define DGUS_FILAMENT_PURGE_LENGTH 10 +#define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS +#endif - #define DGUS_UI_WAITING // Show a "waiting" screen between some screens - #if ENABLED(DGUS_UI_WAITING) - #define DGUS_UI_WAITING_STATUS 10 - #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping - #endif - #endif +#define DGUS_UI_WAITING // Show a "waiting" screen between some screens +#if ENABLED(DGUS_UI_WAITING) +#define DGUS_UI_WAITING_STATUS 10 +#define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping +#endif +#endif #endif // HAS_DGUS_LCD // // Additional options for AnyCubic Chiron TFT displays // #if ENABLED(ANYCUBIC_LCD_CHIRON) - // By default the type of panel is automatically detected. - // Enable one of these options if you know the panel type. - //#define CHIRON_TFT_STANDARD - //#define CHIRON_TFT_NEW +// By default the type of panel is automatically detected. +// Enable one of these options if you know the panel type. +// #define CHIRON_TFT_STANDARD +// #define CHIRON_TFT_NEW - // Enable the longer Anycubic powerup startup tune - //#define AC_DEFAULT_STARTUP_TUNE +// Enable the longer Anycubic powerup startup tune +// #define AC_DEFAULT_STARTUP_TUNE - /** - * Display Folders - * By default the file browser lists all G-code files (including those in subfolders) in a flat list. - * Enable this option to display a hierarchical file browser. - * - * NOTES: - * - Without this option it helps to enable SDCARD_SORT_ALPHA so files are sorted before/after folders. - * - When used with the "new" panel, folder names will also have '.gcode' appended to their names. - * This hack is currently required to force the panel to show folders. - */ - #define AC_SD_FOLDER_VIEW +/** + * Display Folders + * By default the file browser lists all G-code files (including those in subfolders) in a flat list. + * Enable this option to display a hierarchical file browser. + * + * NOTES: + * - Without this option it helps to enable SDCARD_SORT_ALPHA so files are sorted before/after folders. + * - When used with the "new" panel, folder names will also have '.gcode' appended to their names. + * This hack is currently required to force the panel to show folders. + */ +#define AC_SD_FOLDER_VIEW #endif // // Specify additional languages for the UI. Default specified by LCD_LANGUAGE. // #if ANY(DOGLCD, TFT_COLOR_UI, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) - //#define LCD_LANGUAGE_2 fr - //#define LCD_LANGUAGE_3 de - //#define LCD_LANGUAGE_4 es - //#define LCD_LANGUAGE_5 it - #ifdef LCD_LANGUAGE_2 - //#define LCD_LANGUAGE_AUTO_SAVE // Automatically save language to EEPROM on change - #endif +// #define LCD_LANGUAGE_2 fr +// #define LCD_LANGUAGE_3 de +// #define LCD_LANGUAGE_4 es +// #define LCD_LANGUAGE_5 it +#ifdef LCD_LANGUAGE_2 +// #define LCD_LANGUAGE_AUTO_SAVE // Automatically save language to EEPROM on change +#endif #endif // // Touch UI for the FTDI Embedded Video Engine (EVE) // #if ENABLED(TOUCH_UI_FTDI_EVE) - // Display board used - //#define LCD_FTDI_VM800B35A // FTDI 3.5" with FT800 (320x240) - //#define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272) - //#define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272) - //#define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480) - //#define LCD_LULZBOT_CLCD_UI // LulzBot Color LCD UI - //#define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480) - //#define LCD_EVE3_50G // Matrix Orbital 5.0", 800x480, BT815 - //#define LCD_EVE2_50G // Matrix Orbital 5.0", 800x480, FT813 +// Display board used +// #define LCD_FTDI_VM800B35A // FTDI 3.5" with FT800 (320x240) +// #define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272) +// #define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272) +// #define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480) +// #define LCD_LULZBOT_CLCD_UI // LulzBot Color LCD UI +// #define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480) +// #define LCD_EVE3_50G // Matrix Orbital 5.0", 800x480, BT815 +// #define LCD_EVE2_50G // Matrix Orbital 5.0", 800x480, FT813 - // Correct the resolution if not using the stock TFT panel. - //#define TOUCH_UI_320x240 - //#define TOUCH_UI_480x272 - //#define TOUCH_UI_800x480 +// Correct the resolution if not using the stock TFT panel. +// #define TOUCH_UI_320x240 +// #define TOUCH_UI_480x272 +// #define TOUCH_UI_800x480 - // Mappings for boards with a standard RepRapDiscount Display connector - //#define AO_EXP1_PINMAP // LulzBot CLCD UI EXP1 mapping - //#define AO_EXP2_PINMAP // LulzBot CLCD UI EXP2 mapping - //#define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping - //#define S6_TFT_PINMAP // FYSETC S6 pin mapping - //#define F6_TFT_PINMAP // FYSETC F6 pin mapping +// Mappings for boards with a standard RepRapDiscount Display connector +// #define AO_EXP1_PINMAP // LulzBot CLCD UI EXP1 mapping +// #define AO_EXP2_PINMAP // LulzBot CLCD UI EXP2 mapping +// #define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping +// #define S6_TFT_PINMAP // FYSETC S6 pin mapping +// #define F6_TFT_PINMAP // FYSETC F6 pin mapping - //#define OTHER_PIN_LAYOUT // Define pins manually below - #if ENABLED(OTHER_PIN_LAYOUT) - // Pins for CS and MOD_RESET (PD) must be chosen - #define CLCD_MOD_RESET 9 - #define CLCD_SPI_CS 10 +// #define OTHER_PIN_LAYOUT // Define pins manually below +#if ENABLED(OTHER_PIN_LAYOUT) +// Pins for CS and MOD_RESET (PD) must be chosen +#define CLCD_MOD_RESET 9 +#define CLCD_SPI_CS 10 - // If using software SPI, specify pins for SCLK, MOSI, MISO - //#define CLCD_USE_SOFT_SPI - #if ENABLED(CLCD_USE_SOFT_SPI) - #define CLCD_SOFT_SPI_MOSI 11 - #define CLCD_SOFT_SPI_MISO 12 - #define CLCD_SOFT_SPI_SCLK 13 - #endif - #endif +// If using software SPI, specify pins for SCLK, MOSI, MISO +// #define CLCD_USE_SOFT_SPI +#if ENABLED(CLCD_USE_SOFT_SPI) +#define CLCD_SOFT_SPI_MOSI 11 +#define CLCD_SOFT_SPI_MISO 12 +#define CLCD_SOFT_SPI_SCLK 13 +#endif +#endif - // Display Orientation. An inverted (i.e. upside-down) display - // is supported on the FT800. The FT810 and beyond also support - // portrait and mirrored orientations. - //#define TOUCH_UI_INVERTED - //#define TOUCH_UI_PORTRAIT - //#define TOUCH_UI_MIRRORED +// Display Orientation. An inverted (i.e. upside-down) display +// is supported on the FT800. The FT810 and beyond also support +// portrait and mirrored orientations. +// #define TOUCH_UI_INVERTED +// #define TOUCH_UI_PORTRAIT +// #define TOUCH_UI_MIRRORED - // UTF8 processing and rendering. - // Unsupported characters are shown as '?'. - //#define TOUCH_UI_USE_UTF8 - #if ENABLED(TOUCH_UI_USE_UTF8) - // Western accents support. These accented characters use - // combined bitmaps and require relatively little storage. - #define TOUCH_UI_UTF8_WESTERN_CHARSET - #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) - // Additional character groups. These characters require - // full bitmaps and take up considerable storage: - //#define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³ - //#define TOUCH_UI_UTF8_COPYRIGHT // © ® - //#define TOUCH_UI_UTF8_GERMANIC // ß - //#define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ - //#define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡ - //#define TOUCH_UI_UTF8_CURRENCY // ¢ £ ¤ ¥ - //#define TOUCH_UI_UTF8_ORDINALS // º ª - //#define TOUCH_UI_UTF8_MATHEMATICS // ± × ÷ - //#define TOUCH_UI_UTF8_FRACTIONS // ¼ ½ ¾ - //#define TOUCH_UI_UTF8_SYMBOLS // µ ¶ ¦ § ¬ - #endif +// UTF8 processing and rendering. +// Unsupported characters are shown as '?'. +// #define TOUCH_UI_USE_UTF8 +#if ENABLED(TOUCH_UI_USE_UTF8) +// Western accents support. These accented characters use +// combined bitmaps and require relatively little storage. +#define TOUCH_UI_UTF8_WESTERN_CHARSET +#if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) +// Additional character groups. These characters require +// full bitmaps and take up considerable storage: +// #define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³ +// #define TOUCH_UI_UTF8_COPYRIGHT // © ® +// #define TOUCH_UI_UTF8_GERMANIC // ß +// #define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ +// #define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡ +// #define TOUCH_UI_UTF8_CURRENCY // ¢ £ ¤ ¥ +// #define TOUCH_UI_UTF8_ORDINALS // º ª +// #define TOUCH_UI_UTF8_MATHEMATICS // ± × ÷ +// #define TOUCH_UI_UTF8_FRACTIONS // ¼ ½ ¾ +// #define TOUCH_UI_UTF8_SYMBOLS // µ ¶ ¦ § ¬ +#endif - // Cyrillic character set, costs about 27KiB of flash - //#define TOUCH_UI_UTF8_CYRILLIC_CHARSET - #endif +// Cyrillic character set, costs about 27KiB of flash +// #define TOUCH_UI_UTF8_CYRILLIC_CHARSET +#endif - // Use a smaller font when labels don't fit buttons - #define TOUCH_UI_FIT_TEXT +// Use a smaller font when labels don't fit buttons +#define TOUCH_UI_FIT_TEXT - // Use a numeric passcode for "Screen lock" keypad. - // (recommended for smaller displays) - //#define TOUCH_UI_PASSCODE +// Use a numeric passcode for "Screen lock" keypad. +// (recommended for smaller displays) +// #define TOUCH_UI_PASSCODE - // Output extra debug info for Touch UI events - //#define TOUCH_UI_DEBUG +// Output extra debug info for Touch UI events +// #define TOUCH_UI_DEBUG - // Developer menu (accessed by touching "About Printer" copyright text) - //#define TOUCH_UI_DEVELOPER_MENU +// Developer menu (accessed by touching "About Printer" copyright text) +// #define TOUCH_UI_DEVELOPER_MENU #endif // // Classic UI Options // #if TFT_SCALED_DOGLCD - //#define TFT_MARLINUI_COLOR 0xFFFF // White - //#define TFT_MARLINBG_COLOR 0x0000 // Black - //#define TFT_DISABLED_COLOR 0x0003 // Almost black - //#define TFT_BTCANCEL_COLOR 0xF800 // Red - //#define TFT_BTARROWS_COLOR 0xDEE6 // 11011 110111 00110 Yellow - //#define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan +// #define TFT_MARLINUI_COLOR 0xFFFF // White +// #define TFT_MARLINBG_COLOR 0x0000 // Black +// #define TFT_DISABLED_COLOR 0x0003 // Almost black +// #define TFT_BTCANCEL_COLOR 0xF800 // Red +// #define TFT_BTARROWS_COLOR 0xDEE6 // 11011 110111 00110 Yellow +// #define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan #endif // // ADC Button Debounce // #if HAS_ADC_BUTTONS - #define ADC_BUTTON_DEBOUNCE_DELAY 16 // Increase if buttons bounce or repeat too fast +#define ADC_BUTTON_DEBOUNCE_DELAY 16 // Increase if buttons bounce or repeat too fast #endif // @section safety @@ -2051,7 +2055,7 @@ */ #define USE_WATCHDOG #if ENABLED(USE_WATCHDOG) - //#define WATCHDOG_RESET_MANUAL +// #define WATCHDOG_RESET_MANUAL #endif // @section lcd @@ -2063,34 +2067,34 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#define BABYSTEPPING #if ENABLED(BABYSTEPPING) - //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR - //#define BABYSTEP_WITHOUT_HOMING - //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement) - //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! - #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way - //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps - #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep - #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep +// #define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR +// #define BABYSTEP_WITHOUT_HOMING +// #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement) +// #define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! +#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way +// #define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps +#define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep +#define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep - //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. - #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) - #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. - // Note: Extra time may be added to mitigate controller latency. - //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. - #if ENABLED(MOVE_Z_WHEN_IDLE) - #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. - #endif - #endif +#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. +#if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) +#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. + // Note: Extra time may be added to mitigate controller latency. +// #define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. +#if ENABLED(MOVE_Z_WHEN_IDLE) +#define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. +#endif +#endif - //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 +// #define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 - //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping - #if ENABLED(BABYSTEP_ZPROBE_OFFSET) - //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets - //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor - #endif +// #define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping +#if ENABLED(BABYSTEP_ZPROBE_OFFSET) +// #define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets +// #define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor +#endif #endif // @section extruder @@ -2110,17 +2114,17 @@ * * See https://marlinfw.org/docs/features/lin_advance.html for full instructions. */ -//#define LIN_ADVANCE +// #define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) - #if ENABLED(DISTINCT_E_FACTORS) - #define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder - #else - #define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders - #endif - //#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. - //#define LA_DEBUG // Print debug information to serial during operation. Disable for production use. - //#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends. - //#define EXPERIMENTAL_I2S_LA // Allow I2S_STEPPER_STREAM to be used with LA. Performance degrades as the LA step rate reaches ~20kHz. +#if ENABLED(DISTINCT_E_FACTORS) +#define ADVANCE_K {0.22} // (mm) Compression length per 1mm/s extruder speed, per extruder +#else +#define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders +#endif +// #define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. +// #define LA_DEBUG // Print debug information to serial during operation. Disable for production use. +// #define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends. +// #define EXPERIMENTAL_I2S_LA // Allow I2S_STEPPER_STREAM to be used with LA. Performance degrades as the LA step rate reaches ~20kHz. #endif // @section leveling @@ -2130,27 +2134,27 @@ * For example, after homing a rotational axis the Z probe might not be perpendicular to the bed. * Choose values the orient the bed horizontally and the Z-probe vertically. */ -//#define SAFE_BED_LEVELING_START_X 0.0 -//#define SAFE_BED_LEVELING_START_Y 0.0 -//#define SAFE_BED_LEVELING_START_Z 0.0 -//#define SAFE_BED_LEVELING_START_I 0.0 -//#define SAFE_BED_LEVELING_START_J 0.0 -//#define SAFE_BED_LEVELING_START_K 0.0 -//#define SAFE_BED_LEVELING_START_U 0.0 -//#define SAFE_BED_LEVELING_START_V 0.0 -//#define SAFE_BED_LEVELING_START_W 0.0 +// #define SAFE_BED_LEVELING_START_X 0.0 +// #define SAFE_BED_LEVELING_START_Y 0.0 +// #define SAFE_BED_LEVELING_START_Z 0.0 +// #define SAFE_BED_LEVELING_START_I 0.0 +// #define SAFE_BED_LEVELING_START_J 0.0 +// #define SAFE_BED_LEVELING_START_K 0.0 +// #define SAFE_BED_LEVELING_START_U 0.0 +// #define SAFE_BED_LEVELING_START_V 0.0 +// #define SAFE_BED_LEVELING_START_W 0.0 /** * Points to probe for all 3-point Leveling procedures. * Override if the automatically selected points are inadequate. */ #if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL) - //#define PROBE_PT_1_X 15 - //#define PROBE_PT_1_Y 180 - //#define PROBE_PT_2_X 15 - //#define PROBE_PT_2_Y 20 - //#define PROBE_PT_3_X 170 - //#define PROBE_PT_3_Y 20 +// #define PROBE_PT_1_X 15 +// #define PROBE_PT_1_Y 180 +// #define PROBE_PT_2_X 15 +// #define PROBE_PT_2_Y 20 +// #define PROBE_PT_3_X 170 +// #define PROBE_PT_3_Y 20 #endif /** @@ -2173,39 +2177,39 @@ * the probe to be unable to reach any points. */ #if PROBE_SELECTED && !IS_KINEMATIC - //#define PROBING_MARGIN_LEFT PROBING_MARGIN - //#define PROBING_MARGIN_RIGHT PROBING_MARGIN - //#define PROBING_MARGIN_FRONT PROBING_MARGIN - //#define PROBING_MARGIN_BACK PROBING_MARGIN +// #define PROBING_MARGIN_LEFT PROBING_MARGIN +// #define PROBING_MARGIN_RIGHT PROBING_MARGIN +// #define PROBING_MARGIN_FRONT PROBING_MARGIN +// #define PROBING_MARGIN_BACK PROBING_MARGIN #endif #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) - // Override the mesh area if the automatic (max) area is too large - //#define MESH_MIN_X MESH_INSET - //#define MESH_MIN_Y MESH_INSET - //#define MESH_MAX_X X_BED_SIZE - (MESH_INSET) - //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET) +// Override the mesh area if the automatic (max) area is too large +// #define MESH_MIN_X MESH_INSET +// #define MESH_MIN_Y MESH_INSET +// #define MESH_MAX_X X_BED_SIZE - (MESH_INSET) +// #define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET) #endif #if BOTH(AUTO_BED_LEVELING_UBL, EEPROM_SETTINGS) - //#define OPTIMIZED_MESH_STORAGE // Store mesh with less precision to save EEPROM space +// #define OPTIMIZED_MESH_STORAGE // Store mesh with less precision to save EEPROM space #endif /** * Repeatedly attempt G29 leveling until it succeeds. * Stop after G29_MAX_RETRIES attempts. */ -//#define G29_RETRY_AND_RECOVER +// #define G29_RETRY_AND_RECOVER #if ENABLED(G29_RETRY_AND_RECOVER) - #define G29_MAX_RETRIES 3 - #define G29_HALT_ON_FAILURE - /** - * Specify the GCODE commands that will be executed when leveling succeeds, - * between attempts, and after the maximum number of retries have been tried. - */ - #define G29_SUCCESS_COMMANDS "M117 Bed leveling done." - #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" - #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" +#define G29_MAX_RETRIES 3 +#define G29_HALT_ON_FAILURE +/** + * Specify the GCODE commands that will be executed when leveling succeeds, + * between attempts, and after the maximum number of retries have been tried. + */ +#define G29_SUCCESS_COMMANDS "M117 Bed leveling done." +#define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" +#define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" #endif @@ -2221,60 +2225,60 @@ * Use M871 to set temperature/offset values manually. * For more details see https://marlinfw.org/docs/features/probe_temp_compensation.html */ -//#define PTC_PROBE // Compensate based on probe temperature -//#define PTC_BED // Compensate based on bed temperature -//#define PTC_HOTEND // Compensate based on hotend temperature +// #define PTC_PROBE // Compensate based on probe temperature +// #define PTC_BED // Compensate based on bed temperature +// #define PTC_HOTEND // Compensate based on hotend temperature #if ANY(PTC_PROBE, PTC_BED, PTC_HOTEND) - /** - * If the probe is outside the defined range, use linear extrapolation with the closest - * point and the point with index PTC_LINEAR_EXTRAPOLATION. e.g., If set to 4 it will use the - * linear extrapolation between data[0] and data[4] for values below PTC_PROBE_START. - */ - //#define PTC_LINEAR_EXTRAPOLATION 4 +/** + * If the probe is outside the defined range, use linear extrapolation with the closest + * point and the point with index PTC_LINEAR_EXTRAPOLATION. e.g., If set to 4 it will use the + * linear extrapolation between data[0] and data[4] for values below PTC_PROBE_START. + */ +// #define PTC_LINEAR_EXTRAPOLATION 4 - #if ENABLED(PTC_PROBE) - // Probe temperature calibration generates a table of values starting at PTC_PROBE_START - // (e.g., 30), in steps of PTC_PROBE_RES (e.g., 5) with PTC_PROBE_COUNT (e.g., 10) samples. - #define PTC_PROBE_START 30 // (°C) - #define PTC_PROBE_RES 5 // (°C) - #define PTC_PROBE_COUNT 10 - #define PTC_PROBE_ZOFFS { 0 } // (µm) Z adjustments per sample - #endif +#if ENABLED(PTC_PROBE) +// Probe temperature calibration generates a table of values starting at PTC_PROBE_START +// (e.g., 30), in steps of PTC_PROBE_RES (e.g., 5) with PTC_PROBE_COUNT (e.g., 10) samples. +#define PTC_PROBE_START 30 // (°C) +#define PTC_PROBE_RES 5 // (°C) +#define PTC_PROBE_COUNT 10 +#define PTC_PROBE_ZOFFS {0} // (µm) Z adjustments per sample +#endif - #if ENABLED(PTC_BED) - // Bed temperature calibration builds a similar table. - #define PTC_BED_START 60 // (°C) - #define PTC_BED_RES 5 // (°C) - #define PTC_BED_COUNT 10 - #define PTC_BED_ZOFFS { 0 } // (µm) Z adjustments per sample - #endif +#if ENABLED(PTC_BED) +// Bed temperature calibration builds a similar table. +#define PTC_BED_START 60 // (°C) +#define PTC_BED_RES 5 // (°C) +#define PTC_BED_COUNT 10 +#define PTC_BED_ZOFFS {0} // (µm) Z adjustments per sample +#endif - #if ENABLED(PTC_HOTEND) - // Note: There is no automatic calibration for the hotend. Use M871. - #define PTC_HOTEND_START 180 // (°C) - #define PTC_HOTEND_RES 5 // (°C) - #define PTC_HOTEND_COUNT 20 - #define PTC_HOTEND_ZOFFS { 0 } // (µm) Z adjustments per sample - #endif +#if ENABLED(PTC_HOTEND) +// Note: There is no automatic calibration for the hotend. Use M871. +#define PTC_HOTEND_START 180 // (°C) +#define PTC_HOTEND_RES 5 // (°C) +#define PTC_HOTEND_COUNT 20 +#define PTC_HOTEND_ZOFFS {0} // (µm) Z adjustments per sample +#endif - // G76 options - #if BOTH(PTC_PROBE, PTC_BED) - // Park position to wait for probe cooldown - #define PTC_PARK_POS { 0, 0, 100 } +// G76 options +#if BOTH(PTC_PROBE, PTC_BED) +// Park position to wait for probe cooldown +#define PTC_PARK_POS {0, 0, 100} - // Probe position to probe and wait for probe to reach target temperature - //#define PTC_PROBE_POS { 12.0f, 7.3f } // Example: MK52 magnetic heatbed - #define PTC_PROBE_POS { 90, 100 } +// Probe position to probe and wait for probe to reach target temperature +// #define PTC_PROBE_POS { 12.0f, 7.3f } // Example: MK52 magnetic heatbed +#define PTC_PROBE_POS {90, 100} - // The temperature the probe should be at while taking measurements during - // bed temperature calibration. - #define PTC_PROBE_TEMP 30 // (°C) +// The temperature the probe should be at while taking measurements during +// bed temperature calibration. +#define PTC_PROBE_TEMP 30 // (°C) - // Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster. - // Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z). - #define PTC_PROBE_HEATING_OFFSET 0.5 // (mm) - #endif +// Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster. +// Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z). +#define PTC_PROBE_HEATING_OFFSET 0.5 // (mm) +#endif #endif // PTC_PROBE || PTC_BED || PTC_HOTEND // @section extras @@ -2282,27 +2286,27 @@ // // G60/G61 Position Save and Return // -//#define SAVED_POSITIONS 1 // Each saved position slot costs 12 bytes +// #define SAVED_POSITIONS 1 // Each saved position slot costs 12 bytes // // G2/G3 Arc Support // -#define ARC_SUPPORT // Requires ~3226 bytes +#define ARC_SUPPORT // Requires ~3226 bytes #if ENABLED(ARC_SUPPORT) - #define MIN_ARC_SEGMENT_MM 0.1 // (mm) Minimum length of each arc segment - #define MAX_ARC_SEGMENT_MM 1.0 // (mm) Maximum length of each arc segment - #define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle - //#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length - #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections - //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles - //#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure +#define MIN_ARC_SEGMENT_MM 0.1 // (mm) Minimum length of each arc segment +#define MAX_ARC_SEGMENT_MM 1.0 // (mm) Maximum length of each arc segment +#define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle +// #define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length +#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections +// #define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles +// #define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure #endif // G5 Bézier Curve Support with XYZE destination and IJPQ offsets -//#define BEZIER_CURVE_SUPPORT // Requires ~2666 bytes +// #define BEZIER_CURVE_SUPPORT // Requires ~2666 bytes #if EITHER(ARC_SUPPORT, BEZIER_CURVE_SUPPORT) - //#define CNC_WORKSPACE_PLANES // Allow G2/G3/G5 to operate in XY, ZX, or YZ planes +// #define CNC_WORKSPACE_PLANES // Allow G2/G3/G5 to operate in XY, ZX, or YZ planes #endif /** @@ -2313,7 +2317,7 @@ * less step aliasing by calculating all motions in advance. * Preparing your G-code: https://github.com/colinrgodsey/step-daemon */ -//#define DIRECT_STEPPING +// #define DIRECT_STEPPING /** * G38 Probe Target @@ -2322,10 +2326,10 @@ * and optionally G38.4 and G38.5 (probe away from target). * Set MULTIPLE_PROBING for G38 to probe more than once. */ -//#define G38_PROBE_TARGET +// #define G38_PROBE_TARGET #if ENABLED(G38_PROBE_TARGET) - //#define G38_PROBE_AWAY // Include G38.4 and G38.5 to probe away from target - #define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move. +// #define G38_PROBE_AWAY // Include G38.4 and G38.5 to probe away from target +#define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move. #endif // @section motion @@ -2346,8 +2350,8 @@ * * Override the default value based on the driver type set in Configuration.h. */ -//#define MINIMUM_STEPPER_POST_DIR_DELAY 650 -//#define MINIMUM_STEPPER_PRE_DIR_DELAY 650 +// #define MINIMUM_STEPPER_POST_DIR_DELAY 650 +// #define MINIMUM_STEPPER_PRE_DIR_DELAY 650 /** * Minimum stepper driver pulse width (in µs) @@ -2360,7 +2364,7 @@ * * Override the default value based on the driver type set in Configuration.h. */ -//#define MINIMUM_STEPPER_PULSE 2 +// #define MINIMUM_STEPPER_PULSE 2 /** * Maximum stepping rate (in Hz) the stepper driver allows @@ -2374,12 +2378,12 @@ * * Override the default value based on the driver type set in Configuration.h. */ -//#define MAXIMUM_STEPPER_RATE 250000 +// #define MAXIMUM_STEPPER_RATE 250000 // @section temperature // Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL +// #define HEATERS_PARALLEL //=========================================================================== //================================= Buffers ================================= @@ -2390,11 +2394,11 @@ // The number of linear moves that can be in the planner at once. // The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32) #if BOTH(SDSUPPORT, DIRECT_STEPPING) - #define BLOCK_BUFFER_SIZE 8 +#define BLOCK_BUFFER_SIZE 8 #elif ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 +#define BLOCK_BUFFER_SIZE 16 #else - #define BLOCK_BUFFER_SIZE 16 +#define BLOCK_BUFFER_SIZE 16 #endif // @section serial @@ -2416,29 +2420,29 @@ // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. // To use flow control, set this buffer size to at least 1024 bytes. // :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048] -//#define RX_BUFFER_SIZE 1024 +// #define RX_BUFFER_SIZE 1024 #if RX_BUFFER_SIZE >= 1024 - // Enable to have the controller send XON/XOFF control characters to - // the host to signal the RX buffer is becoming full. - //#define SERIAL_XON_XOFF +// Enable to have the controller send XON/XOFF control characters to +// the host to signal the RX buffer is becoming full. +// #define SERIAL_XON_XOFF #endif #if ENABLED(SDSUPPORT) - // Enable this option to collect and display the maximum - // RX queue usage after transferring a file to SD. - //#define SERIAL_STATS_MAX_RX_QUEUED +// Enable this option to collect and display the maximum +// RX queue usage after transferring a file to SD. +// #define SERIAL_STATS_MAX_RX_QUEUED - // Enable this option to collect and display the number - // of dropped bytes after a file transfer to SD. - //#define SERIAL_STATS_DROPPED_RX +// Enable this option to collect and display the number +// of dropped bytes after a file transfer to SD. +// #define SERIAL_STATS_DROPPED_RX #endif // Monitor RX buffer usage // Dump an error to the serial port if the serial receive buffer overflows. // If you see these errors, increase the RX_BUFFER_SIZE value. // Not supported on all platforms. -//#define RX_BUFFER_MONITOR +// #define RX_BUFFER_MONITOR /** * Emergency Command Parser @@ -2448,7 +2452,7 @@ * Currently handles M108, M112, M410, M876 * NOTE: Not yet implemented for all platforms. */ -//#define EMERGENCY_PARSER +// #define EMERGENCY_PARSER /** * Realtime Reporting (requires EMERGENCY_PARSER) @@ -2465,9 +2469,9 @@ * - During Hold all Emergency Parser commands are available, as usual. * - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports. */ -//#define REALTIME_REPORTING_COMMANDS +// #define REALTIME_REPORTING_COMMANDS #if ENABLED(REALTIME_REPORTING_COMMANDS) - //#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC +// #define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC #endif /** @@ -2476,17 +2480,17 @@ * Some other clients start sending commands while receiving a 'wait'. * This "wait" is only sent when the buffer is empty. 1 second is a good value here. */ -//#define NO_TIMEOUTS 1000 // (ms) +// #define NO_TIMEOUTS 1000 // (ms) // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK +// #define ADVANCED_OK // Printrun may have trouble receiving long strings all at once. // This option inserts short delays between lines of serial output. #define SERIAL_OVERRUN_PROTECTION // For serial echo, the number of digits after the decimal point -//#define SERIAL_FLOAT_PRECISION 4 +// #define SERIAL_FLOAT_PRECISION 4 /** * Set the number of proportional font spaces required to fill up a typical character space. @@ -2506,7 +2510,7 @@ * 'M106 P T2' : Use the set secondary speed * 'M106 P T1' : Restore the previous fan speed */ -//#define EXTRA_FAN_SPEED +// #define EXTRA_FAN_SPEED // @section gcode @@ -2524,24 +2528,24 @@ * * Note that M207 / M208 / M209 settings are saved to EEPROM. */ -//#define FWRETRACT +// #define FWRETRACT #if ENABLED(FWRETRACT) - #define FWRETRACT_AUTORETRACT // Override slicer retractions - #if ENABLED(FWRETRACT_AUTORETRACT) - #define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length - #define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length - #endif - #define RETRACT_LENGTH 3 // (mm) Default retract length (positive value) - #define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value) - #define RETRACT_FEEDRATE 45 // (mm/s) Default feedrate for retracting - #define RETRACT_ZRAISE 0 // (mm) Default retract Z-raise - #define RETRACT_RECOVER_LENGTH 0 // (mm) Default additional recover length (added to retract length on recover) - #define RETRACT_RECOVER_LENGTH_SWAP 0 // (mm) Default additional swap recover length (added to retract length on recover from toolchange) - #define RETRACT_RECOVER_FEEDRATE 8 // (mm/s) Default feedrate for recovering from retraction - #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // (mm/s) Default feedrate for recovering from swap retraction - #if ENABLED(MIXING_EXTRUDER) - //#define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously - #endif +#define FWRETRACT_AUTORETRACT // Override slicer retractions +#if ENABLED(FWRETRACT_AUTORETRACT) +#define MIN_AUTORETRACT 0.1 // (mm) Don't convert E moves under this length +#define MAX_AUTORETRACT 10.0 // (mm) Don't convert E moves over this length +#endif +#define RETRACT_LENGTH 3 // (mm) Default retract length (positive value) +#define RETRACT_LENGTH_SWAP 13 // (mm) Default swap retract length (positive value) +#define RETRACT_FEEDRATE 45 // (mm/s) Default feedrate for retracting +#define RETRACT_ZRAISE 0 // (mm) Default retract Z-raise +#define RETRACT_RECOVER_LENGTH 0 // (mm) Default additional recover length (added to retract length on recover) +#define RETRACT_RECOVER_LENGTH_SWAP 0 // (mm) Default additional swap recover length (added to retract length on recover from toolchange) +#define RETRACT_RECOVER_FEEDRATE 8 // (mm/s) Default feedrate for recovering from retraction +#define RETRACT_RECOVER_FEEDRATE_SWAP 8 // (mm/s) Default feedrate for recovering from swap retraction +#if ENABLED(MIXING_EXTRUDER) +// #define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously +#endif #endif // @section tool change @@ -2551,87 +2555,87 @@ * Applies to all types of extruders except where explicitly noted. */ #if HAS_MULTI_EXTRUDER - // Z raise distance for tool-change, as needed for some extruders - #define TOOLCHANGE_ZRAISE 2 // (mm) - //#define TOOLCHANGE_ZRAISE_BEFORE_RETRACT // Apply raise before swap retraction (if enabled) - //#define TOOLCHANGE_NO_RETURN // Never return to previous position on tool-change - #if ENABLED(TOOLCHANGE_NO_RETURN) - //#define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // Extra G-code to run after tool-change - #endif +// Z raise distance for tool-change, as needed for some extruders +#define TOOLCHANGE_ZRAISE 2 // (mm) +// #define TOOLCHANGE_ZRAISE_BEFORE_RETRACT // Apply raise before swap retraction (if enabled) +// #define TOOLCHANGE_NO_RETURN // Never return to previous position on tool-change +#if ENABLED(TOOLCHANGE_NO_RETURN) +// #define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // Extra G-code to run after tool-change +#endif - /** - * Extra G-code to run while executing tool-change commands. Can be used to use an additional - * stepper motor (e.g., I axis in Configuration.h) to drive the tool-changer. - */ - //#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0 - //#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1 - //#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution! +/** + * Extra G-code to run while executing tool-change commands. Can be used to use an additional + * stepper motor (e.g., I axis in Configuration.h) to drive the tool-changer. + */ +// #define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0 +// #define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1 +// #define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution! - /** - * Tool Sensors detect when tools have been picked up or dropped. - * Requires the pins TOOL_SENSOR1_PIN, TOOL_SENSOR2_PIN, etc. - */ - //#define TOOL_SENSOR +/** + * Tool Sensors detect when tools have been picked up or dropped. + * Requires the pins TOOL_SENSOR1_PIN, TOOL_SENSOR2_PIN, etc. + */ +// #define TOOL_SENSOR - /** - * Retract and prime filament on tool-change to reduce - * ooze and stringing and to get cleaner transitions. - */ - //#define TOOLCHANGE_FILAMENT_SWAP - #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) - // Load / Unload - #define TOOLCHANGE_FS_LENGTH 12 // (mm) Load / Unload length - #define TOOLCHANGE_FS_EXTRA_RESUME_LENGTH 0 // (mm) Extra length for better restart. Adjust with LCD or M217 B. - #define TOOLCHANGE_FS_RETRACT_SPEED (50*60) // (mm/min) (Unloading) - #define TOOLCHANGE_FS_UNRETRACT_SPEED (25*60) // (mm/min) (On SINGLENOZZLE or Bowden loading must be slowed down) +/** + * Retract and prime filament on tool-change to reduce + * ooze and stringing and to get cleaner transitions. + */ +// #define TOOLCHANGE_FILAMENT_SWAP +#if ENABLED(TOOLCHANGE_FILAMENT_SWAP) +// Load / Unload +#define TOOLCHANGE_FS_LENGTH 12 // (mm) Load / Unload length +#define TOOLCHANGE_FS_EXTRA_RESUME_LENGTH 0 // (mm) Extra length for better restart. Adjust with LCD or M217 B. +#define TOOLCHANGE_FS_RETRACT_SPEED (50 * 60) // (mm/min) (Unloading) +#define TOOLCHANGE_FS_UNRETRACT_SPEED (25 * 60) // (mm/min) (On SINGLENOZZLE or Bowden loading must be slowed down) - // Longer prime to clean out a SINGLENOZZLE - #define TOOLCHANGE_FS_EXTRA_PRIME 0 // (mm) Extra priming length - #define TOOLCHANGE_FS_PRIME_SPEED (4.6*60) // (mm/min) Extra priming feedrate - #define TOOLCHANGE_FS_WIPE_RETRACT 0 // (mm) Cutting retraction out of park, for less stringing, better wipe, etc. Adjust with LCD or M217 G. +// Longer prime to clean out a SINGLENOZZLE +#define TOOLCHANGE_FS_EXTRA_PRIME 0 // (mm) Extra priming length +#define TOOLCHANGE_FS_PRIME_SPEED (4.6 * 60) // (mm/min) Extra priming feedrate +#define TOOLCHANGE_FS_WIPE_RETRACT 0 // (mm) Cutting retraction out of park, for less stringing, better wipe, etc. Adjust with LCD or M217 G. - // Cool after prime to reduce stringing - #define TOOLCHANGE_FS_FAN -1 // Fan index or -1 to skip - #define TOOLCHANGE_FS_FAN_SPEED 255 // 0-255 - #define TOOLCHANGE_FS_FAN_TIME 10 // (seconds) +// Cool after prime to reduce stringing +#define TOOLCHANGE_FS_FAN -1 // Fan index or -1 to skip +#define TOOLCHANGE_FS_FAN_SPEED 255 // 0-255 +#define TOOLCHANGE_FS_FAN_TIME 10 // (seconds) - // Use TOOLCHANGE_FS_PRIME_SPEED feedrate the first time each extruder is primed - //#define TOOLCHANGE_FS_SLOW_FIRST_PRIME +// Use TOOLCHANGE_FS_PRIME_SPEED feedrate the first time each extruder is primed +// #define TOOLCHANGE_FS_SLOW_FIRST_PRIME - /** - * Prime T0 the first time T0 is sent to the printer: - * [ Power-On -> T0 { Activate & Prime T0 } -> T1 { Retract T0, Activate & Prime T1 } ] - * If disabled, no priming on T0 until switching back to T0 from another extruder: - * [ Power-On -> T0 { T0 Activated } -> T1 { Activate & Prime T1 } -> T0 { Retract T1, Activate & Prime T0 } ] - * Enable with M217 V1 before printing to avoid unwanted priming on host connect. - */ - //#define TOOLCHANGE_FS_PRIME_FIRST_USED +/** + * Prime T0 the first time T0 is sent to the printer: + * [ Power-On -> T0 { Activate & Prime T0 } -> T1 { Retract T0, Activate & Prime T1 } ] + * If disabled, no priming on T0 until switching back to T0 from another extruder: + * [ Power-On -> T0 { T0 Activated } -> T1 { Activate & Prime T1 } -> T0 { Retract T1, Activate & Prime T0 } ] + * Enable with M217 V1 before printing to avoid unwanted priming on host connect. + */ +// #define TOOLCHANGE_FS_PRIME_FIRST_USED - /** - * Tool Change Migration - * This feature provides G-code and LCD options to switch tools mid-print. - * All applicable tool properties are migrated so the print can continue. - * Tools must be closely matching and other restrictions may apply. - * Useful to: - * - Change filament color without interruption - * - Switch spools automatically on filament runout - * - Switch to a different nozzle on an extruder jam - */ - #define TOOLCHANGE_MIGRATION_FEATURE +/** + * Tool Change Migration + * This feature provides G-code and LCD options to switch tools mid-print. + * All applicable tool properties are migrated so the print can continue. + * Tools must be closely matching and other restrictions may apply. + * Useful to: + * - Change filament color without interruption + * - Switch spools automatically on filament runout + * - Switch to a different nozzle on an extruder jam + */ +#define TOOLCHANGE_MIGRATION_FEATURE - #endif +#endif - /** - * Position to park head during tool change. - * Doesn't apply to SWITCHING_TOOLHEAD, DUAL_X_CARRIAGE, or PARKING_EXTRUDER - */ - //#define TOOLCHANGE_PARK - #if ENABLED(TOOLCHANGE_PARK) - #define TOOLCHANGE_PARK_XY { X_MIN_POS + 10, Y_MIN_POS + 10 } - #define TOOLCHANGE_PARK_XY_FEEDRATE 6000 // (mm/min) - //#define TOOLCHANGE_PARK_X_ONLY // X axis only move - //#define TOOLCHANGE_PARK_Y_ONLY // Y axis only move - #endif +/** + * Position to park head during tool change. + * Doesn't apply to SWITCHING_TOOLHEAD, DUAL_X_CARRIAGE, or PARKING_EXTRUDER + */ +// #define TOOLCHANGE_PARK +#if ENABLED(TOOLCHANGE_PARK) +#define TOOLCHANGE_PARK_XY {X_MIN_POS + 10, Y_MIN_POS + 10} +#define TOOLCHANGE_PARK_XY_FEEDRATE 6000 // (mm/min) +// #define TOOLCHANGE_PARK_X_ONLY // X axis only move +// #define TOOLCHANGE_PARK_Y_ONLY // Y axis only move +#endif #endif // HAS_MULTI_EXTRUDER // @section advanced pause @@ -2647,51 +2651,51 @@ * * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park. */ -//#define ADVANCED_PAUSE_FEATURE +// #define ADVANCED_PAUSE_FEATURE #if ENABLED(ADVANCED_PAUSE_FEATURE) - #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. - #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. - // This short retract is done immediately, before parking the nozzle. - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. - #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. - // For Bowden, the full length of the tube and nozzle. - // For direct drive, the full length of the nozzle. - // Set to 0 for manual unloading. - #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. - #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. - // 0 to disable start loading and skip to fast load only - #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. - #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. - // For Bowden, the full length of the tube and nozzle. - // For direct drive, the full length of the nozzle. - //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. - #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate. - #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading. - // Set to 0 for manual extrusion. - // Filament can be extruded repeatedly from the Filament Change menu - // until extrusion is consistent, and to purge old filament. - #define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park. - //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused. +#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. +#define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. + // This short retract is done immediately, before parking the nozzle. +#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. +#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. +#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. + // For Bowden, the full length of the tube and nozzle. + // For direct drive, the full length of the nozzle. + // Set to 0 for manual unloading. +#define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. +#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. + // 0 to disable start loading and skip to fast load only +#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. +#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. +#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. + // For Bowden, the full length of the tube and nozzle. + // For direct drive, the full length of the nozzle. +// #define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. +#define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate. +#define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading. + // Set to 0 for manual extrusion. + // Filament can be extruded repeatedly from the Filament Change menu + // until extrusion is consistent, and to purge old filament. +#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park. +// #define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused. - // Filament Unload does a Retract, Delay, and Purge first: - #define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length. - #define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract. - #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. - #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload +// Filament Unload does a Retract, Delay, and Purge first: +#define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length. +#define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract. +#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. +#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload - #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. - #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. - #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. - //#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. - //#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing. +#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. +#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. +#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. +// #define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. +// #define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing. - //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. - //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change +// #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. +// #define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change - //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. - //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) +// #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. +// #define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #endif // @section tmc_smart @@ -2722,510 +2726,512 @@ */ #if HAS_TRINAMIC_CONFIG || HAS_TMC26X - #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current +#define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current - /** - * Interpolate microsteps to 256 - * Override for each driver with _INTERPOLATE settings below - */ - #define INTERPOLATE true +/** + * Interpolate microsteps to 256 + * Override for each driver with _INTERPOLATE settings below + */ +#define INTERPOLATE true - #if AXIS_IS_TMC_CONFIG(X) - #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing - #define X_MICROSTEPS 16 // 0..256 - #define X_RSENSE 0.11 // Multiplied x1000 for TMC26X - #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... - //#define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X axis - //#define X_HOLD_MULTIPLIER 0.5 // Enable to override 'HOLD_MULTIPLIER' for the X axis - #endif +#if AXIS_IS_TMC_CONFIG(X) +#define X_CURRENT 580 // (mA) RMS current. Multiply by 1.414 for peak current. +#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing +#define X_MICROSTEPS 16 // 0..256 +#define X_RSENSE 0.11 // Multiplied x1000 for TMC26X +#define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... +// #define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X axis +// #define X_HOLD_MULTIPLIER 0.5 // Enable to override 'HOLD_MULTIPLIER' for the X axis +#endif - #if AXIS_IS_TMC_CONFIG(X2) - #define X2_CURRENT X_CURRENT - #define X2_CURRENT_HOME X_CURRENT_HOME - #define X2_MICROSTEPS X_MICROSTEPS - #define X2_RSENSE X_RSENSE - #define X2_CHAIN_POS -1 - //#define X2_INTERPOLATE true - //#define X2_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(X2) +#define X2_CURRENT X_CURRENT +#define X2_CURRENT_HOME X_CURRENT_HOME +#define X2_MICROSTEPS X_MICROSTEPS +#define X2_RSENSE X_RSENSE +#define X2_CHAIN_POS -1 +// #define X2_INTERPOLATE true +// #define X2_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Y) - #define Y_CURRENT 800 - #define Y_CURRENT_HOME Y_CURRENT - #define Y_MICROSTEPS 16 - #define Y_RSENSE 0.11 - #define Y_CHAIN_POS -1 - //#define Y_INTERPOLATE true - //#define Y_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Y) +#define Y_CURRENT 580 +#define Y_CURRENT_HOME Y_CURRENT +#define Y_MICROSTEPS 16 +#define Y_RSENSE 0.11 +#define Y_CHAIN_POS -1 +// #define Y_INTERPOLATE true +// #define Y_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Y2) - #define Y2_CURRENT Y_CURRENT - #define Y2_CURRENT_HOME Y_CURRENT_HOME - #define Y2_MICROSTEPS Y_MICROSTEPS - #define Y2_RSENSE Y_RSENSE - #define Y2_CHAIN_POS -1 - //#define Y2_INTERPOLATE true - //#define Y2_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Y2) +#define Y2_CURRENT Y_CURRENT +#define Y2_CURRENT_HOME Y_CURRENT_HOME +#define Y2_MICROSTEPS Y_MICROSTEPS +#define Y2_RSENSE Y_RSENSE +#define Y2_CHAIN_POS -1 +// #define Y2_INTERPOLATE true +// #define Y2_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Z) - #define Z_CURRENT 800 - #define Z_CURRENT_HOME Z_CURRENT - #define Z_MICROSTEPS 16 - #define Z_RSENSE 0.11 - #define Z_CHAIN_POS -1 - //#define Z_INTERPOLATE true - //#define Z_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Z) +#define Z_CURRENT 580 +#define Z_CURRENT_HOME Z_CURRENT +#define Z_MICROSTEPS 16 +#define Z_RSENSE 0.11 +#define Z_CHAIN_POS -1 +// #define Z_INTERPOLATE true +// #define Z_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Z2) - #define Z2_CURRENT Z_CURRENT - #define Z2_CURRENT_HOME Z_CURRENT_HOME - #define Z2_MICROSTEPS Z_MICROSTEPS - #define Z2_RSENSE Z_RSENSE - #define Z2_CHAIN_POS -1 - //#define Z2_INTERPOLATE true - //#define Z2_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Z2) +#define Z2_CURRENT Z_CURRENT +#define Z2_CURRENT_HOME Z_CURRENT_HOME +#define Z2_MICROSTEPS Z_MICROSTEPS +#define Z2_RSENSE Z_RSENSE +#define Z2_CHAIN_POS -1 +// #define Z2_INTERPOLATE true +// #define Z2_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Z3) - #define Z3_CURRENT Z_CURRENT - #define Z3_CURRENT_HOME Z_CURRENT_HOME - #define Z3_MICROSTEPS Z_MICROSTEPS - #define Z3_RSENSE Z_RSENSE - #define Z3_CHAIN_POS -1 - //#define Z3_INTERPOLATE true - //#define Z3_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Z3) +#define Z3_CURRENT Z_CURRENT +#define Z3_CURRENT_HOME Z_CURRENT_HOME +#define Z3_MICROSTEPS Z_MICROSTEPS +#define Z3_RSENSE Z_RSENSE +#define Z3_CHAIN_POS -1 +// #define Z3_INTERPOLATE true +// #define Z3_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(Z4) - #define Z4_CURRENT Z_CURRENT - #define Z4_CURRENT_HOME Z_CURRENT_HOME - #define Z4_MICROSTEPS Z_MICROSTEPS - #define Z4_RSENSE Z_RSENSE - #define Z4_CHAIN_POS -1 - //#define Z4_INTERPOLATE true - //#define Z4_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(Z4) +#define Z4_CURRENT Z_CURRENT +#define Z4_CURRENT_HOME Z_CURRENT_HOME +#define Z4_MICROSTEPS Z_MICROSTEPS +#define Z4_RSENSE Z_RSENSE +#define Z4_CHAIN_POS -1 +// #define Z4_INTERPOLATE true +// #define Z4_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(I) - #define I_CURRENT 800 - #define I_CURRENT_HOME I_CURRENT - #define I_MICROSTEPS 16 - #define I_RSENSE 0.11 - #define I_CHAIN_POS -1 - //#define I_INTERPOLATE true - //#define I_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(I) +#define I_CURRENT 800 +#define I_CURRENT_HOME I_CURRENT +#define I_MICROSTEPS 16 +#define I_RSENSE 0.11 +#define I_CHAIN_POS -1 +// #define I_INTERPOLATE true +// #define I_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(J) - #define J_CURRENT 800 - #define J_CURRENT_HOME J_CURRENT - #define J_MICROSTEPS 16 - #define J_RSENSE 0.11 - #define J_CHAIN_POS -1 - //#define J_INTERPOLATE true - //#define J_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(J) +#define J_CURRENT 800 +#define J_CURRENT_HOME J_CURRENT +#define J_MICROSTEPS 16 +#define J_RSENSE 0.11 +#define J_CHAIN_POS -1 +// #define J_INTERPOLATE true +// #define J_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(K) - #define K_CURRENT 800 - #define K_CURRENT_HOME K_CURRENT - #define K_MICROSTEPS 16 - #define K_RSENSE 0.11 - #define K_CHAIN_POS -1 - //#define K_INTERPOLATE true - //#define K_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(K) +#define K_CURRENT 800 +#define K_CURRENT_HOME K_CURRENT +#define K_MICROSTEPS 16 +#define K_RSENSE 0.11 +#define K_CHAIN_POS -1 +// #define K_INTERPOLATE true +// #define K_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(U) - #define U_CURRENT 800 - #define U_CURRENT_HOME U_CURRENT - #define U_MICROSTEPS 8 - #define U_RSENSE 0.11 - #define U_CHAIN_POS -1 - //#define U_INTERPOLATE true - //#define U_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(U) +#define U_CURRENT 800 +#define U_CURRENT_HOME U_CURRENT +#define U_MICROSTEPS 8 +#define U_RSENSE 0.11 +#define U_CHAIN_POS -1 +// #define U_INTERPOLATE true +// #define U_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(V) - #define V_CURRENT 800 - #define V_CURRENT_HOME V_CURRENT - #define V_MICROSTEPS 8 - #define V_RSENSE 0.11 - #define V_CHAIN_POS -1 - //#define V_INTERPOLATE true - //#define V_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(V) +#define V_CURRENT 800 +#define V_CURRENT_HOME V_CURRENT +#define V_MICROSTEPS 8 +#define V_RSENSE 0.11 +#define V_CHAIN_POS -1 +// #define V_INTERPOLATE true +// #define V_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(W) - #define W_CURRENT 800 - #define W_CURRENT_HOME W_CURRENT - #define W_MICROSTEPS 8 - #define W_RSENSE 0.11 - #define W_CHAIN_POS -1 - //#define W_INTERPOLATE true - //#define W_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(W) +#define W_CURRENT 800 +#define W_CURRENT_HOME W_CURRENT +#define W_MICROSTEPS 8 +#define W_RSENSE 0.11 +#define W_CHAIN_POS -1 +// #define W_INTERPOLATE true +// #define W_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E0) - #define E0_CURRENT 800 - #define E0_MICROSTEPS 16 - #define E0_RSENSE 0.11 - #define E0_CHAIN_POS -1 - //#define E0_INTERPOLATE true - //#define E0_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E0) +#define E0_CURRENT 650 +#define E0_MICROSTEPS 16 +#define E0_RSENSE 0.11 +#define E0_CHAIN_POS -1 +// #define E0_INTERPOLATE true +// #define E0_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E1) - #define E1_CURRENT E0_CURRENT - #define E1_MICROSTEPS E0_MICROSTEPS - #define E1_RSENSE E0_RSENSE - #define E1_CHAIN_POS -1 - //#define E1_INTERPOLATE true - //#define E1_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E1) +#define E1_CURRENT E0_CURRENT +#define E1_MICROSTEPS E0_MICROSTEPS +#define E1_RSENSE E0_RSENSE +#define E1_CHAIN_POS -1 +// #define E1_INTERPOLATE true +// #define E1_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E2) - #define E2_CURRENT E0_CURRENT - #define E2_MICROSTEPS E0_MICROSTEPS - #define E2_RSENSE E0_RSENSE - #define E2_CHAIN_POS -1 - //#define E2_INTERPOLATE true - //#define E2_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E2) +#define E2_CURRENT E0_CURRENT +#define E2_MICROSTEPS E0_MICROSTEPS +#define E2_RSENSE E0_RSENSE +#define E2_CHAIN_POS -1 +// #define E2_INTERPOLATE true +// #define E2_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E3) - #define E3_CURRENT E0_CURRENT - #define E3_MICROSTEPS E0_MICROSTEPS - #define E3_RSENSE E0_RSENSE - #define E3_CHAIN_POS -1 - //#define E3_INTERPOLATE true - //#define E3_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E3) +#define E3_CURRENT E0_CURRENT +#define E3_MICROSTEPS E0_MICROSTEPS +#define E3_RSENSE E0_RSENSE +#define E3_CHAIN_POS -1 +// #define E3_INTERPOLATE true +// #define E3_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E4) - #define E4_CURRENT E0_CURRENT - #define E4_MICROSTEPS E0_MICROSTEPS - #define E4_RSENSE E0_RSENSE - #define E4_CHAIN_POS -1 - //#define E4_INTERPOLATE true - //#define E4_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E4) +#define E4_CURRENT E0_CURRENT +#define E4_MICROSTEPS E0_MICROSTEPS +#define E4_RSENSE E0_RSENSE +#define E4_CHAIN_POS -1 +// #define E4_INTERPOLATE true +// #define E4_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E5) - #define E5_CURRENT E0_CURRENT - #define E5_MICROSTEPS E0_MICROSTEPS - #define E5_RSENSE E0_RSENSE - #define E5_CHAIN_POS -1 - //#define E5_INTERPOLATE true - //#define E5_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E5) +#define E5_CURRENT E0_CURRENT +#define E5_MICROSTEPS E0_MICROSTEPS +#define E5_RSENSE E0_RSENSE +#define E5_CHAIN_POS -1 +// #define E5_INTERPOLATE true +// #define E5_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E6) - #define E6_CURRENT E0_CURRENT - #define E6_MICROSTEPS E0_MICROSTEPS - #define E6_RSENSE E0_RSENSE - #define E6_CHAIN_POS -1 - //#define E6_INTERPOLATE true - //#define E6_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E6) +#define E6_CURRENT E0_CURRENT +#define E6_MICROSTEPS E0_MICROSTEPS +#define E6_RSENSE E0_RSENSE +#define E6_CHAIN_POS -1 +// #define E6_INTERPOLATE true +// #define E6_HOLD_MULTIPLIER 0.5 +#endif - #if AXIS_IS_TMC_CONFIG(E7) - #define E7_CURRENT E0_CURRENT - #define E7_MICROSTEPS E0_MICROSTEPS - #define E7_RSENSE E0_RSENSE - #define E7_CHAIN_POS -1 - //#define E7_INTERPOLATE true - //#define E7_HOLD_MULTIPLIER 0.5 - #endif +#if AXIS_IS_TMC_CONFIG(E7) +#define E7_CURRENT E0_CURRENT +#define E7_MICROSTEPS E0_MICROSTEPS +#define E7_RSENSE E0_RSENSE +#define E7_CHAIN_POS -1 +// #define E7_INTERPOLATE true +// #define E7_HOLD_MULTIPLIER 0.5 +#endif - // @section tmc/spi +// @section tmc/spi - /** - * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here. - * The default pins can be found in your board's pins file. - */ - //#define X_CS_PIN -1 - //#define Y_CS_PIN -1 - //#define Z_CS_PIN -1 - //#define X2_CS_PIN -1 - //#define Y2_CS_PIN -1 - //#define Z2_CS_PIN -1 - //#define Z3_CS_PIN -1 - //#define Z4_CS_PIN -1 - //#define I_CS_PIN -1 - //#define J_CS_PIN -1 - //#define K_CS_PIN -1 - //#define U_CS_PIN -1 - //#define V_CS_PIN -1 - //#define W_CS_PIN -1 - //#define E0_CS_PIN -1 - //#define E1_CS_PIN -1 - //#define E2_CS_PIN -1 - //#define E3_CS_PIN -1 - //#define E4_CS_PIN -1 - //#define E5_CS_PIN -1 - //#define E6_CS_PIN -1 - //#define E7_CS_PIN -1 +/** + * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here. + * The default pins can be found in your board's pins file. + */ +// #define X_CS_PIN -1 +// #define Y_CS_PIN -1 +// #define Z_CS_PIN -1 +// #define X2_CS_PIN -1 +// #define Y2_CS_PIN -1 +// #define Z2_CS_PIN -1 +// #define Z3_CS_PIN -1 +// #define Z4_CS_PIN -1 +// #define I_CS_PIN -1 +// #define J_CS_PIN -1 +// #define K_CS_PIN -1 +// #define U_CS_PIN -1 +// #define V_CS_PIN -1 +// #define W_CS_PIN -1 +// #define E0_CS_PIN -1 +// #define E1_CS_PIN -1 +// #define E2_CS_PIN -1 +// #define E3_CS_PIN -1 +// #define E4_CS_PIN -1 +// #define E5_CS_PIN -1 +// #define E6_CS_PIN -1 +// #define E7_CS_PIN -1 - /** - * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160). - * The default SW SPI pins are defined the respective pins files, - * but you can override or define them here. - */ - //#define TMC_USE_SW_SPI - //#define TMC_SPI_MOSI -1 - //#define TMC_SPI_MISO -1 - //#define TMC_SPI_SCK -1 +/** + * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160). + * The default SW SPI pins are defined the respective pins files, + * but you can override or define them here. + */ +// #define TMC_USE_SW_SPI +// #define TMC_SPI_MOSI -1 +// #define TMC_SPI_MISO -1 +// #define TMC_SPI_SCK -1 - // @section tmc/serial +// @section tmc/serial - /** - * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses. - * Set the address using jumpers on pins MS1 and MS2. - * Address | MS1 | MS2 - * 0 | LOW | LOW - * 1 | HIGH | LOW - * 2 | LOW | HIGH - * 3 | HIGH | HIGH - * - * Set *_SERIAL_TX_PIN and *_SERIAL_RX_PIN to match for all drivers - * on the same serial port, either here or in your board's pins file. - */ - //#define X_SLAVE_ADDRESS 0 - //#define Y_SLAVE_ADDRESS 0 - //#define Z_SLAVE_ADDRESS 0 - //#define X2_SLAVE_ADDRESS 0 - //#define Y2_SLAVE_ADDRESS 0 - //#define Z2_SLAVE_ADDRESS 0 - //#define Z3_SLAVE_ADDRESS 0 - //#define Z4_SLAVE_ADDRESS 0 - //#define I_SLAVE_ADDRESS 0 - //#define J_SLAVE_ADDRESS 0 - //#define K_SLAVE_ADDRESS 0 - //#define U_SLAVE_ADDRESS 0 - //#define V_SLAVE_ADDRESS 0 - //#define W_SLAVE_ADDRESS 0 - //#define E0_SLAVE_ADDRESS 0 - //#define E1_SLAVE_ADDRESS 0 - //#define E2_SLAVE_ADDRESS 0 - //#define E3_SLAVE_ADDRESS 0 - //#define E4_SLAVE_ADDRESS 0 - //#define E5_SLAVE_ADDRESS 0 - //#define E6_SLAVE_ADDRESS 0 - //#define E7_SLAVE_ADDRESS 0 +/** + * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses. + * Set the address using jumpers on pins MS1 and MS2. + * Address | MS1 | MS2 + * 0 | LOW | LOW + * 1 | HIGH | LOW + * 2 | LOW | HIGH + * 3 | HIGH | HIGH + * + * Set *_SERIAL_TX_PIN and *_SERIAL_RX_PIN to match for all drivers + * on the same serial port, either here or in your board's pins file. + */ +// #define X_SLAVE_ADDRESS 0 +// #define Y_SLAVE_ADDRESS 0 +// #define Z_SLAVE_ADDRESS 0 +// #define X2_SLAVE_ADDRESS 0 +// #define Y2_SLAVE_ADDRESS 0 +// #define Z2_SLAVE_ADDRESS 0 +// #define Z3_SLAVE_ADDRESS 0 +// #define Z4_SLAVE_ADDRESS 0 +// #define I_SLAVE_ADDRESS 0 +// #define J_SLAVE_ADDRESS 0 +// #define K_SLAVE_ADDRESS 0 +// #define U_SLAVE_ADDRESS 0 +// #define V_SLAVE_ADDRESS 0 +// #define W_SLAVE_ADDRESS 0 +// #define E0_SLAVE_ADDRESS 0 +// #define E1_SLAVE_ADDRESS 0 +// #define E2_SLAVE_ADDRESS 0 +// #define E3_SLAVE_ADDRESS 0 +// #define E4_SLAVE_ADDRESS 0 +// #define E5_SLAVE_ADDRESS 0 +// #define E6_SLAVE_ADDRESS 0 +// #define E7_SLAVE_ADDRESS 0 - // @section tmc/smart +// @section tmc/smart - /** - * Software enable - * - * Use for drivers that do not use a dedicated enable pin, but rather handle the same - * function through a communication line such as SPI or UART. - */ - //#define SOFTWARE_DRIVER_ENABLE +/** + * Software enable + * + * Use for drivers that do not use a dedicated enable pin, but rather handle the same + * function through a communication line such as SPI or UART. + */ +// #define SOFTWARE_DRIVER_ENABLE - // @section tmc/stealthchop +// @section tmc/stealthchop - /** - * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only - * Use Trinamic's ultra quiet stepping mode. - * When disabled, Marlin will use spreadCycle stepping mode. - */ - #if HAS_STEALTHCHOP - #define STEALTHCHOP_XY - #define STEALTHCHOP_Z - #define STEALTHCHOP_I - #define STEALTHCHOP_J - #define STEALTHCHOP_K - #define STEALTHCHOP_U - #define STEALTHCHOP_V - #define STEALTHCHOP_W - #define STEALTHCHOP_E - #endif +/** + * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only + * Use Trinamic's ultra quiet stepping mode. + * When disabled, Marlin will use spreadCycle stepping mode. + */ +#if HAS_STEALTHCHOP +#define STEALTHCHOP_XY +#define STEALTHCHOP_Z +#define STEALTHCHOP_I +#define STEALTHCHOP_J +#define STEALTHCHOP_K +#define STEALTHCHOP_U +#define STEALTHCHOP_V +#define STEALTHCHOP_W +#define STEALTHCHOP_E +#endif - /** - * Optimize spreadCycle chopper parameters by using predefined parameter sets - * or with the help of an example included in the library. - * Provided parameter sets are - * CHOPPER_DEFAULT_12V - * CHOPPER_DEFAULT_19V - * CHOPPER_DEFAULT_24V - * CHOPPER_DEFAULT_36V - * CHOPPER_09STEP_24V // 0.9 degree steppers (24V) - * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Průša firmware for MK3 (24V) - * CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9 - * - * Define your own with: - * { , , hysteresis_start[1..8] } - */ - #define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below) - //#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below) - //#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X - //#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below) - //#define CHOPPER_TIMING_Y2 CHOPPER_TIMING_Y - //#define CHOPPER_TIMING_Z CHOPPER_TIMING // For Z Axes (override below) - //#define CHOPPER_TIMING_Z2 CHOPPER_TIMING_Z - //#define CHOPPER_TIMING_Z3 CHOPPER_TIMING_Z - //#define CHOPPER_TIMING_Z4 CHOPPER_TIMING_Z - //#define CHOPPER_TIMING_I CHOPPER_TIMING // For I Axis - //#define CHOPPER_TIMING_J CHOPPER_TIMING // For J Axis - //#define CHOPPER_TIMING_K CHOPPER_TIMING // For K Axis - //#define CHOPPER_TIMING_U CHOPPER_TIMING // For U Axis - //#define CHOPPER_TIMING_V CHOPPER_TIMING // For V Axis - //#define CHOPPER_TIMING_W CHOPPER_TIMING // For W Axis - //#define CHOPPER_TIMING_E CHOPPER_TIMING // For Extruders (override below) - //#define CHOPPER_TIMING_E1 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E2 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E3 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E4 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E5 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E6 CHOPPER_TIMING_E - //#define CHOPPER_TIMING_E7 CHOPPER_TIMING_E +/** + * Optimize spreadCycle chopper parameters by using predefined parameter sets + * or with the help of an example included in the library. + * Provided parameter sets are + * CHOPPER_DEFAULT_12V + * CHOPPER_DEFAULT_19V + * CHOPPER_DEFAULT_24V + * CHOPPER_DEFAULT_36V + * CHOPPER_09STEP_24V // 0.9 degree steppers (24V) + * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Průša firmware for MK3 (24V) + * CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9 + * + * Define your own with: + * { , , hysteresis_start[1..8] } + */ +#define CHOPPER_TIMING CHOPPER_DEFAULT_24V // All axes (override below) +// #define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below) +// #define CHOPPER_TIMING_X2 CHOPPER_TIMING_X +// #define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below) +// #define CHOPPER_TIMING_Y2 CHOPPER_TIMING_Y +// #define CHOPPER_TIMING_Z CHOPPER_TIMING // For Z Axes (override below) +// #define CHOPPER_TIMING_Z2 CHOPPER_TIMING_Z +// #define CHOPPER_TIMING_Z3 CHOPPER_TIMING_Z +// #define CHOPPER_TIMING_Z4 CHOPPER_TIMING_Z +// #define CHOPPER_TIMING_I CHOPPER_TIMING // For I Axis +// #define CHOPPER_TIMING_J CHOPPER_TIMING // For J Axis +// #define CHOPPER_TIMING_K CHOPPER_TIMING // For K Axis +// #define CHOPPER_TIMING_U CHOPPER_TIMING // For U Axis +// #define CHOPPER_TIMING_V CHOPPER_TIMING // For V Axis +// #define CHOPPER_TIMING_W CHOPPER_TIMING // For W Axis +// #define CHOPPER_TIMING_E CHOPPER_TIMING // For Extruders (override below) +// #define CHOPPER_TIMING_E1 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E2 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E3 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E4 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E5 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E6 CHOPPER_TIMING_E +// #define CHOPPER_TIMING_E7 CHOPPER_TIMING_E - // @section tmc/status +// @section tmc/status - /** - * Monitor Trinamic drivers - * for error conditions like overtemperature and short to ground. - * To manage over-temp Marlin can decrease the driver current until the error condition clears. - * Other detected conditions can be used to stop the current print. - * Relevant G-codes: - * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. - * M911 - Report stepper driver overtemperature pre-warn condition. - * M912 - Clear stepper driver overtemperature pre-warn condition flag. - * M122 - Report driver parameters (Requires TMC_DEBUG) - */ - //#define MONITOR_DRIVER_STATUS +/** + * Monitor Trinamic drivers + * for error conditions like overtemperature and short to ground. + * To manage over-temp Marlin can decrease the driver current until the error condition clears. + * Other detected conditions can be used to stop the current print. + * Relevant G-codes: + * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. + * M911 - Report stepper driver overtemperature pre-warn condition. + * M912 - Clear stepper driver overtemperature pre-warn condition flag. + * M122 - Report driver parameters (Requires TMC_DEBUG) + */ +// #define MONITOR_DRIVER_STATUS - #if ENABLED(MONITOR_DRIVER_STATUS) - #define CURRENT_STEP_DOWN 50 // [mA] - #define REPORT_CURRENT_CHANGE - #define STOP_ON_ERROR - #endif +#if ENABLED(MONITOR_DRIVER_STATUS) +#define CURRENT_STEP_DOWN 50 // [mA] +#define REPORT_CURRENT_CHANGE +#define STOP_ON_ERROR +#endif - // @section tmc/hybrid +// @section tmc/hybrid - /** - * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only - * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. - * This mode allows for faster movements at the expense of higher noise levels. - * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD. - * M913 X/Y/Z/E to live tune the setting - */ - //#define HYBRID_THRESHOLD +/** + * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only + * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. + * This mode allows for faster movements at the expense of higher noise levels. + * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD. + * M913 X/Y/Z/E to live tune the setting + */ +// #define HYBRID_THRESHOLD - #define X_HYBRID_THRESHOLD 100 // [mm/s] - #define X2_HYBRID_THRESHOLD 100 - #define Y_HYBRID_THRESHOLD 100 - #define Y2_HYBRID_THRESHOLD 100 - #define Z_HYBRID_THRESHOLD 3 - #define Z2_HYBRID_THRESHOLD 3 - #define Z3_HYBRID_THRESHOLD 3 - #define Z4_HYBRID_THRESHOLD 3 - #define I_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] - #define J_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] - #define K_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] - #define U_HYBRID_THRESHOLD 3 // [mm/s] - #define V_HYBRID_THRESHOLD 3 - #define W_HYBRID_THRESHOLD 3 - #define E0_HYBRID_THRESHOLD 30 - #define E1_HYBRID_THRESHOLD 30 - #define E2_HYBRID_THRESHOLD 30 - #define E3_HYBRID_THRESHOLD 30 - #define E4_HYBRID_THRESHOLD 30 - #define E5_HYBRID_THRESHOLD 30 - #define E6_HYBRID_THRESHOLD 30 - #define E7_HYBRID_THRESHOLD 30 +#define X_HYBRID_THRESHOLD 100 // [mm/s] +#define X2_HYBRID_THRESHOLD 100 +#define Y_HYBRID_THRESHOLD 100 +#define Y2_HYBRID_THRESHOLD 100 +#define Z_HYBRID_THRESHOLD 3 +#define Z2_HYBRID_THRESHOLD 3 +#define Z3_HYBRID_THRESHOLD 3 +#define Z4_HYBRID_THRESHOLD 3 +#define I_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] +#define J_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] +#define K_HYBRID_THRESHOLD 3 // [linear=mm/s, rotational=°/s] +#define U_HYBRID_THRESHOLD 3 // [mm/s] +#define V_HYBRID_THRESHOLD 3 +#define W_HYBRID_THRESHOLD 3 +#define E0_HYBRID_THRESHOLD 30 +#define E1_HYBRID_THRESHOLD 30 +#define E2_HYBRID_THRESHOLD 30 +#define E3_HYBRID_THRESHOLD 30 +#define E4_HYBRID_THRESHOLD 30 +#define E5_HYBRID_THRESHOLD 30 +#define E6_HYBRID_THRESHOLD 30 +#define E7_HYBRID_THRESHOLD 30 - /** - * Use StallGuard to home / probe X, Y, Z. - * - * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only - * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin. - * X, Y, and Z homing will always be done in spreadCycle mode. - * - * X/Y/Z_STALL_SENSITIVITY is the default stall threshold. - * Use M914 X Y Z to set the stall threshold at runtime: - * - * Sensitivity TMC2209 Others - * HIGHEST 255 -64 (Too sensitive => False positive) - * LOWEST 0 63 (Too insensitive => No trigger) - * - * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }. - * - * SPI_ENDSTOPS *** TMC2130/TMC5160 Only *** - * Poll the driver through SPI to determine load when homing. - * Removes the need for a wire from DIAG1 to an endstop pin. - * - * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when - * homing and adds a guard period for endstop triggering. - * - * Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis. - * @section tmc/stallguard - */ - //#define SENSORLESS_HOMING // StallGuard capable drivers only +/** + * Use StallGuard to home / probe X, Y, Z. + * + * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only + * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin. + * X, Y, and Z homing will always be done in spreadCycle mode. + * + * X/Y/Z_STALL_SENSITIVITY is the default stall threshold. + * Use M914 X Y Z to set the stall threshold at runtime: + * + * Sensitivity TMC2209 Others + * HIGHEST 255 -64 (Too sensitive => False positive) + * LOWEST 0 63 (Too insensitive => No trigger) + * + * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }. + * + * SPI_ENDSTOPS *** TMC2130/TMC5160 Only *** + * Poll the driver through SPI to determine load when homing. + * Removes the need for a wire from DIAG1 to an endstop pin. + * + * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when + * homing and adds a guard period for endstop triggering. + * + * Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis. + * @section tmc/stallguard + */ +// #define SENSORLESS_HOMING // StallGuard capable drivers only - #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) - // TMC2209: 0...255. TMC2130: -64...63 - #define X_STALL_SENSITIVITY 8 - #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY - #define Y_STALL_SENSITIVITY 8 - #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY - //#define Z_STALL_SENSITIVITY 8 - //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY - //#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY - //#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY - //#define I_STALL_SENSITIVITY 8 - //#define J_STALL_SENSITIVITY 8 - //#define K_STALL_SENSITIVITY 8 - //#define U_STALL_SENSITIVITY 8 - //#define V_STALL_SENSITIVITY 8 - //#define W_STALL_SENSITIVITY 8 - //#define SPI_ENDSTOPS // TMC2130/TMC5160 only - //#define IMPROVE_HOMING_RELIABILITY - #endif +#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) +// TMC2209: 0...255. TMC2130: -64...63 +#define X_STALL_SENSITIVITY 8 +#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY +#define Y_STALL_SENSITIVITY 8 +#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY +// #define Z_STALL_SENSITIVITY 8 +// #define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY +// #define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY +// #define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY +// #define I_STALL_SENSITIVITY 8 +// #define J_STALL_SENSITIVITY 8 +// #define K_STALL_SENSITIVITY 8 +// #define U_STALL_SENSITIVITY 8 +// #define V_STALL_SENSITIVITY 8 +// #define W_STALL_SENSITIVITY 8 +// #define SPI_ENDSTOPS // TMC2130/TMC5160 only +// #define IMPROVE_HOMING_RELIABILITY +#endif - // @section tmc/config +// @section tmc/config - /** - * TMC Homing stepper phase. - * - * Improve homing repeatability by homing to stepper coil's nearest absolute - * phase position. Trinamic drivers use a stepper phase table with 1024 values - * spanning 4 full steps with 256 positions each (ergo, 1024 positions). - * Full step positions (128, 384, 640, 896) have the highest holding torque. - * - * Values from 0..1023, -1 to disable homing phase for that axis. - */ - //#define TMC_HOME_PHASE { 896, 896, 896 } +/** + * TMC Homing stepper phase. + * + * Improve homing repeatability by homing to stepper coil's nearest absolute + * phase position. Trinamic drivers use a stepper phase table with 1024 values + * spanning 4 full steps with 256 positions each (ergo, 1024 positions). + * Full step positions (128, 384, 640, 896) have the highest holding torque. + * + * Values from 0..1023, -1 to disable homing phase for that axis. + */ +// #define TMC_HOME_PHASE { 896, 896, 896 } - /** - * Step on both rising and falling edge signals (as with a square wave). - */ - //#define SQUARE_WAVE_STEPPING +/** + * Step on both rising and falling edge signals (as with a square wave). + */ +// #define SQUARE_WAVE_STEPPING - /** - * Enable M122 debugging command for TMC stepper drivers. - * M122 S0/1 will enable continuous reporting. - */ - //#define TMC_DEBUG +/** + * Enable M122 debugging command for TMC stepper drivers. + * M122 S0/1 will enable continuous reporting. + */ +// #define TMC_DEBUG - /** - * You can set your own advanced settings by filling in predefined functions. - * A list of available functions can be found on the library github page - * https://github.com/teemuatlut/TMCStepper - * - * Example: - * #define TMC_ADV() { \ - * stepperX.diag0_otpw(1); \ - * stepperY.intpol(0); \ - * } - */ - #define TMC_ADV() { } +/** + * You can set your own advanced settings by filling in predefined functions. + * A list of available functions can be found on the library github page + * https://github.com/teemuatlut/TMCStepper + * + * Example: + * #define TMC_ADV() { \ + * stepperX.diag0_otpw(1); \ + * stepperY.intpol(0); \ + * } + */ +#define TMC_ADV() \ + { \ + } #endif // HAS_TRINAMIC_CONFIG || HAS_TMC26X diff --git a/Marlin/_Bootscreen.h b/Marlin/_Bootscreen.h new file mode 100644 index 0000000000..324cb4a616 --- /dev/null +++ b/Marlin/_Bootscreen.h @@ -0,0 +1,97 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/Marlin/_Statusscreen.h b/Marlin/_Statusscreen.h new file mode 100644 index 0000000000..10b3a51465 --- /dev/null +++ b/Marlin/_Statusscreen.h @@ -0,0 +1,71 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000000,B00000000,B00000000,B00000000, + B00000000,B00000011,B10000000,B00000000,B00000000, + B00000000,B00000010,B01000000,B00000000,B00000000, + B00000000,B00000010,B01010110,B01100000,B00000000, + B00000000,B00000011,B10011000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B10010000,B00000000, + B00000000,B00000010,B00010000,B01100000,B00000000 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif