From f36de8b84bccf3f5b868875e43ebe6113cb5c208 Mon Sep 17 00:00:00 2001 From: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com> Date: Fri, 1 Mar 2024 21:16:45 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=BB=20Prusa=20AIO=20bugfix-2.1.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration.h | 329 +++--- Marlin/Configuration_adv.h | 399 ++++--- Marlin/Prusa_AIO_Configuration.h | 540 +++++++++ Marlin/src/inc/MarlinConfigPre.h | 7 + Marlin/src/inc/Prusa_AIO_Changes.h | 33 + Marlin/src/inc/Prusa_AIO_Conditionals.h | 1030 +++++++++++++++++ Marlin/src/inc/Prusa_AIO_SanityCheck.h | 314 +++++ Marlin/src/inc/Prusa_AIO_Warnings.cpp | 122 ++ Marlin/src/inc/SanityCheck.h | 4 +- Marlin/src/inc/Version.h | 2 +- Marlin/src/inc/Warnings.cpp | 10 +- Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h | 2 +- Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h | 2 +- Marlin/src/pins/pins.h | 6 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 2 +- .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +- .../pins/stm32f4/pins_BTT_SKR_V2_0_common.h | 2 +- .../stm32f4/pins_MKS_ROBIN_NANO_V3_common.h | 2 +- .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 2 +- .../pins/stm32h7/pins_BTT_SKR_V3_0_common.h | 10 +- README.md | 179 +-- .../PlatformIO/scripts/preflight-checks.py | 5 + .../logo/Prusa_AIO_Black_Bear_Marlin.png | Bin 0 -> 370116 bytes config/README.md | 9 - ini/lpc176x.ini | 3 +- platformio.ini | 30 +- 26 files changed, 2588 insertions(+), 458 deletions(-) create mode 100644 Marlin/Prusa_AIO_Configuration.h create mode 100644 Marlin/src/inc/Prusa_AIO_Changes.h create mode 100644 Marlin/src/inc/Prusa_AIO_Conditionals.h create mode 100644 Marlin/src/inc/Prusa_AIO_SanityCheck.h create mode 100644 Marlin/src/inc/Prusa_AIO_Warnings.cpp create mode 100644 buildroot/share/pixmaps/logo/Prusa_AIO_Black_Bear_Marlin.png delete mode 100644 config/README.md diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index a616bd5090..272b31e709 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -36,6 +36,7 @@ * Advanced settings can be found in Configuration_adv.h */ #define CONFIGURATION_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 //=========================================================================== //============================= Getting Started ============================= @@ -61,14 +62,14 @@ // @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 "(thisiskeithb)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) // @section machine // Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB + //#define MOTHERBOARD BOARD_RAMPS_14_EFB #endif /** @@ -79,7 +80,7 @@ * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -#define SERIAL_PORT 0 +#define SERIAL_PORT PRUSA_AIO_USB_SERIAL_PORT /** * Serial Port Baud Rate @@ -92,7 +93,7 @@ * * :[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 @@ -116,7 +117,7 @@ //#define BLUETOOTH // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME PRUSA_AIO_CUSTOM_PRINTER_NAME // 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 @@ -139,9 +140,9 @@ * TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_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 X_DRIVER_TYPE PRUSA_AIO_DRIVER_TYPE +#define Y_DRIVER_TYPE PRUSA_AIO_DRIVER_TYPE +#define Z_DRIVER_TYPE PRUSA_AIO_DRIVER_TYPE //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 @@ -153,7 +154,7 @@ //#define U_DRIVER_TYPE A4988 //#define V_DRIVER_TYPE A4988 //#define W_DRIVER_TYPE A4988 -#define E0_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE PRUSA_AIO_DRIVER_TYPE //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 @@ -544,7 +545,7 @@ * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ -#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_0 PRUSA_AIO_TEMP_SENSOR_0 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 @@ -553,7 +554,7 @@ #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 #define TEMP_SENSOR_BED 1 -#define TEMP_SENSOR_PROBE 0 +#define TEMP_SENSOR_PROBE PRUSA_AIO_TEMP_SENSOR_PROBE #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 #define TEMP_SENSOR_BOARD 0 @@ -579,15 +580,15 @@ #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 2 // (seconds) Time to wait for hotend to "settle" in M109 + #define TEMP_WINDOW 2 // (°C) Temperature proximity for the "temperature reached" timer + #define TEMP_HYSTERESIS 2 // (°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 2 // (seconds) Time to wait for bed to "settle" in M190 + #define TEMP_BED_WINDOW 3 // (°C) Temperature proximity for the "temperature reached" timer + #define TEMP_BED_HYSTERESIS 7 // (°C) Temperature proximity considered "close enough" to the target #endif #if TEMP_SENSOR_CHAMBER @@ -614,7 +615,7 @@ // Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. -#define HEATER_0_MINTEMP 5 +#define HEATER_0_MINTEMP PRUSA_AIO_HEATER_0_MINTEMP #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 @@ -628,7 +629,7 @@ // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) -#define HEATER_0_MAXTEMP 275 +#define HEATER_0_MAXTEMP PRUSA_AIO_HEATER_0_MAXTEMP #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 @@ -636,7 +637,7 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 150 +#define BED_MAXTEMP 130 // 120 + 10 #define CHAMBER_MAXTEMP 60 /** @@ -662,7 +663,7 @@ * 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 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 @@ -680,9 +681,9 @@ #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 + #define DEFAULT_Kp PRUSA_AIO_DEFAULT_Kp + #define DEFAULT_Ki PRUSA_AIO_DEFAULT_Ki + #define DEFAULT_Kd PRUSA_AIO_DEFAULT_Kd #endif #else #define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current @@ -698,20 +699,20 @@ */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K 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_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_HEATER_POWER PRUSA_AIO_CUSTOM_MPC_HEATER_POWER // (W) Heat cartridge powers. #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. + #define MPC_BLOCK_HEAT_CAPACITY PRUSA_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY // (J/K) Heat block heat capacities. + #define MPC_SENSOR_RESPONSIVENESS PRUSA_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define MPC_AMBIENT_XFER_COEFF PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF // (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. + #define MPC_AMBIENT_XFER_COEFF_FAN255 PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 // (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. @@ -722,10 +723,10 @@ // 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). + #define FILAMENT_HEAT_CAPACITY_PERMM PRUSA_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM // 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. @@ -762,7 +763,7 @@ * * 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 @@ -770,9 +771,9 @@ // 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 + #define DEFAULT_bedKp PRUSA_AIO_DEFAULT_bedKp + #define DEFAULT_bedKi PRUSA_AIO_DEFAULT_bedKi + #define DEFAULT_bedKd PRUSA_AIO_DEFAULT_bedKd // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #else @@ -830,11 +831,11 @@ #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 + #define PID_FUNCTIONAL_RANGE 5 // 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 @@ -1161,9 +1162,9 @@ * Endstop "Hit" State * Set to the state (HIGH or LOW) that applies to each endstop. */ -#define X_MIN_ENDSTOP_HIT_STATE HIGH +#define X_MIN_ENDSTOP_HIT_STATE PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE #define X_MAX_ENDSTOP_HIT_STATE HIGH -#define Y_MIN_ENDSTOP_HIT_STATE HIGH +#define Y_MIN_ENDSTOP_HIT_STATE PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE #define Y_MAX_ENDSTOP_HIT_STATE HIGH #define Z_MIN_ENDSTOP_HIT_STATE HIGH #define Z_MAX_ENDSTOP_HIT_STATE HIGH @@ -1227,7 +1228,7 @@ * Override with M92 (when enabled below) * 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 PRUSA_AIO_DEFAULT_AXIS_STEPS_PER_UNIT /** * Enable support for M92. Disable to save at least ~530 bytes of flash. @@ -1239,11 +1240,11 @@ * Override with M203 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE { 200, 200, 30, 80 } -//#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 { 300, 300, 10, 100 } // ...or, set your own edit limits #endif /** @@ -1252,11 +1253,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 { 2500, 2500, 100, 10000 } -//#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 { 4000, 4000, 200, 20000 } // ...or, set your own edit limits #endif /** @@ -1267,9 +1268,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 2000 // X, Y, Z and E acceleration for printing moves +#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts +#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves /** * Default Jerk limits (mm/s) @@ -1279,12 +1280,12 @@ * 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_XJERK 6.0 + #define DEFAULT_YJERK 6.0 #define DEFAULT_ZJERK 0.3 - #define DEFAULT_EJERK 5.0 + #define DEFAULT_EJERK 4.0 //#define DEFAULT_IJERK 0.3 //#define DEFAULT_JJERK 0.3 //#define DEFAULT_KJERK 0.3 @@ -1308,7 +1309,7 @@ * 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 JUNCTION_DEVIATION_MM 0.012 // (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 @@ -1337,10 +1338,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 @@ -1572,7 +1573,7 @@ * | [-] | * O-- FRONT --+ */ -#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#define NOZZLE_TO_PROBE_OFFSET PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET // Enable and set to use a specific tool for probing. Disable to allow any tool. #define PROBING_TOOL 0 @@ -1582,13 +1583,13 @@ // 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 +#define PROBING_MARGIN PRUSA_AIO_PROBING_MARGIN // X and Y axis travel speed (mm/min) between probes -#define XY_PROBE_FEEDRATE (133*60) +#define XY_PROBE_FEEDRATE (180*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 (15*60) // Feedrate (mm/min) for the "accurate" probe of each point #define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2) @@ -1638,7 +1639,7 @@ * 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 MULTIPLE_PROBING 3 //#define EXTRA_PROBING 1 /** @@ -1655,24 +1656,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_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) +#define Z_CLEARANCE_DEPLOY_PROBE PRUSA_AIO_Z_CLEARANCE_DEPLOY_PROBE // (mm) Z Clearance for Deploy/Stow +#define Z_CLEARANCE_BETWEEN_PROBES PRUSA_AIO_Z_CLEARANCE_BETWEEN_PROBES // (mm) Z Clearance between probe points +#define Z_CLEARANCE_MULTI_PROBE PRUSA_AIO_Z_CLEARANCE_MULTI_PROBE // (mm) Z Clearance between multiple probes +//#define Z_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) //#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 -4 // (mm) Farthest distance below the trigger-point to go before stopping // For M851 provide ranges for adjusting the X, Y, and Z probe offsets //#define PROBE_OFFSET_XMIN -50 // (mm) //#define PROBE_OFFSET_XMAX 50 // (mm) //#define PROBE_OFFSET_YMIN -50 // (mm) //#define PROBE_OFFSET_YMAX 50 // (mm) -//#define PROBE_OFFSET_ZMIN -20 // (mm) -//#define PROBE_OFFSET_ZMAX 20 // (mm) +#define PROBE_OFFSET_ZMIN -5 // (mm) +#define PROBE_OFFSET_ZMAX 1 // (mm) // 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 @@ -1740,9 +1741,9 @@ // @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_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 @@ -1753,7 +1754,7 @@ // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false +//#define INVERT_E0_DIR false #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false @@ -1812,16 +1813,16 @@ // @section geometry // The size of the printable area -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE 250 +#define Y_BED_SIZE 210 // Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions. #define X_MIN_POS 0 -#define Y_MIN_POS 0 +#define Y_MIN_POS -4 #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 X_MAX_POS (X_BED_SIZE + 4) +#define Y_MAX_POS (Y_BED_SIZE + 2.5) +#define Z_MAX_POS PRUSA_AIO_Z_MAX_POS //#define I_MIN_POS 0 //#define I_MAX_POS 50 //#define J_MIN_POS 0 @@ -1873,7 +1874,7 @@ #endif #if ANY(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 /** @@ -1889,12 +1890,12 @@ * 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_STATE LOW // Pin state indicating that filament is NOT present. + #define FIL_RUNOUT_STATE HIGH // 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. @@ -1941,7 +1942,7 @@ // 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 + #define FILAMENT_RUNOUT_DISTANCE_MM 2 #ifdef FILAMENT_RUNOUT_DISTANCE_MM // Enable this option to use an encoder disc that toggles the runout pin @@ -2048,7 +2049,7 @@ * leveling immediately after G28. */ //#define RESTORE_LEVELING_AFTER_G28 -//#define ENABLE_LEVELING_AFTER_G28 +#define ENABLE_LEVELING_AFTER_G28 /** * Auto-leveling needs preheating @@ -2093,11 +2094,11 @@ /** * Enable the G26 Mesh Validation Pattern tool. */ - //#define G26_MESH_VALIDATION + #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_HOTEND_TEMP 210 // (°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. @@ -2109,7 +2110,7 @@ #if ANY(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_X 7 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Probe along the Y axis, advancing X after each column @@ -2119,13 +2120,13 @@ // Beyond the probed grid, continue the implied tilt? // Default is to maintain the height of the nearest edge. - //#define EXTRAPOLATE_BEYOND_GRID + #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 + #define ABL_BILINEAR_SUBDIVISION #if ENABLED(ABL_BILINEAR_SUBDIVISION) // Number of subdivisions between probe points #define BILINEAR_SUBDIVISIONS 3 @@ -2141,11 +2142,11 @@ //#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 MESH_INSET 0 // Set Mesh bounds as an inset region of the bed + #define GRID_MAX_POINTS_X 9 // 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_TILT_ON_MESH_POINTS // Use nearest mesh points with G29 J for better Z reference //#define UBL_TILT_ON_MESH_POINTS_3POINT // Use nearest mesh points with G29 J0 (3-point) @@ -2153,10 +2154,10 @@ #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 0 // 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 /** * Probing not allowed within the position of an obstacle. @@ -2195,12 +2196,12 @@ * 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_MENU // Add a menu to edit mesh points #endif // Add a menu item to move between bed corners for manual bed adjustment @@ -2245,8 +2246,8 @@ // 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_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -4 //#define MANUAL_Z_HOME_POS 0 //#define MANUAL_I_HOME_POS 0 //#define MANUAL_J_HOME_POS 0 @@ -2262,7 +2263,7 @@ * - 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 @@ -2271,7 +2272,7 @@ #endif // Homing speeds (linear=mm/min, rotational=°/min) -#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +#define HOMING_FEEDRATE_MM_M PRUSA_AIO_HOMING_FEEDRATE_MM_M // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -2306,7 +2307,7 @@ * +-------------->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: @@ -2315,9 +2316,9 @@ #define XY_SIDE_AD 200 // Or, set the XY skew factor directly: - //#define XY_SKEW_FACTOR 0.0 + #define XY_SKEW_FACTOR 0.0 - //#define SKEW_CORRECTION_FOR_Z + #define SKEW_CORRECTION_FOR_Z #if ENABLED(SKEW_CORRECTION_FOR_Z) #define XZ_DIAG_AC 282.8427124746 #define XZ_DIAG_BD 282.8427124746 @@ -2326,12 +2327,12 @@ #define YZ_SIDE_AD 200 // Or, set the Z skew factors directly: - //#define XZ_SKEW_FACTOR 0.0 - //#define YZ_SKEW_FACTOR 0.0 + #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 + #define SKEW_CORRECTION_GCODE #endif //============================================================================= @@ -2349,13 +2350,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 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 @@ -2388,17 +2389,59 @@ // 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_TEMP_CHAMBER 35 +#define PREHEAT_1_TEMP_HOTEND 215 +#define PREHEAT_1_TEMP_BED 60 +#define PREHEAT_1_TEMP_CHAMBER 0 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_TEMP_CHAMBER 35 +#define PREHEAT_2_LABEL "PET" +#define PREHEAT_2_TEMP_HOTEND 230 +#define PREHEAT_2_TEMP_BED 85 +#define PREHEAT_2_TEMP_CHAMBER 0 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_3_LABEL "ASA" +#define PREHEAT_3_TEMP_HOTEND 260 +#define PREHEAT_3_TEMP_BED 105 +#define PREHEAT_3_TEMP_CHAMBER 0 +#define PREHEAT_3_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_4_LABEL "PC" +#define PREHEAT_4_TEMP_HOTEND 275 +#define PREHEAT_4_TEMP_BED 110 +#define PREHEAT_4_TEMP_CHAMBER 0 +#define PREHEAT_4_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_5_LABEL "ABS" +#define PREHEAT_5_TEMP_HOTEND 255 +#define PREHEAT_5_TEMP_BED 100 +#define PREHEAT_5_TEMP_CHAMBER 0 +#define PREHEAT_5_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_6_LABEL "HIPS" +#define PREHEAT_6_TEMP_HOTEND 220 +#define PREHEAT_6_TEMP_BED 100 +#define PREHEAT_6_TEMP_CHAMBER 0 +#define PREHEAT_6_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_7_LABEL "PP" +#define PREHEAT_7_TEMP_HOTEND 254 +#define PREHEAT_7_TEMP_BED 100 +#define PREHEAT_7_TEMP_CHAMBER 0 +#define PREHEAT_7_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_8_LABEL "FLEX" +#define PREHEAT_8_TEMP_HOTEND 240 +#define PREHEAT_8_TEMP_BED 50 +#define PREHEAT_8_TEMP_CHAMBER 0 +#define PREHEAT_8_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_9_LABEL "PVB" +#define PREHEAT_9_TEMP_HOTEND 215 +#define PREHEAT_9_TEMP_BED 75 +#define PREHEAT_9_TEMP_CHAMBER 0 +#define PREHEAT_9_FAN_SPEED 0 // Value from 0 to 255 + // @section motion /** @@ -2412,11 +2455,11 @@ * P1 Raise the nozzle always to Z-park height. * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. */ -//#define NOZZLE_PARK_FEATURE +#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } + #define NOZZLE_PARK_POINT { (X_MAX_POS - 10), (Y_MIN_POS + 10), 20 } #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2546,9 +2589,9 @@ * * View the current statistics with M78. */ -//#define PRINTCOUNTER +#define PRINTCOUNTER #if ENABLED(PRINTCOUNTER) - #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print. + #define PRINTCOUNTER_SAVE_INTERVAL TERN(PRUSA_AIO_REAL_EEPROM, 60, 0) // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print. #endif // @section security @@ -2600,7 +2643,7 @@ * * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } */ -#define LCD_LANGUAGE en +#define LCD_LANGUAGE PRUSA_AIO_LCD_LANGUAGE /** * LCD Character Set @@ -2639,14 +2682,14 @@ * 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 * * Use CRC checks and retries on the SD communication. */ -//#define SD_CHECK_AND_RETRY +#define SD_CHECK_AND_RETRY /** * LCD Menu Items @@ -2719,7 +2762,7 @@ // // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. // -//#define INDIVIDUAL_AXIS_HOMING_MENU +#define INDIVIDUAL_AXIS_HOMING_MENU //#define INDIVIDUAL_AXIS_HOMING_SUBMENU // @@ -2728,7 +2771,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. @@ -3421,7 +3464,7 @@ #endif #if ENABLED(TFT_COLOR_UI) - //#define SINGLE_TOUCH_NAVIGATION + #define SINGLE_TOUCH_NAVIGATION #endif #endif @@ -3445,7 +3488,7 @@ // Set number of user-controlled fans. Disable to use all board-defined fans. // :[1,2,3,4,5,6,7,8] -//#define NUM_M106_FANS 1 +#define NUM_M106_FANS 1 // 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 @@ -3457,7 +3500,7 @@ // However, control resolution will be halved for each increment; // at zero value, there are 128 effective control positions. // :[0,1,2,3,4,5,6,7] -#define SOFT_PWM_SCALE 0 +#define SOFT_PWM_SCALE PRUSA_AIO_SOFT_PWM_SCALE // If SOFT_PWM_SCALE is set to a value higher than 0, dithering can // be used to mitigate the associated resolution loss. If enabled, @@ -3530,23 +3573,23 @@ // Support for Adafruit NeoPixel LED driver //#define NEOPIXEL_LED #if ENABLED(NEOPIXEL_LED) - #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc. + //#define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc. // See https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.h //#define NEOPIXEL_PIN 4 // LED driving pin //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE //#define NEOPIXEL2_PIN 5 - #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.) - #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once. - #define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255) - //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup + //#define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.) + //#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once. + //#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255) + //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup // Support for second Adafruit NeoPixel LED driver controlled with M150 S1 ... //#define NEOPIXEL2_SEPARATE #if ENABLED(NEOPIXEL2_SEPARATE) - #define NEOPIXEL2_PIXELS 15 // Number of LEDs in the second strip - #define NEOPIXEL2_BRIGHTNESS 127 // Initial brightness (0-255) - #define NEOPIXEL2_STARTUP_TEST // Cycle through colors at startup - #define NEOPIXEL_M150_DEFAULT -1 // Default strip for M150 without 'S'. Use -1 to set all by default. + //#define NEOPIXEL2_PIXELS 15 // Number of LEDs in the second strip + //#define NEOPIXEL2_BRIGHTNESS 127 // Initial brightness (0-255) + //#define NEOPIXEL2_STARTUP_TEST // Cycle through colors at startup + #define NEOPIXEL_M150_DEFAULT -1 // Default strip for M150 without 'S'. Use -1 to set all by default. #else //#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel #endif diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 299c6418f3..9c179643c5 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -31,6 +31,7 @@ * Basic settings can be found in Configuration.h */ #define CONFIGURATION_ADV_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 // @section develop @@ -304,8 +305,8 @@ * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ #if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) + #define THERMAL_PROTECTION_PERIOD 60 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 10 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -335,8 +336,8 @@ * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // (seconds) - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) + #define THERMAL_PROTECTION_BED_PERIOD 60 // (seconds) + #define THERMAL_PROTECTION_BED_HYSTERESIS 8 // (°C) /** * As described above, except for the bed (M140/M190/M303). @@ -547,7 +548,7 @@ * Hotend Idle Timeout * Prevent filament in the nozzle from charring and causing a critical jam. */ -//#define HOTEND_IDLE_TIMEOUT +#define HOTEND_IDLE_TIMEOUT #if ENABLED(HOTEND_IDLE_TIMEOUT) #define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection #define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection @@ -590,7 +591,7 @@ // Use TEMP_SENSOR_SOC as a trigger for enabling the controller fan //#define CONTROLLER_FAN_MIN_SOC_TEMP 40 // (°C) Turn on the fan if the SoC reaches this temperature - //#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings + #define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings #if ENABLED(CONTROLLER_FAN_EDITABLE) #define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu #endif @@ -602,7 +603,7 @@ * gets it spinning reliably for a short time before setting the requested speed. * (Does not work on Sanguinololu with FAN_SOFT_PWM.) */ -//#define FAN_KICKSTART_TIME 100 // (ms) +#define FAN_KICKSTART_TIME 100 // (ms) //#define FAN_KICKSTART_POWER 180 // 64-255 // Some coolers may require a non-zero "off" state. @@ -620,7 +621,7 @@ * * Define one or both of these to override the default 0-255 range. */ -//#define FAN_MIN_PWM 50 +#define FAN_MIN_PWM PRUSA_AIO_FAN_MIN_PWM //#define FAN_MAX_PWM 128 /** @@ -681,7 +682,7 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ -#define E0_AUTO_FAN_PIN -1 +#define E0_AUTO_FAN_PIN PRUSA_AIO_E0_AUTO_FAN_PIN #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 @@ -923,12 +924,12 @@ * the position of the toolhead relative to the workspace. */ -//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing +#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing -#define HOMING_BUMP_MM { 5, 5, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump -#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) +#define HOMING_BUMP_MM { 0, 0, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump +#define HOMING_BUMP_DIVISOR { 1, 1, 1 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (linear=mm, rotational=°) Backoff from endstops after homing +#define HOMING_BACKOFF_POST_MM { 2, 2, 0 } // (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 @@ -1003,7 +1004,7 @@ * * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset. */ - //#define BLTOUCH_HS_MODE true + #define BLTOUCH_HS_MODE true #ifdef BLTOUCH_HS_MODE // The probe Z offset (M851 Z) is the height at which the probe triggers. @@ -1204,16 +1205,16 @@ //#define INPUT_SHAPING_Y #if ANY(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). + #define SHAPING_FREQ_X PRUSA_AIO_SHAPING_FREQ_X // (Hz) The default dominant resonant frequency on the X axis. + #define SHAPING_ZETA_X PRUSA_AIO_SHAPING_ZETA_X // 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). + #define SHAPING_FREQ_Y PRUSA_AIO_SHAPING_FREQ_Y // (Hz) The default dominant resonant frequency on the Y axis. + #define SHAPING_ZETA_Y PRUSA_AIO_SHAPING_ZETA_Y // 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. + #define SHAPING_MENU // Add a menu to the LCD to set shaping parameters. #endif // @section motion @@ -1243,7 +1244,7 @@ #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_Z // Disable if the nozzle could fall onto your printed part! //#define DISABLE_IDLE_I //#define DISABLE_IDLE_J //#define DISABLE_IDLE_K @@ -1263,7 +1264,7 @@ // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN #if ENABLED(SLOWDOWN) - #define SLOWDOWN_DIVISOR 2 + #define SLOWDOWN_DIVISOR 4 #endif /** @@ -1394,7 +1395,7 @@ * 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 @@ -1493,14 +1494,14 @@ #endif #if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - //#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu + #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_START_Z -0.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 } @@ -1529,7 +1530,7 @@ #endif // Include a page of printer information in the LCD Main Menu - //#define LCD_INFO_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 @@ -1579,10 +1580,10 @@ #if ENABLED(SHOW_BOOTSCREEN) #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) #if ANY(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) + //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif #if HAS_MARLINUI_U8GLIB - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. + #define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. @@ -1593,7 +1594,7 @@ //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. #endif - //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu + #define SOUND_MENU_ITEM // Add a mute option to the LCD menu #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state #if HAS_WIRED_LCD @@ -1604,7 +1605,7 @@ //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) // Scroll a longer status message into view - //#define STATUS_MESSAGE_SCROLLING + #define STATUS_MESSAGE_SCROLLING // Apply a timeout to low-priority status messages //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) @@ -1624,23 +1625,23 @@ */ //#define LED_CONTROL_MENU #if ENABLED(LED_CONTROL_MENU) - #define LED_COLOR_PRESETS // Enable the Preset Color menu option + //#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_RED PRUSA_AIO_LED_USER_PRESET_RED // User defined RED value + #define LED_USER_PRESET_GREEN PRUSA_AIO_LED_USER_PRESET_GREEN // User defined GREEN value + #define LED_USER_PRESET_BLUE PRUSA_AIO_LED_USER_PRESET_BLUE // User defined BLUE value + #define LED_USER_PRESET_WHITE PRUSA_AIO_LED_USER_PRESET_WHITE // 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 + #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 + #define NEO2_USER_PRESET_RED PRUSA_AIO_NEO2_USER_PRESET_RED // User defined RED value + #define NEO2_USER_PRESET_GREEN PRUSA_AIO_NEO2_USER_PRESET_GREEN // User defined GREEN value + #define NEO2_USER_PRESET_BLUE PRUSA_AIO_NEO2_USER_PRESET_BLUE // User defined BLUE value + #define NEO2_USER_PRESET_WHITE PRUSA_AIO_NEO2_USER_PRESET_WHITE // 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 @@ -1656,7 +1657,7 @@ #endif // 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 @@ -1671,7 +1672,7 @@ #if HAS_DISPLAY && ANY(HAS_MEDIA, 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') + #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 @@ -1713,7 +1714,7 @@ #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_RELEASECOMMAND "M84XYE" // 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. @@ -1729,7 +1730,7 @@ //#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 "G27 P2\n" SD_FINISHED_RELEASECOMMAND // 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 @@ -1815,11 +1816,11 @@ // 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!) @@ -1871,7 +1872,7 @@ /** * Native USB Host supported by some boards (USB OTG) */ - //#define USE_OTG_USB_HOST + #define USE_OTG_USB_HOST #if DISABLED(USE_OTG_USB_HOST) #define USB_CS_PIN SDSS @@ -1904,11 +1905,11 @@ //#define CONFIGURATION_EMBEDDING // Add an optimized binary file transfer mode, initiated with 'M28 B1' - //#define BINARY_FILE_TRANSFER + #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 + #define CUSTOM_FIRMWARE_UPLOAD #endif /** @@ -1920,7 +1921,7 @@ * * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ] */ - //#define SDCARD_CONNECTION LCD + #define SDCARD_CONNECTION PRUSA_AIO_SDCARD_CONNECTION // Enable if SD detect is rendered useless (e.g., by using an SD extender) //#define NO_SD_DETECT @@ -1964,7 +1965,7 @@ // 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 + #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. @@ -2012,7 +2013,7 @@ //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames // Only one STATUS_HEAT_* option can be enabled - //#define STATUS_HEAT_PERCENT // Show heating in a progress bar + #define STATUS_HEAT_PERCENT // Show heating in a progress bar //#define STATUS_HEAT_POWER // Show heater output power as a vertical bar // Frivolous Game Options @@ -2266,9 +2267,9 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#define BABYSTEPPING #if ENABLED(BABYSTEPPING) - //#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support + #define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support //#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! @@ -2277,19 +2278,19 @@ #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. + #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. + #define DOUBLECLICK_MAX_INTERVAL 800 // 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. + #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. + #define MOVE_Z_IDLE_MULTIPLICATOR 10 // Multiply 1mm by this factor for the move step size. #endif #endif //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 - //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping + #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_GFX_OVERLAY // Enable graphical overlay on Z-offset editor @@ -2313,12 +2314,12 @@ * * 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 + #define ADVANCE_K 0.00 // (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. @@ -2404,15 +2405,15 @@ */ //#define G29_RETRY_AND_RECOVER #if ENABLED(G29_RETRY_AND_RECOVER) - #define G29_MAX_RETRIES 3 + #define G29_MAX_RETRIES 0 #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_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 @@ -2501,7 +2502,7 @@ #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 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 @@ -2598,7 +2599,7 @@ #if ALL(HAS_MEDIA, DIRECT_STEPPING) #define BLOCK_BUFFER_SIZE 8 #elif HAS_MEDIA - #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_SIZE 32 #else #define BLOCK_BUFFER_SIZE 16 #endif @@ -2607,7 +2608,7 @@ // The ASCII buffer for serial input #define MAX_CMD_SIZE 96 -#define BUFSIZE 4 +#define BUFSIZE 32 // Transmission to Host Buffer Size // To save 386 bytes of flash (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. @@ -2616,7 +2617,7 @@ // For debug-echo: 128 bytes for the optimal speed. // Other output doesn't need to be that speedy. // :[0, 2, 4, 8, 16, 32, 64, 128, 256] -#define TX_BUFFER_SIZE 0 +#define TX_BUFFER_SIZE 32 // Host Receive Buffer Size // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. @@ -2654,7 +2655,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) @@ -2685,7 +2686,7 @@ //#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. @@ -2887,28 +2888,28 @@ * * 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_FEEDRATE 40 // (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_FEEDRATE 20 // (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. + #define FILAMENT_CHANGE_UNLOAD_LENGTH 120 // (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. + #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 10 // (mm/s) Slow move when starting load. + #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 20 // (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_FEEDRATE 20 // (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. + #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 60 // (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. + #define ADVANCED_PAUSE_PURGE_LENGTH 35 // (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. @@ -2916,21 +2917,21 @@ //#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_RETRACT 5 // (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_NOZZLE_TIMEOUT (3*60) // (seconds) Time limit before the nozzle is turned off for safety. + #define FILAMENT_CHANGE_ALERT_BEEPS 20 // 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 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_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 CONFIGURE_FILAMENT_CHANGE // Add M603 G-code and menu items. Requires ~1.3K bytes of flash. #endif @@ -2969,10 +2970,10 @@ #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_CURRENT PRUSA_AIO_X_CURRENT // (mA) RMS current. Multiply by 1.414 for peak current. + #define X_CURRENT_HOME PRUSA_AIO_X_CURRENT_HOME // (mA) RMS current for sensorless homing #define X_MICROSTEPS 16 // 0..256 - #define X_RSENSE 0.11 + #define X_RSENSE PRUSA_AIO_DRIVER_RSENSE #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 @@ -2989,10 +2990,10 @@ #endif #if AXIS_IS_TMC_CONFIG(Y) - #define Y_CURRENT 800 - #define Y_CURRENT_HOME Y_CURRENT + #define Y_CURRENT PRUSA_AIO_Y_CURRENT + #define Y_CURRENT_HOME PRUSA_AIO_Y_CURRENT_HOME #define Y_MICROSTEPS 16 - #define Y_RSENSE 0.11 + #define Y_RSENSE PRUSA_AIO_DRIVER_RSENSE #define Y_CHAIN_POS -1 //#define Y_INTERPOLATE true //#define Y_HOLD_MULTIPLIER 0.5 @@ -3009,10 +3010,10 @@ #endif #if AXIS_IS_TMC_CONFIG(Z) - #define Z_CURRENT 800 + #define Z_CURRENT 450 #define Z_CURRENT_HOME Z_CURRENT #define Z_MICROSTEPS 16 - #define Z_RSENSE 0.11 + #define Z_RSENSE PRUSA_AIO_DRIVER_RSENSE #define Z_CHAIN_POS -1 //#define Z_INTERPOLATE true //#define Z_HOLD_MULTIPLIER 0.5 @@ -3022,7 +3023,7 @@ #define Z2_CURRENT Z_CURRENT #define Z2_CURRENT_HOME Z_CURRENT_HOME #define Z2_MICROSTEPS Z_MICROSTEPS - #define Z2_RSENSE Z_RSENSE + #define Z2_RSENSE PRUSA_AIO_DRIVER_RSENSE #define Z2_CHAIN_POS -1 //#define Z2_INTERPOLATE true //#define Z2_HOLD_MULTIPLIER 0.5 @@ -3109,9 +3110,9 @@ #endif #if AXIS_IS_TMC_CONFIG(E0) - #define E0_CURRENT 800 - #define E0_MICROSTEPS 16 - #define E0_RSENSE 0.11 + #define E0_CURRENT PRUSA_AIO_E0_CURRENT + #define E0_MICROSTEPS PRUSA_AIO_E0_MICROSTEPS + #define E0_RSENSE PRUSA_AIO_DRIVER_RSENSE #define E0_CHAIN_POS -1 //#define E0_INTERPOLATE true //#define E0_HOLD_MULTIPLIER 0.5 @@ -3300,13 +3301,13 @@ * 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 CHOPPER_DEFAULT_12V // All axes (override below) + #define CHOPPER_TIMING_X PRUSA_AIO_CHOPPER_TIMING_X // 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_Y PRUSA_AIO_CHOPPER_TIMING_Y // 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_Z PRUSA_AIO_CHOPPER_TIMING_Z // 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 @@ -3315,7 +3316,7 @@ //#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_E PRUSA_AIO_CHOPPER_TIMING_E // 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 @@ -3356,11 +3357,11 @@ */ //#define HYBRID_THRESHOLD - #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X_HYBRID_THRESHOLD 160 // [mm/s] #define X2_HYBRID_THRESHOLD 100 - #define Y_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 160 #define Y2_HYBRID_THRESHOLD 100 - #define Z_HYBRID_THRESHOLD 3 + #define Z_HYBRID_THRESHOLD 40 #define Z2_HYBRID_THRESHOLD 3 #define Z3_HYBRID_THRESHOLD 3 #define Z4_HYBRID_THRESHOLD 3 @@ -3409,9 +3410,9 @@ #if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) // TMC2209: 0...255. TMC2130: -64...63 - #define X_STALL_SENSITIVITY 8 + #define X_STALL_SENSITIVITY PRUSA_AIO_X_STALL_SENSITIVITY #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY - #define Y_STALL_SENSITIVITY 8 + #define Y_STALL_SENSITIVITY PRUSA_AIO_Y_STALL_SENSITIVITY #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY //#define Z_STALL_SENSITIVITY 8 //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY @@ -3424,7 +3425,7 @@ //#define V_STALL_SENSITIVITY 8 //#define W_STALL_SENSITIVITY 8 //#define SPI_ENDSTOPS // TMC2130/TMC5160 only - //#define IMPROVE_HOMING_RELIABILITY + #define IMPROVE_HOMING_RELIABILITY #endif // @section tmc/config @@ -3444,7 +3445,7 @@ /** * Step on both rising and falling edge signals (as with a square wave). */ - //#define EDGE_STEPPING + #define EDGE_STEPPING /** * Enable M122 debugging command for TMC stepper drivers. @@ -3881,7 +3882,7 @@ /** * Extra options for the M114 "Current Position" report */ -//#define M114_DETAIL // Use 'M114` for details to check planner calculations +#define M114_DETAIL // Use 'M114` for details to check planner calculations //#define M114_REALTIME // Real current position based on forward kinematics //#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed. @@ -3891,7 +3892,7 @@ */ //#define AUTO_REPORT_FANS -//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) +#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) /** * Auto-report temperatures with M155 S @@ -3918,7 +3919,7 @@ // Include capabilities in M115 output #define EXTENDED_CAPABILITIES_REPORT #if ENABLED(EXTENDED_CAPABILITIES_REPORT) - //#define M115_GEOMETRY_REPORT + #define M115_GEOMETRY_REPORT #endif #endif @@ -3981,7 +3982,7 @@ * * Execute certain G-code commands immediately after power-on. */ -//#define STARTUP_COMMANDS "M17 Z" +#define STARTUP_COMMANDS "M17 Z" /** * G-code Macros @@ -4005,31 +4006,119 @@ // Custom Menu: Main Menu //#define CUSTOM_MENU_MAIN #if ENABLED(CUSTOM_MENU_MAIN) - //#define CUSTOM_MENU_MAIN_TITLE "Custom Commands" - #define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done" + #define CUSTOM_MENU_MAIN_TITLE "Calibration" + //#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 Completed" #define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle - #define MAIN_MENU_ITEM_1_DESC "Home & UBL Info" - #define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W" - //#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - - #define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL - #define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) - //#define MAIN_MENU_ITEM_2_CONFIRM - - //#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL - //#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) - //#define MAIN_MENU_ITEM_3_CONFIRM - - //#define MAIN_MENU_ITEM_4_DESC "Heat Bed/Home/Level" - //#define MAIN_MENU_ITEM_4_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29" - //#define MAIN_MENU_ITEM_4_CONFIRM - - //#define MAIN_MENU_ITEM_5_DESC "Home & Info" - //#define MAIN_MENU_ITEM_5_GCODE "G28\nM503" - //#define MAIN_MENU_ITEM_5_CONFIRM + // Based on Prusa's "meander" first layer calibration: https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/first_lay_cal.cpp + #define Z_CAL_DESC " Z Calibration" + #define Z_CAL_PRE_UBL "G28\nM107\nG29 L1\nG29 J2\nG0 X2.0 Y-2.0 Z0.60 F3000\nM140 S" + #define Z_CAL_PRE_ABL "G28\nM107\nM140 S" + #define Z_CAL_END "\nM0 Click to continue...\nG92 E0.00\nG1 Z0.2 X60 E9.0 F1000.0\nG1 X100.0 E12.5 F1000.0\nG92 E0.0\nG21\nG90\nM83\nG1 E-1.50000 F2100.00000\nG1 Z0.150 F7200.000\nM204 S1000\nG1 F4000\nG1 X50 Y155\nG1 F1080\nG1 X75 Y155 E2.5\nG1 X100 Y155 E2\nG1 X200 Y155 E2.62773\nG1 X200 Y135 E0.66174\nG1 X50 Y135 E3.62773\nG1 X50 Y115 E0.49386\nG1 X200 Y115 E3.62773\nG1 X200 Y95 E0.49386\nG1 X50 Y95 E3.62773\nG1 X50 Y75 E0.49386\nG1 X200 Y75 E3.62773\nG1 X200 Y55 E0.49386\nG1 X50 Y55 E3.62773\nG1 X50 Y35 E0.49386\nG1 X70 Y35 E0.49386\nG1 X70 Y34.6 E0\nG1 X50 Y34.6 E0.49386\nG1 X50 Y34.2 E0\nG1 X70 Y34.2 E0.49386\nG1 X70 Y33.8 E0\nG1 X50 Y33.8 E0.49386\nG1 X50 Y33.4 E0\nG1 X70 Y33.4 E0.49386\nG1 X70 Y33.0 E0\nG1 X50 Y33.0 E0.49386\nG1 X50 Y32.6 E0\nG1 X70 Y32.6 E0.49386\nG1 X70 Y32.2 E0\nG1 X50 Y32.2 E0.49386\nG1 X50 Y31.8 E0\nG1 X70 Y31.8 E0.49386\nG1 X70 Y31.4 E0\nG1 X50 Y31.4 E0.49386\nG1 X50 Y31.0 E0\nG1 X70 Y31.0 E0.49386\nG1 X70 Y30.6 E0\nG1 X50 Y30.6 E0.49386\nG1 X50 Y30.2 E0\nG1 X70 Y30.2 E0.49386\nG1 X70 Y29.8 E0\nG1 X50 Y29.8 E0.49386\nG1 X50 Y29.4 E0\nG1 X70 Y29.4 E0.49386\nG1 X70 Y29.0 E0\nG1 X50 Y29.0 E0.49386\nG1 X50 Y28.6 E0\nG1 X70 Y28.6 E0.49386\nG1 X70 Y28.2 E0\nG1 X50 Y28.2 E0.49386\nG1 X50 Y27.8 E0\nG1 X70 Y27.8 E0.49386\nG1 X70 Y27.4 E0\nG1 X50 Y27.4 E0.49386\nG1 X50 Y27.0 E0\nG1 X70 Y27.0 E0.49386\nG1 X70 Y26.6 E0\nG1 X50 Y26.6 E0.49386\nG1 X50 Y26.2 E0\nG1 X70 Y26.2 E0.49386\nG1 X70 Y25.8 E0\nG1 X50 Y25.8 E0.49386\nG1 X50 Y25.4 E0\nG1 X70 Y25.4 E0.49386\nG1 X70 Y25.0 E0\nG1 X50 Y25.0 E0.49386\nG1 X50 Y24.6 E0\nG1 X70 Y24.6 E0.49386\nG1 X70 Y24.2 E0\nG1 X50 Y24.2 E0.49386\nG1 X50 Y23.8 E0\nG1 X70 Y23.8 E0.49386\nG1 X70 Y23.4 E0\nG1 X50 Y23.4 E0.49386\nG1 X50 Y23.0 E0\nG1 X70 Y23.0 E0.49386\nG1 X70 Y22.6 E0\nG1 X50 Y22.6 E0.49386\nG1 X50 Y22.2 E0\nG1 X70 Y22.2 E0.49386\nG1 X70 Y21.8 E0\nG1 X50 Y21.8 E0.49386\nG1 X50 Y21.4 E0\nG1 X70 Y21.4 E0.49386\nG1 X70 Y21.0 E0\nG1 X50 Y21.0 E0.49386\nG1 X50 Y20.6 E0\nG1 X70 Y20.6 E0.49386\nG1 X70 Y20.2 E0\nG1 X50 Y20.2 E0.49386\nG1 X50 Y19.8 E0\nG1 X70 Y19.8 E0.49386\nG1 X70 Y19.4 E0\nG1 X50 Y19.4 E0.49386\nG1 E-0.07500 F2100.00000\nG4\nM107\nM104 S0\nM140 S0\nG1 X10 Y180 F4000\nG1 Z10 F1300.000\nM500\nM0 Happy Printing\nM84 XYE" + + #define MAIN_MENU_ITEM_1_DESC "Nozzle Change" + #define MAIN_MENU_ITEM_1_GCODE "G28\nG0 Z140 F2000\nM104 S275\nM117 Heating to 275C\nG4 s10\nM0 Click when finished...\nM104 S0" + #define MAIN_MENU_ITEM_1_CONFIRM + + #define MAIN_MENU_ITEM_2_DESC "Full Calibration" + #define MAIN_MENU_ITEM_2_GCODE "M140 S60\nM190 S60\nG28\nG34\nG29\nM500\nM140 S0\nG28" + #define MAIN_MENU_ITEM_2_CONFIRM + + #define MAIN_MENU_ITEM_3_DESC "Auto Cold Pull" + #define MAIN_MENU_ITEM_3_GCODE "G28\nM83\nG92 E0.00\nG21\nG0 Z30\nM109 S250\nG1 E10.00 F6.5\nM109 S95\nM18 E\nM0 Remove filament...\nM106 S0\nM104 S0" + #define MAIN_MENU_ITEM_3_CONFIRM + + #if ENABLED(PRUSA_AIO_BED_LEVELING_BILINEAR) + #define MAIN_MENU_ITEM_4_DESC PREHEAT_1_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_4_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_1_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_4_CONFIRM + + #define MAIN_MENU_ITEM_5_DESC PREHEAT_2_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_5_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_2_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_5_CONFIRM + + #define MAIN_MENU_ITEM_6_DESC PREHEAT_3_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_6_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_3_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_3_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_6_CONFIRM + + #define MAIN_MENU_ITEM_7_DESC PREHEAT_4_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_7_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_4_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_4_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_7_CONFIRM + + #define MAIN_MENU_ITEM_8_DESC PREHEAT_5_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_8_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_5_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_5_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_8_CONFIRM + + #define MAIN_MENU_ITEM_9_DESC PREHEAT_6_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_9_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_6_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_6_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_9_CONFIRM + + #define MAIN_MENU_ITEM_10_DESC PREHEAT_7_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_10_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_7_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_7_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_10_CONFIRM + + #define MAIN_MENU_ITEM_11_DESC PREHEAT_8_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_11_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_8_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_8_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_11_CONFIRM + + #define MAIN_MENU_ITEM_12_DESC PREHEAT_9_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_12_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_9_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_9_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_12_CONFIRM + + #define MAIN_MENU_ITEM_13_DESC "Reset EEPROM" + #define MAIN_MENU_ITEM_13_GCODE "M502\nM500" + #define MAIN_MENU_ITEM_13_CONFIRM + #elif ENABLED(PRUSA_AIO_BED_LEVELING_UBL) + #define MAIN_MENU_ITEM_4_DESC PREHEAT_1_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_4_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_4_CONFIRM + + #define MAIN_MENU_ITEM_5_DESC PREHEAT_2_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_5_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_5_CONFIRM + + #define MAIN_MENU_ITEM_6_DESC PREHEAT_3_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_6_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_3_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_3_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_6_CONFIRM + + #define MAIN_MENU_ITEM_7_DESC PREHEAT_4_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_7_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_4_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_4_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_7_CONFIRM + + #define MAIN_MENU_ITEM_8_DESC PREHEAT_5_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_8_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_5_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_5_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_8_CONFIRM + + #define MAIN_MENU_ITEM_9_DESC PREHEAT_6_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_9_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_6_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_6_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_9_CONFIRM + + #define MAIN_MENU_ITEM_10_DESC PREHEAT_7_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_10_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_7_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_7_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_10_CONFIRM + + #define MAIN_MENU_ITEM_11_DESC PREHEAT_8_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_11_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_8_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_8_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_11_CONFIRM + + #define MAIN_MENU_ITEM_12_DESC PREHEAT_9_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_12_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_9_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_9_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_12_CONFIRM + + #define MAIN_MENU_ITEM_13_DESC "UBL Mesh Wizard" + #define MAIN_MENU_ITEM_13_GCODE "M1004" + #define MAIN_MENU_ITEM_13_CONFIRM + + #define MAIN_MENU_ITEM_14_DESC "Adjust Point Near" + #define MAIN_MENU_ITEM_14_GCODE "G29 P4\nM500" + #define MAIN_MENU_ITEM_14_CONFIRM + + #define MAIN_MENU_ITEM_15_DESC "Reset EEPROM" + #define MAIN_MENU_ITEM_15_GCODE "M502\nM500" + #define MAIN_MENU_ITEM_15_CONFIRM + #endif #endif // @section custom config menu @@ -4037,18 +4126,18 @@ // Custom Menu: Configuration Menu //#define CUSTOM_MENU_CONFIG #if ENABLED(CUSTOM_MENU_CONFIG) - //#define CUSTOM_MENU_CONFIG_TITLE "Custom Commands" - #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M117 Wireless Script Done" - #define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_CONFIG_TITLE "Sheet Profiles" + #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M500\nM117 Sheet Loaded" + //#define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK + #define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_CONFIG_ONLY_IDLE // Only show custom menu when the machine is idle - #define CONFIG_MENU_ITEM_1_DESC "Wifi ON" - #define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" + //#define CONFIG_MENU_ITEM_1_DESC "Wifi ON" + //#define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" //#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - #define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" - #define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" + //#define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" + //#define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" //#define CONFIG_MENU_ITEM_2_CONFIRM //#define CONFIG_MENU_ITEM_3_DESC "Radio OFF" @@ -4113,12 +4202,12 @@ * Host Prompt Support enables Marlin to use the host for user prompts so * filament runout and other processes can be managed from the host side. */ -//#define HOST_ACTION_COMMANDS +#define HOST_ACTION_COMMANDS #if ENABLED(HOST_ACTION_COMMANDS) //#define HOST_PAUSE_M76 // Tell the host to pause in response to M76 - //#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback + #define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback #if ENABLED(HOST_PROMPT_SUPPORT) - //#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications + #define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications #endif //#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start //#define HOST_SHUTDOWN_MENU_ITEM // Add a menu item that tells the host to shut down @@ -4131,7 +4220,7 @@ * * Implement M486 to allow Marlin to skip objects */ -//#define CANCEL_OBJECTS +#define CANCEL_OBJECTS #if ENABLED(CANCEL_OBJECTS) #define CANCEL_OBJECTS_REPORTING // Emit the current object as a status message #endif @@ -4248,7 +4337,7 @@ */ //#define MECHANICAL_GANTRY_CALIBRATION #if ENABLED(MECHANICAL_GANTRY_CALIBRATION) - #define GANTRY_CALIBRATION_CURRENT 600 // Default calibration current in ma + #define GANTRY_CALIBRATION_CURRENT (Z_CURRENT/2) // Default calibration current in ma #define GANTRY_CALIBRATION_EXTRA_HEIGHT 15 // Extra distance in mm past Z_###_POS to move #define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move //#define GANTRY_CALIBRATION_TO_MIN // Enable to calibrate Z in the MIN direction diff --git a/Marlin/Prusa_AIO_Configuration.h b/Marlin/Prusa_AIO_Configuration.h new file mode 100644 index 0000000000..9a526a3c8a --- /dev/null +++ b/Marlin/Prusa_AIO_Configuration.h @@ -0,0 +1,540 @@ +#pragma once + +/** + * Prusa_AIO_Configuration.h + * + * This file includes basic settings like: + * + * - Getting Started with Prusa All-in-One Firmware + * - Custom Printer Name + * - Tall Bear + * - Motherboard + * - USB Flash Drive + * - ESP WiFi Addon + * - Stepper Drivers + * - Stepper Motors + * - Extruder + * - Probe & Bed Leveling + * - Fans + * - Thermal & PID Settings + * - LCD / TFT / Controller + * - Custom Menus + * - NeoPixels + * - Input Shaping + * - MK2.5S Support + */ +#define CONFIGURATION_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 + +//=========================================================================== +//============= Getting Started with Prusa All-in-One Firmware ============== +//=========================================================================== + +/** + * If you find this project helpful, please consider donating: + * + * Keith Bennett, Prusa AIO creator: https://github.com/sponsors/thisiskeithb + * https://ko-fi.com/thisiskeithb + * + * Here are some standard links to get your machine set up: + * + * Prusa AIO Wiki: https://github.com/thisiskeithb/PrusaAIO/wiki/ + * Prusa AIO Discussions: https://github.com/thisiskeithb/PrusaAIO/discussions + * + * Thank you and Happy Printing! + */ + +//=========================================================================== +//=========================== Custom Printer Name =========================== +//=========================================================================== + +// Uncomment to set a custom printer name. +//#define PRUSA_AIO_CUSTOM_PRINTER_NAME "AIO Bear" + +//=========================================================================== +//================================ Tall Bear ================================ +//=========================================================================== + +// Stock Bear frame (210mm Z) is assumed by default. Uncomment PRUSA_AIO_FRAME_BEAR_320 to enable 320mm Z support. +//#define PRUSA_AIO_FRAME_BEAR_320 + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +/** + * Motherboard Options + * + * BigTreeTech + * + * - SKR 3.0 (STM32H723VG/STM32H743VI) + * - SKR 3.0 EZ (STM32H723VG/STM32H743VI) + * - SKR 2.0 Rev. B (STM32F407VG/STM32F429VG) + * - SKR 1.4 (LPC1768) + * - SKR 1.4 Turbo (LPC1769) + * - BTT002 1.0 (STM32F407VG/STM32F407VE) + * - SKR Mini E3 V3 (STM32G0B1RE) + * - SKR Mini E3 V3.0.1 (STM32F401RC) + * - SKR Mini E3 V2 (STM32F103RC/STM32F103RE) + * + * Makerbase / MKS + * + * - Robin Nano V3 (STM32F407VG) + * - Robin Nano V3.1 (STM32F407VE) + * - Eagle V1.0 (STM32F407VE) + * - SGEN_L V2 (LPC1769) + * - Robin E3 1.0 (STM32F103RC) + * - Robin E3 1.1 (STM32F103RC) + * - Robin E3D 1.0 (STM32F103RC) + * - Robin E3D 1.1 (STM32F103RC) + * + * Motherboard Cases: https://github.com/thisiskeithb/PrusaAIO/wiki/Recommended-Motherboard-Cases + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0 +#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4 +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO +//#define PRUSA_AIO_MOTHERBOARD_BTT_BTT002 +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0 +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1 +//#define PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0 +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3 +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1 +//#define PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0 +//#define PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2 +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3 +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1 +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D +//#define PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1 + +//=========================================================================== +//============================= USB Flash Drive ============================= +//=========================================================================== + +/** + * BigTreeTech SKR V2, MKS Robin Nano V3.x, and MKS Eagle only + * + * Disabled by default. Uncomment PRUSA_AIO_FLASH_DRIVE_SUPPORT to enable support. + */ +//#define PRUSA_AIO_FLASH_DRIVE_SUPPORT + +//=========================================================================== +//============================= ESP WiFi Addon ============================== +//=========================================================================== + +/** + * BigTreeTech SKR V3/EZ, SKR V2, SKR V1.4/Turbo, BTT002, MKS Robin Nano V3.x, MKS Eagle, and MKS SGEN_L V2 only + * + * ESP3D download: https://github.com/luc-github/ESP3D + * ESP3D WEBUI download: https://github.com/luc-github/ESP3D-WEBUI + * + * Disabled by default. Uncomment PRUSA_AIO_WIFI_SUPPORT to enable support. + */ +//#define PRUSA_AIO_WIFI_SUPPORT + +//=========================================================================== +//============================= Stepper Drivers ============================= +//=========================================================================== + +/** + * Trinamic Drivers with Sensorless Homing + * + * - TMC2209 / EZ2209 + * - TMC2226 / EZ2226 + * - TMC5160 / EZ5160 + * - TMC2130 / EZ2130 - Active cooling is essential or drivers will overheat! + * + * Supported Drivers: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Drivers + * Note: If your motherboard supports five drivers, all five driver slots must be populated. + */ +#define PRUSA_AIO_DRIVERS_TMC2209 // TMC2209 / BTT EZ2209 with 0.11 Ohm RSENSE resistors +//#define PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE // BTT TMC2226 with 0.15 Ohm RSENSE resistors +//#define PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE // MKS TMC2226 / BTT EZ2226 with 0.11 Ohm RSENSE resistors +//#define PRUSA_AIO_DRIVERS_TMC5160 // TMC5160 / BTT EZ5160 with 0.075 Ohm RSENSE resistors +//#define PRUSA_AIO_DRIVERS_TMC2130 // TMC2130 / BTT EZ2130 with 0.11 Ohm RSENSE resistors + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +/** + * Extruder Stepper Motor + * + * - Stock 1.8° + * - Bondtech 1.8° pancake + * - LDO 0.9° Slim Power pancake + * - LDO Planetary Geared + * + * Supported Motors: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motors + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#define PRUSA_AIO_E_STEPPER_STOCK +//#define PRUSA_AIO_E_STEPPER_BONDTECH +//#define PRUSA_AIO_E_STEPPER_LDO_0_9 +//#define PRUSA_AIO_E_STEPPER_LDO_PLANETARY + +/** + * X/Y Stepper Motors + * + * - Stock 1.8° + * - LDO 0.9° + * - Moons 0.9° + * + * Supported Motors: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motors + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#define PRUSA_AIO_XY_STEPPERS_STOCK +//#define PRUSA_AIO_XY_STEPPERS_LDO_0_9 +//#define PRUSA_AIO_XY_STEPPERS_MOONS_0_9 + +// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. +//#define PRUSA_AIO_INVERT_X_DIR +//#define PRUSA_AIO_INVERT_Y_DIR +//#define PRUSA_AIO_INVERT_Z_DIR +//#define PRUSA_AIO_INVERT_E_DIR + +/** + * Sensorless Homing + * + * Sensitivity TMC2209 TMC5160 + * HIGHEST 255 -64 (Too sensitive => False positive) + * LOWEST 0 63 (Too insensitive => No trigger) + * + * If needed, uncomment PRUSA_AIO_*_STALL sensorless (StallGuard) settings below. + * Settings can also be customized via LCD under Configuration -> Advanced Settings -> TMC Drivers -> Sensorless Homing + */ +//#define PRUSA_AIO_X_STALL_SENSITIVITY 90 +//#define PRUSA_AIO_Y_STALL_SENSITIVITY 100 + +// If needed, uncomment PRUSA_AIO_HOMING_FEEDRATE_MM_M to customize Homing speeds (mm/min) +//#define PRUSA_AIO_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } + +//=========================================================================== +//================================ Extruder ================================= +//=========================================================================== + +/** + * Extruder + * + * - Bear extruder w/ SuperPINDA or PINDA V2 + * - Bear extruder w/ integrated BLTouch mount by Vertigo 235 https://www.printables.com/model/6606 + * - Bondtech BMG extruder w/ SuperPINDA or PINDA V2 https://www.bondtech.se/product/prusa-i3-mk3s-extruder-upgrade/ + * - Bondtech BMG extruder w/ BLTouch mount by Vertigo 235 https://www.printables.com/model/6623 + * + * Supported Extruders: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Extruders + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#define PRUSA_AIO_EXTRUDER_BEAR_PINDA +//#define PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH +//#define PRUSA_AIO_EXTRUDER_BMG_PINDA +//#define PRUSA_AIO_EXTRUDER_BMG_BLTOUCH + +//=========================================================================== +//========================== Probe & Bed Leveling =========================== +//=========================================================================== + +/** + * PINDA Probe + * + * - SuperPINDA (3 wires) + * - PINDA V2 w/ Thermistor (4 wires) + * + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#if ANY(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BMG_PINDA) + #define PRUSA_AIO_PROBE_SUPERPINDA + //#define PRUSA_AIO_PROBE_PINDA_V2 +#endif + +/* + * Custom Probe Offset + * + * Default probe offsets will be used based on the extruder selection above. + * + * If needed, uncomment to customize probe offset. This can also be customized via LCD + * under Configuration -> Advanced Settings -> Probe Offsets + */ +//#define PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET { 23, 5, 0 } + +/** + * Bed Leveling Type + * + * - Bilinear + * - Unified Bed Leveling + */ +#define PRUSA_AIO_BED_LEVELING_BILINEAR +//#define PRUSA_AIO_BED_LEVELING_UBL + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +/** + * Part Cooling Fan + * + * 24V Options: + * + * - Generic (No minimum PWM limit is applied) + * - 24V Mechatronics B5015E24B-BSR + * - 24V Delta BFB0524HH + * - 24V SoundOriginal + * + * 12V Options (MK2.5S only): + * + * - Generic (No minimum PWM limit is applied) + * - 12V SoundOriginal + * + * 5V Options (BigTreeTech BTT002 1.0 & SKR V3/EZ with DC Mode addon board only): + * + * - Generic (No minimum PWM limit is applied) + * - 5V Stock Prusa 5015 + * - 5V LDO DF5015H05S + * + * Supported Fans: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Fans + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#define PRUSA_AIO_PART_COOLING_FAN_GENERIC +//#define PRUSA_AIO_PART_COOLING_FAN_24V_MECHATRONICS_B5015E24B_BSR +//#define PRUSA_AIO_PART_COOLING_FAN_24V_DELTA_BFB0524HH +//#define PRUSA_AIO_PART_COOLING_FAN_24V_SOUNDORIGINAL +//#define PRUSA_AIO_PART_COOLING_FAN_12V_STOCK_PRUSA_MK25S_5015 +//#define PRUSA_AIO_PART_COOLING_FAN_12V_SOUNDORIGINAL +//#define PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015 +//#define PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S + +/** + * Motherboard Cooling Fan + * + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +//#define PRUSA_AIO_MOTHERBOARD_FAN + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +/** + * Standard Thermistor + * + * - Stock V6 Semitec 104NT + * - Generic NTC 100K (Type 1) + * + * High Temperature Thermistor + * + * - Slice Engineering's 450°C High Temperature Thermistor + * - Trianglelab T-D500 500°C High Temperature Thermistor (Cartridge-based Dyze Design thermistor) + * + * Supported Thermistors: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Thermistors + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ +#define PRUSA_AIO_THERMISTOR_STOCK_SEMITEC_104NT +//#define PRUSA_AIO_THERMISTOR_GENERIC_100K +//#define PRUSA_AIO_THERMISTOR_SLICE_450C +//#define PRUSA_AIO_THERMISTOR_TL_T_D500 + +/** + * Custom PID Settings + * + * Stock E3D V6 hotend and Prusa MK52 bed PID settings are enabled by default. + * + * If needed, uncomment PRUSA_AIO_CUSTOM_HOTEND_PID or PRUSA_AIO_CUSTOM_BED_PID to customize PID settings. + */ +//#define PRUSA_AIO_CUSTOM_HOTEND_PID +#if ENABLED(PRUSA_AIO_CUSTOM_HOTEND_PID) + #define PRUSA_AIO_DEFAULT_Kp 16.50 + #define PRUSA_AIO_DEFAULT_Ki 1.16 + #define PRUSA_AIO_DEFAULT_Kd 58.80 + // Find your own by running "M303 E0 C8 S210" via serial to run autotune on the hotend at 210 °C for 8 cycles. +#endif + +//#define PRUSA_AIO_CUSTOM_BED_PID +#if ENABLED(PRUSA_AIO_CUSTOM_BED_PID) + #define PRUSA_AIO_DEFAULT_bedKp 28.13 + #define PRUSA_AIO_DEFAULT_bedKi 2.09 + #define PRUSA_AIO_DEFAULT_bedKd 483.07 + // Find your own by running "M303 E-1 C8 S65" via serial to run autotune on the bed at 65 °C for 8 cycles. +#endif + +/** + * Model Predictive Control for Hotend + * + * Stock E3D V6 hotend with 40W heater cartridge is configured by default. + * + * Note: Replaces PID for the hotend + */ +//#define PRUSA_AIO_HOTEND_MPCTEMP + +// If needed, uncomment PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP to customize MPCTEMP settings. +// Use M306 T to autotune the model. See https://marlinfw.org/docs/gcode/M306.html for full details. +//#define PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP +#if ALL(PRUSA_AIO_HOTEND_MPCTEMP, PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP) + #define PRUSA_AIO_CUSTOM_MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge power. + #define PRUSA_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacity. Use M306 T to autotune the model. + #define PRUSA_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. + #define PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. + + + // Filament Heat Capacity (joules/kelvin/mm) + // Set with M306 H in your filament or start G-code. + #define PRUSA_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // PLA = 5.6e-3f (0.0056) J/K/mm + // PETG = 3.6e-3f (0.0036) J/K/mm + // ABS = 5.15e-3f (0.00515) J/K/mm + // Nylon = 5.22e-3f (0.00522) J/K/mm +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +/** + * LCD / TFT / Controller + * + * - Stock RepRapDiscount smart controller + * - OLED RepRapDiscount smart controller // OLED screen is only compatible with LPC-based motherboards. + * - BigTreeTech Dual Mode TFT // BigTreeTech TFT35, TFT50, TFT70, etc. + * - BTT Mini 12864 with NeoPixel RGB // BigTreeTech Mini 12864 V1/V2 with NeoPixel RGB + * - Fysetc Mini 12864 with NeoPixel RGB // Fysetc Mini 12864 V2.1 with NeoPixel RGB + * - MKS Mini 12864 with NeoPixel RGB // MKS Mini 12864 V3 with NeoPixel RGB + * + * LCD Covers: https://github.com/thisiskeithb/PrusaAIO/wiki/Recommended-LCD-Covers + */ +#define PRUSA_AIO_DISPLAY_STOCK_REPRAP_DISCOUNT_SMART_CONTROLLER +//#define PRUSA_AIO_DISPLAY_OLED_REPRAP_DISCOUNT_SMART_CONTROLLER +//#define PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT +//#define PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL +//#define PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL +//#define PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL + +// +// Reverse the encoder direction everywhere. +// +//#define PRUSA_AIO_REVERSE_ENCODER_DIRECTION + +/** + * LCD LANGUAGE + * + * Select the language to display on the LCD. These languages are available: + * + * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it, + * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW + * + * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } + */ +#define PRUSA_AIO_LCD_LANGUAGE en + +//=========================================================================== +//============================== Custom Menus =============================== +//=========================================================================== + +/** + * Sheet Profiles Menu + * + * Automatically adjust Z Probe Offset with M851 based on selected Sheet Profile. + * Up to 10 are supported without changes. + */ +//#define PRUSA_AIO_SHEET_PROFILES_MENU +#if ENABLED(PRUSA_AIO_SHEET_PROFILES_MENU) + #define PRUSA_AIO_SHEET_1_DESC "Smooth" // Short description of Sheet + #define PRUSA_AIO_SHEET_1_OFFSET -0.000 // Sheet offset. This should be a negative value. + + #define PRUSA_AIO_SHEET_2_DESC "Textured" + #define PRUSA_AIO_SHEET_2_OFFSET -0.000 + + //#define PRUSA_AIO_SHEET_3_DESC "Satin" + //#define PRUSA_AIO_SHEET_3_OFFSET -0.000 +#endif + +/** + * Calibration Menu + * + * Top-level menu with first layer calibration, nozzle change, automated cold pull, and more. + */ +//#define PRUSA_AIO_CALIBRATION_MENU + +//=========================================================================== +//================================ NeoPixels ================================ +//=========================================================================== + +/** + * Default LCD NeoPixel Color (Mini 12864 with NeoPixel RGB only) + * + * - WHITE, RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET + */ +#if ANY(PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL) + #define PRUSA_AIO_LCD_NEOPIXEL_COLOR_WHITE + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_RED + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_ORANGE + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_YELLOW + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_GREEN + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_BLUE + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_INDIGO + //#define PRUSA_AIO_LCD_NEOPIXEL_COLOR_VIOLET +#endif + +// NeoPixel strip is disabled by default. Uncomment to enable. +//#define PRUSA_AIO_NEOPIXEL_STRIP +#if ENABLED(PRUSA_AIO_NEOPIXEL_STRIP) + /** + * NeoPixel Strip Type + * + * - NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc. + * + * 60 LEDs/meter: https://www.amazon.com/dp/B018X04ES2 + * Wiring Guide: https://github.com/thisiskeithb/PrusaAIO/wiki/Supported-Motherboards-&-Wiring-Guide + */ + #define PRUSA_AIO_NEOPIXEL_STRIP_TYPE NEO_GRB + #define PRUSA_AIO_NEOPIXEL_STRIP_LED_COUNT 17 // 17 NeoPixels fit in the top 2040 extrusion (60 LEDs/meter) + #define PRUSA_AIO_NEOPIXEL_STRIP_BRIGHTNESS 255 // 255 is max brightness + + /** + * Default NeoPixel Strip Color + * + * - WHITE, RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET + */ + #define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_WHITE + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_RED + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_ORANGE + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_YELLOW + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_GREEN + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_BLUE + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_INDIGO + //#define PRUSA_AIO_NEOPIXEL_STRIP_COLOR_VIOLET +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +/** + * Input Shaping -- EXPERIMENTAL + * + * Zero Vibration (ZV) Input Shaping for X and/or Y movements. + * + * See https://github.com/MarlinFirmware/Marlin/pull/24797 for configuration & full details. + * + * Tune with M593 D F: + * + * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. + * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. + * X<1> Set the given parameters only for the X axis. + * Y<1> Set the given parameters only for the Y axis. + */ +//#define PRUSA_AIO_INPUT_SHAPING +#if ENABLED(PRUSA_AIO_INPUT_SHAPING) + #define PRUSA_AIO_SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. + #define PRUSA_AIO_SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. + #define PRUSA_AIO_SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). + #define PRUSA_AIO_SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). + //#define PRUSA_AIO_SHAPING_MIN_FREQ 20 // By default the minimum of the shaping frequencies. Override to affect SRAM usage. + //#define PRUSA_AIO_SHAPING_MAX_STEPRATE 10000 // By default the maximum total step rate of the shaped axes. Override to affect SRAM usage. +#endif + +//=========================================================================== +//============================= MK2.5S Support ============================== +//=========================================================================== + +// Uncomment to enable Prusa MK2.5S support. X & Y endstops are required. +//#define PRUSA_AIO_MK25S_SUPPORT diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index c2191ab1b7..4c7112ea4c 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -36,6 +36,13 @@ #include "../core/macros.h" #include "../core/boards.h" + +// PRUSA_AIO files +#include "../../Prusa_AIO_Configuration.h" +#include "Prusa_AIO_Changes.h" +#include "Prusa_AIO_SanityCheck.h" +#include "Prusa_AIO_Conditionals.h" + #include "../../Configuration.h" #ifdef CUSTOM_VERSION_FILE diff --git a/Marlin/src/inc/Prusa_AIO_Changes.h b/Marlin/src/inc/Prusa_AIO_Changes.h new file mode 100644 index 0000000000..a35156d8a1 --- /dev/null +++ b/Marlin/src/inc/Prusa_AIO_Changes.h @@ -0,0 +1,33 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Prusa_AIO_Changes.h + * Alert about Prusa_AIO_Configuration.h changes at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 + +#ifdef PRUSA_AIO_PRINTER_NAME + #error "PRUSA_AIO_PRINTER_NAME is now PRUSA_AIO_CUSTOM_PRINTER_NAME. Please update your config." +#elif defined(PRUSA_AIO_FRAME_BEAR_210) + #error "PRUSA_AIO_FRAME_BEAR_210 is no longer used and 210mm Z is assumed by default. Please update your config." +#elif defined(PRUSA_AIO_E_STEPPER_BONDTECH_MOTECH) + #error "PRUSA_AIO_E_STEPPER_BONDTECH_MOTECH is now PRUSA_AIO_E_STEPPER_BONDTECH. Please update your config." +#elif defined(PRUSA_AIO_THERMISTOR_DYZE_DESIGN) + #error "PRUSA_AIO_THERMISTOR_DYZE_DESIGN is now PRUSA_AIO_THERMISTOR_TL_T_D500. Please update your config." +#elif defined(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3) + #error "PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3 is now PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0. Please update your config." +#elif defined(PRUSA_AIO_DISPLAY_MINI_12864_NEOPIXEL) + #error "PRUSA_AIO_DISPLAY_MINI_12864_NEOPIXEL is now PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, or PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL. Please update your config." +#elif defined(PRUSA_AIO_DRIVERS_BTT_TMC2226) + #error "PRUSA_AIO_DRIVERS_BTT_TMC2226 is now PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE. Please update your config." +#elif defined(PRUSA_AIO_DRIVERS_MKS_TMC2226) + #error "PRUSA_AIO_DRIVERS_MKS_TMC2226 is now PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE. Please update your config." +#elif defined(PRUSA_AIO_FT_MOTION) + #error "PRUSA_AIO_FT_MOTION has been removed to simplify Prusa AIO configuration. Please update your config. To use Fixed-time-based Motion Control, enable FT_MOTION in Configuration_adv.h." +#elif defined(PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_5015) + #error "PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_5015 is now PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015. Please update your config." +#endif diff --git a/Marlin/src/inc/Prusa_AIO_Conditionals.h b/Marlin/src/inc/Prusa_AIO_Conditionals.h new file mode 100644 index 0000000000..4b453b6998 --- /dev/null +++ b/Marlin/src/inc/Prusa_AIO_Conditionals.h @@ -0,0 +1,1030 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Prusa_AIO_Conditionals.h + * Configuration logic based on Prusa_AIO_Configuration.h options at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 + +//=========================================================================== +//============================ Source Code Info ============================= +//=========================================================================== + +#define SOURCE_CODE_URL "bit.ly/3FnRN20" +#define WEBSITE_URL SOURCE_CODE_URL + +//=========================================================================== +//============================== Printer Name =============================== +//=========================================================================== + +#ifndef PRUSA_AIO_CUSTOM_PRINTER_NAME + #define PRUSA_AIO_CUSTOM_PRINTER_NAME "AIO Bear" +#endif + +//=========================================================================== +//=========================== Printer/Frame Type ============================ +//=========================================================================== + +#define PRUSA_AIO_Z_MAX_POS TERN(PRUSA_AIO_FRAME_BEAR_320, 320, 210) + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +// Define MOTHERBOARD here so preflight-checks.py works +#if ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0) + #define MOTHERBOARD BOARD_BTT_SKR_V3_0 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN FAN2_PIN // PB5 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER 1 // Incorrect RGB color workaround on SKR V3 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 1 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PE6 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) + #define MOTHERBOARD BOARD_BTT_SKR_V3_0_EZ + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN FAN2_PIN // PB5 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER 1 // Incorrect RGB color workaround on SKR V3 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 1 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PE6 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B) + #define MOTHERBOARD BOARD_BTT_SKR_V2_0_REV_B + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN FAN2_PIN // PB5 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 1 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PE6 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4) + #define MOTHERBOARD BOARD_BTT_SKR_V1_4 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 0 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN P1_24 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO) + #define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 0 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN P1_24 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_BTT002) + #define MOTHERBOARD BOARD_BTT_BTT002_V1_0 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD // No onboard SD card connection + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define MK3_FAN_PINS // Disable this for FAN_PIN PB9 and FAN1_PIN PB8 + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 2 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0 + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN FAN2_PIN // PB15 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 2 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA8 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0_1 + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN FAN2_PIN // PC8 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 2 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA14 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 2 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA8 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3) + #define MOTHERBOARD BOARD_MKS_ROBIN_NANO_V3 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN HEATER_1_PIN // PB0 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // 4-pin header marked "5V GND TX3 RX3" + #define PRUSA_AIO_WIFI_SERIAL_PORT 1 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1) + #define MOTHERBOARD BOARD_MKS_ROBIN_NANO_V3_1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN HEATER_1_PIN // PB0 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // 4-pin header marked "5V GND TX3 RX3" + #define PRUSA_AIO_WIFI_SERIAL_PORT 1 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0) + #define MOTHERBOARD BOARD_MKS_EAGLE + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN HEATER_1_PIN // PB0 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // 4-pin header marked "5V GND TX3 RX3" + #define PRUSA_AIO_WIFI_SERIAL_PORT 1 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2) + #define MOTHERBOARD BOARD_MKS_SGEN_L_V2 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_HAS_FIVE_DRIVERS 1 + #define PRUSA_AIO_HAS_CONTROLLER_FAN 1 + #define CONTROLLER_FAN_PIN HEATER_1_PIN // P2.6 + #define PRUSA_AIO_MEDIA_INIT_WARNING 1 // Shared SD detect + #define PRUSA_AIO_SDCARD_CONNECTION LCD + #define PRUSA_AIO_USB_SERIAL_PORT -1 + #define PRUSA_AIO_TFT_SERIAL_PORT 0 + #define PRUSA_AIO_WIFI_SERIAL_PORT 3 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3) + #define MOTHERBOARD BOARD_MKS_ROBIN_E3 + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_NO_FAN1_PIN 1 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT 1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // AUX-1 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA2 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1) + #define MOTHERBOARD BOARD_MKS_ROBIN_E3_V1_1 + #define PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_NO_FAN1_PIN 1 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT 1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // AUX-1 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA2 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D) + #define MOTHERBOARD BOARD_MKS_ROBIN_E3D + #define PRUSA_AIO_NO_FAN1_PIN 1 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT 1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // AUX-1 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA2 +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) + #define MOTHERBOARD BOARD_MKS_ROBIN_E3D_V1_1 + #define PRUSA_AIO_REAL_EEPROM 1 + #define PRUSA_AIO_NO_FAN1_PIN 1 + #define PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE 1 + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD + #define PRUSA_AIO_NEEDS_FAN_SOFT_PWM 1 + #define PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT 1 + #define PRUSA_AIO_USB_SERIAL_PORT 1 + #define PRUSA_AIO_TFT_SERIAL_PORT 3 // AUX-1 + #define PRUSA_AIO_BOARD_NEOPIXEL_PIN PA2 +#endif + +// Remove the need to poll the interrupt pins, saving many CPU cycles +#if ENABLED(PRUSA_AIO_HAS_ENDSTOP_INTERRUPTS_FEATURE) + #define ENDSTOP_INTERRUPTS_FEATURE +#endif + +// Support for USB thumb drives +#if ENABLED(PRUSA_AIO_FLASH_DRIVE_SUPPORT) + #define USB_FLASH_DRIVE_SUPPORT +#endif + +//=========================================================================== +//============================== Serial Ports =============================== +//=========================================================================== + +#if ALL(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT, PRUSA_AIO_WIFI_SUPPORT) + #define SERIAL_PORT_2 PRUSA_AIO_TFT_SERIAL_PORT + #define SERIAL_PORT_3 PRUSA_AIO_WIFI_SERIAL_PORT +#elif ENABLED(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT) + #define SERIAL_PORT_2 PRUSA_AIO_TFT_SERIAL_PORT +#elif ENABLED(PRUSA_AIO_WIFI_SUPPORT) + #define SERIAL_PORT_2 PRUSA_AIO_WIFI_SERIAL_PORT +#endif + +//=========================================================================== +//============================= Stepper Drivers ============================= +//=========================================================================== + +#if ENABLED(PRUSA_AIO_HAS_FIVE_DRIVERS) + #define Z2_DRIVER_TYPE Z_DRIVER_TYPE +#endif + +#if ENABLED(PRUSA_AIO_DRIVERS_TMC5160) + #define PRUSA_AIO_DRIVER_TYPE TMC5160 + #define PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE TERN(SENSORLESS_HOMING, LOW, HIGH) + #define TMC_USE_SW_SPI + #define PRUSA_AIO_DRIVER_RSENSE 0.075 +#elif ENABLED(PRUSA_AIO_DRIVERS_TMC2130) + #define PRUSA_AIO_DRIVER_TYPE TMC2130 + #define PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE TERN(SENSORLESS_HOMING, LOW, HIGH) + #define TMC_USE_SW_SPI + #define PRUSA_AIO_DRIVER_RSENSE 0.11 +#elif ENABLED(PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE) + #define PRUSA_AIO_DRIVER_TYPE TMC2209 + #define PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE TERN(SENSORLESS_HOMING, HIGH, LOW) + #define PRUSA_AIO_DRIVER_RSENSE 0.15 +#elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE) + #define PRUSA_AIO_DRIVER_TYPE TMC2209 + #define PRUSA_AIO_XY_MIN_ENDSTOP_HIT_STATE TERN(SENSORLESS_HOMING, HIGH, LOW) + #define PRUSA_AIO_DRIVER_RSENSE 0.11 +#endif + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +/** + * Motor Directions + * | + | - | + * --------------------|-----|-----| + * X Motor | CW | CCW | + * Y Motor | CCW | CW | + * Z Motors | CW | CCW | + * E Motor (Stock) | CCW | CW | + * E Motor (BMG) | CW | CCW | + * E Motor (Planetary) | CW | CCW | + */ + +// Default Extruder inverting +#if ENABLED(PRUSA_AIO_DRIVERS_TMC5160) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_E0_DIR true + #else + #define INVERT_E0_DIR false + #endif +#elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC2130) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_E0_DIR false + #else + #define INVERT_E0_DIR true + #endif +#endif + +#if ENABLED(PRUSA_AIO_E_STEPPER_STOCK) + #define PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT 280 + #define PRUSA_AIO_E0_CURRENT 550 + #define PRUSA_AIO_E0_MICROSTEPS 32 + + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_12V + #else + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_24V + #endif +#elif ENABLED(PRUSA_AIO_E_STEPPER_BONDTECH) + #if INVERT_E0_DIR == true + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR false + #elif INVERT_E0_DIR == false + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR true + #endif + #define PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT 830 + #define PRUSA_AIO_E0_CURRENT 550 + #define PRUSA_AIO_E0_MICROSTEPS 32 + + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_12V + #else + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_24V + #endif +#elif ENABLED(PRUSA_AIO_E_STEPPER_LDO_0_9) + #if INVERT_E0_DIR == true + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR false + #elif INVERT_E0_DIR == false + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR true + #endif + #define PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT 830 + #define PRUSA_AIO_E0_CURRENT 550 + #define PRUSA_AIO_E0_MICROSTEPS 16 + + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_12V + #else + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_09STEP_24V + #endif +#elif ENABLED(PRUSA_AIO_E_STEPPER_LDO_PLANETARY) + #if INVERT_E0_DIR == true + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR false + #elif INVERT_E0_DIR == false + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR true + #endif + #define PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT 980 + #define PRUSA_AIO_E0_CURRENT 650 + #define PRUSA_AIO_E0_MICROSTEPS 32 + #define PRUSA_AIO_CHOPPER_TIMING_E CHOPPER_DEFAULT_24V +#endif + +// User Extruder inverting +#if ENABLED(PRUSA_AIO_INVERT_E_DIR) + #if INVERT_E0_DIR == true + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR false + #elif INVERT_E0_DIR == false + #undef INVERT_E0_DIR // Prevent redefined warnings + #define INVERT_E0_DIR true + #endif +#endif + +// Sensorless homing for MK3S/+ +#if DISABLED(PRUSA_AIO_MK25S_SUPPORT) + #define SENSORLESS_HOMING +#endif + +#if ENABLED(PRUSA_AIO_XY_STEPPERS_STOCK) + #define PRUSA_AIO_DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, (PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT) } + + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #define PRUSA_AIO_CHOPPER_TIMING_X CHOPPER_DEFAULT_12V + #define PRUSA_AIO_CHOPPER_TIMING_Y CHOPPER_DEFAULT_12V + #define PRUSA_AIO_CHOPPER_TIMING_Z CHOPPER_DEFAULT_12V + #else + #define PRUSA_AIO_CHOPPER_TIMING_X CHOPPER_DEFAULT_24V + #define PRUSA_AIO_CHOPPER_TIMING_Y CHOPPER_DEFAULT_24V + #define PRUSA_AIO_CHOPPER_TIMING_Z CHOPPER_DEFAULT_24V + #endif + + #define PRUSA_AIO_X_CURRENT 500 + #define PRUSA_AIO_X_CURRENT_HOME 200 + #define PRUSA_AIO_Y_CURRENT 600 + #define PRUSA_AIO_Y_CURRENT_HOME 250 + + // StallGuard settings + #ifndef PRUSA_AIO_X_STALL_SENSITIVITY + #if ANY(PRUSA_AIO_DRIVERS_TMC5160, PRUSA_AIO_DRIVERS_TMC2130) + #define PRUSA_AIO_X_STALL_SENSITIVITY 2 + #elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE) + #define PRUSA_AIO_X_STALL_SENSITIVITY 90 + #endif + #endif + #ifndef PRUSA_AIO_Y_STALL_SENSITIVITY + #if ANY(PRUSA_AIO_DRIVERS_TMC5160, PRUSA_AIO_DRIVERS_TMC2130) + #define PRUSA_AIO_Y_STALL_SENSITIVITY 3 + #elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE) + #define PRUSA_AIO_Y_STALL_SENSITIVITY 100 + #endif + #endif + +#elif ANY(PRUSA_AIO_XY_STEPPERS_LDO_0_9, PRUSA_AIO_XY_STEPPERS_MOONS_0_9) + #define PRUSA_AIO_DEFAULT_AXIS_STEPS_PER_UNIT { 200, 200, 400, (PRUSA_AIO_EXTRUDER_STEPS_PER_UNIT) } + + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #define PRUSA_AIO_CHOPPER_TIMING_X CHOPPER_DEFAULT_12V + #define PRUSA_AIO_CHOPPER_TIMING_Y CHOPPER_DEFAULT_12V + #define PRUSA_AIO_CHOPPER_TIMING_Z CHOPPER_DEFAULT_12V + #else + #define PRUSA_AIO_CHOPPER_TIMING_X CHOPPER_09STEP_24V + #define PRUSA_AIO_CHOPPER_TIMING_Y CHOPPER_09STEP_24V + #define PRUSA_AIO_CHOPPER_TIMING_Z CHOPPER_09STEP_24V + #endif + + #if ENABLED(PRUSA_AIO_XY_STEPPERS_LDO_0_9) + #define PRUSA_AIO_X_CURRENT 900 + #define PRUSA_AIO_X_CURRENT_HOME 300 + #define PRUSA_AIO_Y_CURRENT 1000 + #define PRUSA_AIO_Y_CURRENT_HOME 400 + + // StallGuard settings + #ifndef PRUSA_AIO_X_STALL_SENSITIVITY + #define PRUSA_AIO_X_STALL_SENSITIVITY 81 + #endif + + #ifndef PRUSA_AIO_Y_STALL_SENSITIVITY + #define PRUSA_AIO_Y_STALL_SENSITIVITY 85 + #endif + + #elif ENABLED(PRUSA_AIO_XY_STEPPERS_MOONS_0_9) + #define PRUSA_AIO_X_CURRENT 650 + #define PRUSA_AIO_X_CURRENT_HOME 225 + #define PRUSA_AIO_Y_CURRENT 750 + #define PRUSA_AIO_Y_CURRENT_HOME 200 + + // StallGuard settings + #ifndef PRUSA_AIO_X_STALL_SENSITIVITY + #define PRUSA_AIO_X_STALL_SENSITIVITY 140 + #endif + #ifndef PRUSA_AIO_Y_STALL_SENSITIVITY + #define PRUSA_AIO_Y_STALL_SENSITIVITY 132 + #endif + #endif +#endif + +// Homing speeds (mm/min) +#ifndef PRUSA_AIO_HOMING_FEEDRATE_MM_M + #define PRUSA_AIO_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +#endif + +// Default X/Y inverting +#if ENABLED(PRUSA_AIO_DRIVERS_TMC5160) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_X_DIR false + #define INVERT_Y_DIR true + #else + #define INVERT_X_DIR true + #define INVERT_Y_DIR false + #endif +#elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC2130) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_X_DIR true + #define INVERT_Y_DIR false + #else + #define INVERT_X_DIR false + #define INVERT_Y_DIR true + #endif +#endif + +// Default Z inverting +#if ENABLED(PRUSA_AIO_DRIVERS_TMC5160) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_Z_DIR false + #else + #define INVERT_Z_DIR true + #endif +#elif ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC2130) + #if ENABLED(PRUSA_AIO_INVERTED_MOTOR_DIR_DEFAULT) + #define INVERT_Z_DIR true + #else + #define INVERT_Z_DIR false + #endif +#endif + +// User X inverting +#if ENABLED(PRUSA_AIO_INVERT_X_DIR) + #if INVERT_X_DIR == true + #undef INVERT_X_DIR // Prevent redefined warnings + #define INVERT_X_DIR false + #elif INVERT_X_DIR == false + #undef INVERT_X_DIR // Prevent redefined warnings + #define INVERT_X_DIR true + #endif +#endif + +// User Y inverting +#if ENABLED(PRUSA_AIO_INVERT_Y_DIR) + #if INVERT_Y_DIR == true + #undef INVERT_Y_DIR // Prevent redefined warnings + #define INVERT_Y_DIR false + #elif INVERT_Y_DIR == false + #undef INVERT_Y_DIR // Prevent redefined warnings + #define INVERT_Y_DIR true + #endif +#endif + +// User Z inverting +#if ENABLED(PRUSA_AIO_INVERT_Z_DIR) + #if INVERT_Z_DIR == true + #undef INVERT_Z_DIR // Prevent redefined warnings + #define INVERT_Z_DIR false + #elif INVERT_Z_DIR == false + #undef INVERT_Z_DIR // Prevent redefined warnings + #define INVERT_Z_DIR true + #endif +#endif + +//=========================================================================== +//================================= Hotend ================================== +//=========================================================================== + +// TODO: E3D Hemera Note: Shift bed to the left 11mm // X_MIN_POS -11 Y_MIN_POS -2 + +// Probe Temperature Compensation based on bed temperature +#define PTC_BED + +#if ANY(PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH, PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) + #define BLTOUCH + #define PRUSA_AIO_TEMP_SENSOR_PROBE 0 + #define PRUSA_AIO_PROBING_MARGIN 5 + #define PRUSA_AIO_Z_CLEARANCE_DEPLOY_PROBE 5 + #define PRUSA_AIO_Z_CLEARANCE_BETWEEN_PROBES 3 + #define PRUSA_AIO_Z_CLEARANCE_MULTI_PROBE 3 + + #ifndef PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET + #if ENABLED(PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH) + #define PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET { 26.71, 2.298, 0 } // Offsets pulled from https://www.thingiverse.com/thing:3251530/comments#comment-2915938 + #elif ENABLED(PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) + #define PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET { -24.3, -34.1, 0 } // Offsets pulled from https://www.thingiverse.com/thing:3864666/comments#comment-2882122 + #endif + #endif + +#elif ANY(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BMG_PINDA) + #define FIX_MOUNTED_PROBE + #define PRUSA_AIO_PROBING_MARGIN 10 + #define PRUSA_AIO_Z_CLEARANCE_DEPLOY_PROBE 0 + #define PRUSA_AIO_Z_CLEARANCE_BETWEEN_PROBES 2 + #define PRUSA_AIO_Z_CLEARANCE_MULTI_PROBE 2 + #define PROBING_HEATERS_OFF + #define Z_STEPPER_ALIGN_XY { { 40, 90 }, { 230, 90 } } + + #ifndef PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET + #define PRUSA_AIO_NOZZLE_TO_PROBE_OFFSET { 23, 5, 0 } + #endif + + // Probe Temperature Compensation + #if ENABLED(PRUSA_AIO_PROBE_SUPERPINDA) + #define PRUSA_AIO_TEMP_SENSOR_PROBE 0 + #elif ENABLED(PRUSA_AIO_PROBE_PINDA_V2) + #define PRUSA_AIO_TEMP_SENSOR_PROBE 1 + #define PTC_PROBE // Compensate based on probe temperature + #endif +#endif + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +#if ENABLED(PRUSA_AIO_THERMISTOR_STOCK_SEMITEC_104NT) + #define PRUSA_AIO_TEMP_SENSOR_0 5 + #define PRUSA_AIO_HEATER_0_MINTEMP 5 + #define PRUSA_AIO_HEATER_0_MAXTEMP 310 // 295 + 15 +#elif ENABLED(PRUSA_AIO_THERMISTOR_GENERIC_100K) + #define PRUSA_AIO_TEMP_SENSOR_0 1 + #define PRUSA_AIO_HEATER_0_MINTEMP 5 + #define PRUSA_AIO_HEATER_0_MAXTEMP 305 // 290 + 15 +#elif ENABLED(PRUSA_AIO_THERMISTOR_SLICE_450C) + #define PRUSA_AIO_TEMP_SENSOR_0 67 + #define PRUSA_AIO_HEATER_0_MINTEMP 5 + #define PRUSA_AIO_HEATER_0_MAXTEMP 465 // 450 + 15 +#elif ENABLED(PRUSA_AIO_THERMISTOR_TL_T_D500) + #define PRUSA_AIO_TEMP_SENSOR_0 66 + #define PRUSA_AIO_HEATER_0_MINTEMP 21 + #define PRUSA_AIO_HEATER_0_MAXTEMP 515 // 500 + 15 + #define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 5 + #define PREHEAT_TIME_HOTEND_MS 30000 +#endif + +#if ENABLED(PRUSA_AIO_HOTEND_MPCTEMP) + #define MPCTEMP + + #if DISABLED(PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP) + #define PRUSA_AIO_CUSTOM_MPC_HEATER_POWER { 40.0f } + #define PRUSA_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 16.7f } + #define PRUSA_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.22f } + #define PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.068f } + #define PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } + #define PRUSA_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } + #endif +#else + #define PIDTEMP + + #if DISABLED(PRUSA_AIO_CUSTOM_HOTEND_PID) + #define PRUSA_AIO_DEFAULT_Kp 16.50 + #define PRUSA_AIO_DEFAULT_Ki 1.16 + #define PRUSA_AIO_DEFAULT_Kd 58.80 + #endif +#endif + +#if DISABLED(PRUSA_AIO_CUSTOM_BED_PID) + #define PRUSA_AIO_DEFAULT_bedKp 28.13 + #define PRUSA_AIO_DEFAULT_bedKi 2.09 + #define PRUSA_AIO_DEFAULT_bedKd 483.07 +#endif + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +// Hotend Cooling Fan +// PIN_EXISTS() macro doesn't work here +#define PRUSA_AIO_E0_AUTO_FAN_PIN TERN(PRUSA_AIO_NO_FAN1_PIN, -1, FAN1_PIN) + +#if ENABLED(PRUSA_AIO_NEEDS_FAN_SOFT_PWM) + #define FAN_SOFT_PWM + #define PRUSA_AIO_SOFT_PWM_SCALE 1 // :[0,1,2,3,4,5,6,7] + #define SOFT_PWM_DITHER +#else + #define PRUSA_AIO_SOFT_PWM_SCALE 0 +#endif + +// Part Cooling Fan +//TODO: Test all fan/board combos +#if ENABLED(PRUSA_AIO_PART_COOLING_FAN_GENERIC) + #define PRUSA_AIO_FAN_MIN_PWM 0 +#elif ANY(PRUSA_AIO_PART_COOLING_FAN_24V_MECHATRONICS_B5015E24B_BSR, PRUSA_AIO_PART_COOLING_FAN_24V_SOUNDORIGINAL, PRUSA_AIO_PART_COOLING_FAN_12V_STOCK_PRUSA_MK25S_5015, PRUSA_AIO_PART_COOLING_FAN_12V_SOUNDORIGINAL) + #if ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B) + #define PRUSA_AIO_FAN_MIN_PWM 40 + #elif ANY(PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO) + #define PRUSA_AIO_FAN_MIN_PWM 115 + #elif ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) + #define PRUSA_AIO_FAN_MIN_PWM 50 + #else + #define PRUSA_AIO_FAN_MIN_PWM 80 + #endif +#elif ENABLED(PRUSA_AIO_PART_COOLING_FAN_24V_DELTA_BFB0524HH) + #define PRUSA_AIO_FAN_MIN_PWM 20 +#elif ENABLED(PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #define PRUSA_AIO_FAN_MIN_PWM 51 +#elif ENABLED(PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015) + #define PRUSA_AIO_FAN_MIN_PWM 0 // TODO: Find correct value +#endif + +// Controller/Motherboard Fan +#if ENABLED(PRUSA_AIO_MOTHERBOARD_FAN) && DISABLED(PRUSA_AIO_HAS_CONTROLLER_FAN) + #error "PRUSA_AIO_MOTHERBOARD_FAN is not compatible with enabled motherboard. Connect motherboard cooling fan directly to 24V power supply." +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_FAN) + #define USE_CONTROLLER_FAN + + // Keep Controller fan active for 2130s + #if DISABLED(PRUSA_AIO_DRIVERS_TMC2130) + #define CONTROLLER_FAN_IGNORE_Z + #endif +#endif + +//=========================================================================== +//======================= Bed Leveling / Calibration ======================= +//=========================================================================== + +#if ENABLED(PRUSA_AIO_BED_LEVELING_BILINEAR) + #define AUTO_BED_LEVELING_BILINEAR + #define G29_RETRY_AND_RECOVER +#elif ENABLED(PRUSA_AIO_BED_LEVELING_UBL) + #define AUTO_BED_LEVELING_UBL +#endif + +#if ENABLED(PRUSA_AIO_HAS_FIVE_DRIVERS) + #define Z_STEPPER_AUTO_ALIGN +#else // Single Z driver + #define MECHANICAL_GANTRY_CALIBRATION +#endif + +//=========================================================================== +//============================== Custom Menus =============================== +//=========================================================================== + +// Sheet Profiles Menu +#if ENABLED(PRUSA_AIO_SHEET_PROFILES_MENU) + #define CUSTOM_MENU_CONFIG + + #if defined(PRUSA_AIO_SHEET_1_DESC) && defined(PRUSA_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_DESC PRUSA_AIO_SHEET_1_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_2_DESC) && defined(PRUSA_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_DESC PRUSA_AIO_SHEET_2_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_3_DESC) && defined(PRUSA_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_DESC PRUSA_AIO_SHEET_3_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_4_DESC) && defined(PRUSA_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_DESC PRUSA_AIO_SHEET_4_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_5_DESC) && defined(PRUSA_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_DESC PRUSA_AIO_SHEET_5_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_6_DESC) && defined(PRUSA_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_DESC PRUSA_AIO_SHEET_6_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_7_DESC) && defined(PRUSA_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_DESC PRUSA_AIO_SHEET_7_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_8_DESC) && defined(PRUSA_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_DESC PRUSA_AIO_SHEET_8_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_9_DESC) && defined(PRUSA_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_DESC PRUSA_AIO_SHEET_9_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_CONFIRM + #endif + + #if defined(PRUSA_AIO_SHEET_10_DESC) && defined(PRUSA_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_DESC PRUSA_AIO_SHEET_10_DESC ": " STRINGIFY(PRUSA_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_GCODE "M851 Z" STRINGIFY(PRUSA_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_CONFIRM + #endif +#endif + +// Calibration Menu +#if ENABLED(PRUSA_AIO_CALIBRATION_MENU) + #define CUSTOM_MENU_MAIN +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if ANY(PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL) + #define PRUSA_AIO_HAS_MINI_12864_NEOPIXEL 1 + #define PRUSA_AIO_LCD_NEOPIXEL EXP1_06_PIN + #define PRUSA_AIO_LCD_NEOPIXEL_COUNT 3 +#elif ANY(PRUSA_AIO_DISPLAY_BTT_TFT35_SPI_V1, PRUSA_AIO_DISPLAY_MKS_TS35_V2_0) + #define PRUSA_AIO_HAS_SPI_TFT 1 +#endif + +#if ANY(PRUSA_AIO_DISPLAY_STOCK_REPRAP_DISCOUNT_SMART_CONTROLLER, PRUSA_AIO_DISPLAY_OLED_REPRAP_DISCOUNT_SMART_CONTROLLER) + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#elif ANY(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT, PRUSA_AIO_HAS_MINI_12864_NEOPIXEL, PRUSA_AIO_HAS_SPI_TFT) + #if ENABLED(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT) + + // Extra defines for BTT TFT firmware + #define AUTO_REPORT_POSITION + #define AUTO_REPORT_SD_STATUS + #define SERIAL_FLOAT_PRECISION 4 + + #if ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #define CR10_STOCKDISPLAY + #define PRUSA_AIO_SINGLE_EXP_CONNECTION 1 + #else + #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + #endif + #elif ENABLED(PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL) + #define BTT_MINI_12864 + #elif ENABLED(PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL) + #define PRUSA_AIO_REVERSE_ENCODER_DIRECTION_DEFAULT + #define FYSETC_MINI_12864_2_1 + #elif ENABLED(PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL) + #define MKS_MINI_12864_V3 + #elif ENABLED(PRUSA_AIO_HAS_SPI_TFT) + #define TFT_COLOR_UI + #define TOUCH_SCREEN + + #define ENCODER_PULSES_PER_STEP 6 + + #undef PRUSA_AIO_SDCARD_CONNECTION + #define PRUSA_AIO_SDCARD_CONNECTION ONBOARD // No SD card reader on TFT + + #if ENABLED(PRUSA_AIO_DISPLAY_BTT_TFT35_SPI_V1) + #define BTT_TFT35_SPI_V1_0 + #define TFT_DRIVER ST7796 + #elif ENABLED(PRUSA_AIO_DISPLAY_MKS_TS35_V2_0) + #define MKS_TS35_V2_0 + #endif + #endif + + #if ENABLED(PRUSA_AIO_BED_LEVELING_UBL) && NONE(TFT_COLOR_UI, TFT_LVGL_UI) + #define MESH_EDIT_GFX_OVERLAY + #endif + + #if NONE(TFT_COLOR_UI, TFT_LVGL_UI) + #define BABYSTEP_GFX_OVERLAY + #endif +#endif + +// Final encoder direction +#if (ENABLED(PRUSA_AIO_REVERSE_ENCODER_DIRECTION_DEFAULT) && DISABLED(PRUSA_AIO_REVERSE_ENCODER_DIRECTION)) || (ENABLED(PRUSA_AIO_REVERSE_ENCODER_DIRECTION) && DISABLED(PRUSA_AIO_REVERSE_ENCODER_DIRECTION_DEFAULT)) + #define REVERSE_ENCODER_DIRECTION +#endif + +//=========================================================================== +//================================ NeoPixels ================================ +//=========================================================================== + +#if ANY(PRUSA_AIO_NEOPIXEL_STRIP, PRUSA_AIO_HAS_MINI_12864_NEOPIXEL) + #define NEOPIXEL_LED // Enable NeoPixel support + #define LED_CONTROL_MENU + #define LED_COLOR_PRESETS + #define NEOPIXEL_STARTUP_TEST +#endif + +#if ENABLED(PRUSA_AIO_NEOPIXEL_STRIP) // Both NeoPixel Strip & Mini 12864 w/ NeoPixels / Dual NeoPixel workaround + #define NEOPIXEL_PIN PRUSA_AIO_BOARD_NEOPIXEL_PIN + + #define NEOPIXEL_TYPE PRUSA_AIO_NEOPIXEL_STRIP_TYPE + #define NEOPIXEL_PIXELS PRUSA_AIO_NEOPIXEL_STRIP_LED_COUNT + #define NEOPIXEL_BRIGHTNESS PRUSA_AIO_NEOPIXEL_STRIP_BRIGHTNESS + + #if ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_RED) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_ORANGE) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 25 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_YELLOW) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 75 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_GREEN) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_BLUE) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_INDIGO) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_VIOLET) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_WHITE) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #endif + + #if ENABLED(PRUSA_AIO_HAS_MINI_12864_NEOPIXEL) + #define NEOPIXEL2_SEPARATE + #define NEO2_COLOR_PRESETS + + // Incorrect RGB color workaround on SKR V3 + #define NEOPIXEL2_TYPE TERN(PRUSA_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER, NEO_BRG, NEO_RGB) + #define NEOPIXEL2_PIN PRUSA_AIO_LCD_NEOPIXEL + + #define NEOPIXEL2_PIXELS PRUSA_AIO_LCD_NEOPIXEL_COUNT + #define NEOPIXEL2_BRIGHTNESS 255 + + #if ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_RED) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 255 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 0 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 0 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_ORANGE) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 255 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 25 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 0 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_YELLOW) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 255 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 75 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 0 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_GREEN) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 0 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 255 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 0 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_BLUE) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 0 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 0 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 255 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_INDIGO) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 0 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 255 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 255 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_VIOLET) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 255 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 0 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 255 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_WHITE) + #define PRUSA_AIO_NEO2_USER_PRESET_RED 255 + #define PRUSA_AIO_NEO2_USER_PRESET_GREEN 255 + #define PRUSA_AIO_NEO2_USER_PRESET_BLUE 255 + #define PRUSA_AIO_NEO2_USER_PRESET_WHITE 255 + #endif + #endif +#elif ENABLED(PRUSA_AIO_HAS_MINI_12864_NEOPIXEL) // Only Mini 12864 w/ NeoPixels + // Incorrect RGB color workaround on SKR V3 + #define NEOPIXEL_TYPE TERN(PRUSA_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER, NEO_BRG, NEO_RGB) + + #define NEOPIXEL_PIXELS PRUSA_AIO_LCD_NEOPIXEL_COUNT + #define NEOPIXEL_BRIGHTNESS 255 + + #define LED_USER_PRESET_STARTUP + #define NEOPIXEL_PIN PRUSA_AIO_LCD_NEOPIXEL + + #if ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_RED) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_ORANGE) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 25 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_YELLOW) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 75 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_GREEN) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 0 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_BLUE) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_INDIGO) + #define PRUSA_AIO_LED_USER_PRESET_RED 0 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_VIOLET) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 0 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #elif ENABLED(PRUSA_AIO_LCD_NEOPIXEL_COLOR_WHITE) + #define PRUSA_AIO_LED_USER_PRESET_RED 255 + #define PRUSA_AIO_LED_USER_PRESET_GREEN 255 + #define PRUSA_AIO_LED_USER_PRESET_BLUE 255 + #define PRUSA_AIO_LED_USER_PRESET_WHITE 255 + #endif +#endif + +//=========================================================================== +//============================= Input Shaping ============================== +//=========================================================================== + +#if ENABLED(PRUSA_AIO_INPUT_SHAPING) + #define INPUT_SHAPING_X + #define INPUT_SHAPING_Y + #ifdef PRUSA_AIO_SHAPING_MIN_FREQ + #define SHAPING_MIN_FREQ PRUSA_AIO_SHAPING_MIN_FREQ + #endif + #ifdef PRUSA_AIO_SHAPING_MAX_STEPRATE + #define SHAPING_MAX_STEPRATE PRUSA_AIO_SHAPING_MAX_STEPRATE + #endif +#else + #define S_CURVE_ACCELERATION // Not needed/recommended with Input Shaping +#endif diff --git a/Marlin/src/inc/Prusa_AIO_SanityCheck.h b/Marlin/src/inc/Prusa_AIO_SanityCheck.h new file mode 100644 index 0000000000..296f7f83eb --- /dev/null +++ b/Marlin/src/inc/Prusa_AIO_SanityCheck.h @@ -0,0 +1,314 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Prusa_AIO_SanityCheck.h + * Validate Prusa_AIO_Configuration.h options at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define PRUSA_AIO_VERSION 20240209 + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +#if MANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO, PRUSA_AIO_MOTHERBOARD_BTT_BTT002, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0, PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) + #error "Only one PRUSA_AIO_MOTHERBOARD option can be enabled at a time." +#elif NONE(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO, PRUSA_AIO_MOTHERBOARD_BTT_BTT002, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0, PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) + #error "Invalid PRUSA_AIO_MOTHERBOARD option." +#endif + +// BTT002 Sanity Checks +#if ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_BTT002) + #if ANY(PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH, PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) // No Servo Pins on BTT002 + #error "BLTouch is not supported on BigTreeTech BTT002 1.0." + #endif + + #if ENABLED(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT) + #error "BigTreeTech Dual Mode TFTs emulate the SD card reader and cannot be used for motherboard firmware updates. Since the BigTreeTech BTT002 1.0 has no onboard SD card reader, a different display type is required." + #endif + + // BTT002 is slow and/or locks up with Mini 12864 with NeoPixel RGB + #if ENABLED(PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL) + #error "PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL is not supported on BigTreeTech BTT002 1.0." + #elif ENABLED(PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL) + #error "PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL is not supported on BigTreeTech BTT002 1.0." + #elif ENABLED(PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL) + #error "PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL is not supported on BigTreeTech BTT002 1.0." + #endif +#endif // BTT002 Sanity Checks + +// PINDA V2 Sanity Checks +#if ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) && ENABLED(PRUSA_AIO_PROBE_PINDA_V2) + #error "PINDA V2 is not supported on enabled motherboard. A SuperPINDA or BLTouch is required." +#endif + +// Flash Drive Support (BigTreeTech SKR 2 & MKS Robin Nano V3 only) +#if ENABLED(PRUSA_AIO_FLASH_DRIVE_SUPPORT) + #if NONE(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0) + #error "PRUSA_AIO_FLASH_DRIVE_SUPPORT is not compatible with enabled motherboard." + #elif ALL(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_WIFI_SUPPORT) + #error "Both PRUSA_AIO_FLASH_DRIVE_SUPPORT and PRUSA_AIO_WIFI_SUPPORT cannot be enabled at the same time for PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B." + #endif +#endif + +// WiFi Support +#if ENABLED(PRUSA_AIO_WIFI_SUPPORT) && NONE(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4, PRUSA_AIO_MOTHERBOARD_BTT_SKR_1_4_TURBO, PRUSA_AIO_MOTHERBOARD_BTT_BTT002, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0, PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2) + #error "Enabled motherboard does not have WiFi support." +#endif + +//=========================================================================== +//============================= Stepper Drivers ============================= +//=========================================================================== + +#if MANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC5160, PRUSA_AIO_DRIVERS_TMC2130) + #error "Only one PRUSA_AIO_DRIVERS option can be enabled at a time." +#elif NONE(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE, PRUSA_AIO_DRIVERS_TMC5160, PRUSA_AIO_DRIVERS_TMC2130) + #error "Invalid PRUSA_AIO_DRIVERS option." +#endif + +// Integrated TMC2209s Sanity Checks +#if DISABLED(PRUSA_AIO_DRIVERS_TMC2209) && ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0) + #error "Invalid PRUSA_AIO_DRIVERS option. Enabled motherboard has integrated TMC2209s." +#endif + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +#if MANY(PRUSA_AIO_E_STEPPER_STOCK, PRUSA_AIO_E_STEPPER_BONDTECH, PRUSA_AIO_E_STEPPER_LDO_0_9, PRUSA_AIO_E_STEPPER_LDO_PLANETARY) + #error "Only one PRUSA_AIO_E_STEPPER option can be enabled at a time." +#elif NONE(PRUSA_AIO_E_STEPPER_STOCK, PRUSA_AIO_E_STEPPER_BONDTECH, PRUSA_AIO_E_STEPPER_LDO_0_9, PRUSA_AIO_E_STEPPER_LDO_PLANETARY) + #error "Invalid PRUSA_AIO_E_STEPPER option." +#endif + +#if ANY(PRUSA_AIO_E_STEPPER_BONDTECH, PRUSA_AIO_E_STEPPER_LDO_0_9) && ANY(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH) + // Not powerful enough to drive 1:1 extruders + #error "Pancake stepper on a Bear extruder is not supported." +#elif ENABLED(PRUSA_AIO_E_STEPPER_LDO_PLANETARY) && ANY(PRUSA_AIO_EXTRUDER_BMG_PINDA, PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) + // This would be a crazy amount of pulses/second + #error "Planetary stepper on a BMG extruder is not supported." +#endif + +#if MANY(PRUSA_AIO_XY_STEPPERS_STOCK, PRUSA_AIO_XY_STEPPERS_LDO_0_9, PRUSA_AIO_XY_STEPPERS_MOONS_0_9) + #error "Only one PRUSA_AIO_XY_STEPPERS option can be enabled at a time." +#elif NONE(PRUSA_AIO_XY_STEPPERS_STOCK, PRUSA_AIO_XY_STEPPERS_LDO_0_9, PRUSA_AIO_XY_STEPPERS_MOONS_0_9) + #error "Invalid PRUSA_AIO_XY_STEPPERS option." +#endif + +//=========================================================================== +//================================= Hotend ================================== +//=========================================================================== + +#if MANY(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH, PRUSA_AIO_EXTRUDER_BMG_PINDA, PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) + #error "Only one PRUSA_AIO_EXTRUDER option can be enabled at a time." +#elif NONE(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BEAR_BLTOUCH, PRUSA_AIO_EXTRUDER_BMG_PINDA, PRUSA_AIO_EXTRUDER_BMG_BLTOUCH) + #error "Invalid PRUSA_AIO_EXTRUDER option." +#endif + +#if ANY(PRUSA_AIO_EXTRUDER_BEAR_PINDA, PRUSA_AIO_EXTRUDER_BMG_PINDA) + #if ALL(PRUSA_AIO_PROBE_SUPERPINDA, PRUSA_AIO_PROBE_PINDA_V2) + #error "Only one PRUSA_AIO_PROBE option can be enabled at a time." + #elif NONE(PRUSA_AIO_PROBE_SUPERPINDA, PRUSA_AIO_PROBE_PINDA_V2) + #error "Invalid PRUSA_AIO_PROBE option." + #endif +#endif + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +#if MANY(PRUSA_AIO_THERMISTOR_STOCK_SEMITEC_104NT, PRUSA_AIO_THERMISTOR_GENERIC_100K, PRUSA_AIO_THERMISTOR_SLICE_450C, PRUSA_AIO_THERMISTOR_TL_T_D500) + #error "Only one PRUSA_AIO_THERMISTOR option can be enabled at a time." +#elif NONE(PRUSA_AIO_THERMISTOR_STOCK_SEMITEC_104NT, PRUSA_AIO_THERMISTOR_GENERIC_100K, PRUSA_AIO_THERMISTOR_SLICE_450C, PRUSA_AIO_THERMISTOR_TL_T_D500) + #error "Invalid PRUSA_AIO_THERMISTOR option." +#endif + +#if ENABLED(PRUSA_AIO_CUSTOM_HOTEND_PID) + #ifndef PRUSA_AIO_DEFAULT_Kp + #error "PRUSA_AIO_DEFAULT_Kp is invalid or not defined." + #elif !defined(PRUSA_AIO_DEFAULT_Ki) + #error "PRUSA_AIO_DEFAULT_Ki is invalid or not defined." + #elif !defined(PRUSA_AIO_DEFAULT_Kd) + #error "PRUSA_AIO_DEFAULT_Kd is invalid or not defined." + #endif +#endif + +#if ENABLED(PRUSA_AIO_CUSTOM_BED_PID) + #ifndef PRUSA_AIO_DEFAULT_bedKp + #error "PRUSA_AIO_DEFAULT_bedKp is invalid or not defined." + #elif !defined(PRUSA_AIO_DEFAULT_bedKi) + #error "PRUSA_AIO_DEFAULT_bedKi is invalid or not defined." + #elif !defined(PRUSA_AIO_DEFAULT_bedKd) + #error "PRUSA_AIO_DEFAULT_bedKd is invalid or not defined." + #endif +#endif + +#if ALL(PRUSA_AIO_HOTEND_MPCTEMP, PRUSA_AIO_CUSTOM_HOTEND_PID) + #error "PRUSA_AIO_HOTEND_MPCTEMP and PRUSA_AIO_CUSTOM_HOTEND_PID cannot be enabled at the same time." +#endif + +#if ENABLED(PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP) + #if DISABLED(PRUSA_AIO_HOTEND_MPCTEMP) + #error "PRUSA_AIO_CUSTOM_HOTEND_MPCTEMP requires PRUSA_AIO_HOTEND_MPCTEMP." + #elif !defined(PRUSA_AIO_CUSTOM_MPC_HEATER_POWER) + #error "PRUSA_AIO_CUSTOM_MPC_HEATER_POWER is invalid or not defined." + #elif !defined(PRUSA_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY) + #error "PRUSA_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY is invalid or not defined." + #elif !defined(PRUSA_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS) + #error "PRUSA_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS is invalid or not defined." + #elif !defined(PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF) + #error "PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF is invalid or not defined." + #elif !defined(PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255) + #error "PRUSA_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 is invalid or not defined." + #elif !defined(PRUSA_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM) + #error "PRUSA_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM is invalid or not defined." + #endif +#endif + +//=========================================================================== +//============================ Part Cooling Fan ============================= +//=========================================================================== + +#if MANY(PRUSA_AIO_PART_COOLING_FAN_GENERIC, PRUSA_AIO_PART_COOLING_FAN_24V_MECHATRONICS_B5015E24B_BSR, PRUSA_AIO_PART_COOLING_FAN_24V_DELTA_BFB0524HH, PRUSA_AIO_PART_COOLING_FAN_24V_SOUNDORIGINAL, PRUSA_AIO_PART_COOLING_FAN_12V_STOCK_PRUSA_MK25S_5015, PRUSA_AIO_PART_COOLING_FAN_12V_SOUNDORIGINAL, PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015, PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #error "Only one PRUSA_AIO_PART_COOLING_FAN option can be enabled at a time." +#elif NONE(PRUSA_AIO_PART_COOLING_FAN_GENERIC, PRUSA_AIO_PART_COOLING_FAN_24V_MECHATRONICS_B5015E24B_BSR, PRUSA_AIO_PART_COOLING_FAN_24V_DELTA_BFB0524HH, PRUSA_AIO_PART_COOLING_FAN_24V_SOUNDORIGINAL, PRUSA_AIO_PART_COOLING_FAN_12V_STOCK_PRUSA_MK25S_5015, PRUSA_AIO_PART_COOLING_FAN_12V_SOUNDORIGINAL, PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015, PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #error "Invalid PRUSA_AIO_PART_COOLING_FAN option." +#elif ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_BTT002) && NONE(PRUSA_AIO_PART_COOLING_FAN_GENERIC, PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015, PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #error "Invalid PRUSA_AIO_PART_COOLING_FAN option. Only 5V fans are supported on BigTreeTech BTT002 1.0." +#elif NONE(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ, PRUSA_AIO_MOTHERBOARD_BTT_BTT002) && ANY(PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015, PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #error "Invalid PRUSA_AIO_PART_COOLING_FAN option. 5V fans are for BigTreeTech BTT002 1.0 & SKR V3/EZ with DC Mode addon board only." +#elif ENABLED(PRUSA_AIO_MK25S_SUPPORT) && NONE(PRUSA_AIO_PART_COOLING_FAN_GENERIC, PRUSA_AIO_PART_COOLING_FAN_12V_STOCK_PRUSA_MK25S_5015, PRUSA_AIO_PART_COOLING_FAN_12V_SOUNDORIGINAL) + #error "Invalid PRUSA_AIO_PART_COOLING_FAN option. PRUSA_AIO_MK25S_SUPPORT requires 12V fans." +#endif + +//=========================================================================== +//============================== Bed Leveling =============================== +//=========================================================================== + +#if ALL(PRUSA_AIO_BED_LEVELING_BILINEAR, PRUSA_AIO_BED_LEVELING_UBL) + #error "Only one PRUSA_AIO_BED_LEVELING option can be enabled at a time." +#elif NONE(PRUSA_AIO_BED_LEVELING_BILINEAR, PRUSA_AIO_BED_LEVELING_UBL) + #error "Invalid PRUSA_AIO_BED_LEVELING option." +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if MANY(PRUSA_AIO_DISPLAY_STOCK_REPRAP_DISCOUNT_SMART_CONTROLLER, PRUSA_AIO_DISPLAY_OLED_REPRAP_DISCOUNT_SMART_CONTROLLER, PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT, PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_BTT_TFT35_SPI_V1, PRUSA_AIO_DISPLAY_MKS_TS35_V2_0) + #error "Only one PRUSA_AIO_DISPLAY option can be enabled at a time." +#elif NONE(PRUSA_AIO_DISPLAY_STOCK_REPRAP_DISCOUNT_SMART_CONTROLLER, PRUSA_AIO_DISPLAY_OLED_REPRAP_DISCOUNT_SMART_CONTROLLER, PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT, PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_BTT_TFT35_SPI_V1, PRUSA_AIO_DISPLAY_MKS_TS35_V2_0) + #error "Invalid PRUSA_AIO_DISPLAY option." +#elif ENABLED(PRUSA_AIO_DISPLAY_OLED_REPRAP_DISCOUNT_SMART_CONTROLLER) && ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_MOTHERBOARD_BTT_BTT002, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3_V1_1, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_E3D_V1_1) + #error "OLED RepRapDiscount smart controller is only compatible with LPC-based motherboards." +#elif ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, PRUSA_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) && DISABLED(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT) + #error "Invalid PRUSA_AIO_DISPLAY option. SKR Mini E3 has a single EXP connector and is only compatible with PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT." +#endif + +#if ANY(PRUSA_AIO_DISPLAY_BTT_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_FYSETC_MINI_12864_NEOPIXEL, PRUSA_AIO_DISPLAY_MKS_MINI_12864_NEOPIXEL) + #if MANY(PRUSA_AIO_LCD_NEOPIXEL_COLOR_RED, PRUSA_AIO_LCD_NEOPIXEL_COLOR_ORANGE, PRUSA_AIO_LCD_NEOPIXEL_COLOR_YELLOW, PRUSA_AIO_LCD_NEOPIXEL_COLOR_GREEN, PRUSA_AIO_LCD_NEOPIXEL_COLOR_BLUE, PRUSA_AIO_LCD_NEOPIXEL_COLOR_INDIGO, PRUSA_AIO_LCD_NEOPIXEL_COLOR_VIOLET, PRUSA_AIO_LCD_NEOPIXEL_COLOR_WHITE) + #error "Only one PRUSA_AIO_LCD_NEOPIXEL_COLOR option can be enabled at a time." + #elif NONE(PRUSA_AIO_LCD_NEOPIXEL_COLOR_RED, PRUSA_AIO_LCD_NEOPIXEL_COLOR_ORANGE, PRUSA_AIO_LCD_NEOPIXEL_COLOR_YELLOW, PRUSA_AIO_LCD_NEOPIXEL_COLOR_GREEN, PRUSA_AIO_LCD_NEOPIXEL_COLOR_BLUE, PRUSA_AIO_LCD_NEOPIXEL_COLOR_INDIGO, PRUSA_AIO_LCD_NEOPIXEL_COLOR_VIOLET, PRUSA_AIO_LCD_NEOPIXEL_COLOR_WHITE) + #error "Invalid PRUSA_AIO_LCD_NEOPIXEL_COLOR option." + #endif +#endif + +#if !defined(PRUSA_AIO_LCD_LANGUAGE) + #error "Invalid PRUSA_AIO_LCD_LANGUAGE option." +#endif + +//=========================================================================== +//=========================== Sheet Profiles Menu =========================== +//=========================================================================== + +#if ENABLED(PRUSA_AIO_SHEET_PROFILES_MENU) + // Description is enabled, but no offset + #if defined(PRUSA_AIO_SHEET_1_DESC) && !defined(PRUSA_AIO_SHEET_1_OFFSET) + #error "PRUSA_AIO_SHEET_1_OFFSET is required when PRUSA_AIO_SHEET_1_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_2_DESC) && !defined(PRUSA_AIO_SHEET_2_OFFSET) + #error "PRUSA_AIO_SHEET_2_OFFSET is required when PRUSA_AIO_SHEET_2_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_3_DESC) && !defined(PRUSA_AIO_SHEET_3_OFFSET) + #error "PRUSA_AIO_SHEET_3_OFFSET is required when PRUSA_AIO_SHEET_3_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_4_DESC) && !defined(PRUSA_AIO_SHEET_4_OFFSET) + #error "PRUSA_AIO_SHEET_4_OFFSET is required when PRUSA_AIO_SHEET_4_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_5_DESC) && !defined(PRUSA_AIO_SHEET_5_OFFSET) + #error "PRUSA_AIO_SHEET_5_OFFSET is required when PRUSA_AIO_SHEET_5_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_6_DESC) && !defined(PRUSA_AIO_SHEET_6_OFFSET) + #error "PRUSA_AIO_SHEET_6_OFFSET is required when PRUSA_AIO_SHEET_6_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_7_DESC) && !defined(PRUSA_AIO_SHEET_7_OFFSET) + #error "PRUSA_AIO_SHEET_7_OFFSET is required when PRUSA_AIO_SHEET_7_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_8_DESC) && !defined(PRUSA_AIO_SHEET_8_OFFSET) + #error "PRUSA_AIO_SHEET_8_OFFSET is required when PRUSA_AIO_SHEET_8_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_9_DESC) && !defined(PRUSA_AIO_SHEET_9_OFFSET) + #error "PRUSA_AIO_SHEET_9_OFFSET is required when PRUSA_AIO_SHEET_9_DESC is enabled." + #elif defined(PRUSA_AIO_SHEET_10_DESC) && !defined(PRUSA_AIO_SHEET_10_OFFSET) + #error "PRUSA_AIO_SHEET_10_OFFSET is required when PRUSA_AIO_SHEET_10_DESC is enabled." + #endif + + // Offset is enabled, but no description + #if defined(PRUSA_AIO_SHEET_1_OFFSET) && !defined(PRUSA_AIO_SHEET_1_DESC) + #error "PRUSA_AIO_SHEET_1_DESC is required when PRUSA_AIO_SHEET_1_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_2_OFFSET) && !defined(PRUSA_AIO_SHEET_2_DESC) + #error "PRUSA_AIO_SHEET_2_DESC is required when PRUSA_AIO_SHEET_2_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_3_OFFSET) && !defined(PRUSA_AIO_SHEET_3_DESC) + #error "PRUSA_AIO_SHEET_3_DESC is required when PRUSA_AIO_SHEET_3_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_4_OFFSET) && !defined(PRUSA_AIO_SHEET_4_DESC) + #error "PRUSA_AIO_SHEET_4_DESC is required when PRUSA_AIO_SHEET_4_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_5_OFFSET) && !defined(PRUSA_AIO_SHEET_5_DESC) + #error "PRUSA_AIO_SHEET_5_DESC is required when PRUSA_AIO_SHEET_5_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_6_OFFSET) && !defined(PRUSA_AIO_SHEET_6_DESC) + #error "PRUSA_AIO_SHEET_6_DESC is required when PRUSA_AIO_SHEET_6_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_7_OFFSET) && !defined(PRUSA_AIO_SHEET_7_DESC) + #error "PRUSA_AIO_SHEET_7_DESC is required when PRUSA_AIO_SHEET_7_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_8_OFFSET) && !defined(PRUSA_AIO_SHEET_8_DESC) + #error "PRUSA_AIO_SHEET_8_DESC is required when PRUSA_AIO_SHEET_8_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_9_OFFSET) && !defined(PRUSA_AIO_SHEET_9_DESC) + #error "PRUSA_AIO_SHEET_9_DESC is required when PRUSA_AIO_SHEET_9_OFFSET is enabled." + #elif defined(PRUSA_AIO_SHEET_10_OFFSET) && !defined(PRUSA_AIO_SHEET_10_DESC) + #error "PRUSA_AIO_SHEET_10_DESC is required when PRUSA_AIO_SHEET_10_OFFSET is enabled." + #endif +#endif + +//=========================================================================== +//============================= NeoPixel Strip ============================== +//=========================================================================== + +#if ENABLED(PRUSA_AIO_NEOPIXEL_STRIP) + + #if ANY(PRUSA_AIO_MOTHERBOARD_BTT_BTT002, PRUSA_AIO_MOTHERBOARD_MKS_SGEN_L_V2, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3, PRUSA_AIO_MOTHERBOARD_MKS_ROBIN_NANO_V3_1, PRUSA_AIO_MOTHERBOARD_MKS_EAGLE_V1_0) + #error "NeoPixels are not compatible with enabled motherboard." + #endif + + #ifndef PRUSA_AIO_NEOPIXEL_STRIP_TYPE + #error "PRUSA_AIO_NEOPIXEL_STRIP_TYPE is invalid or not defined." + #elif !defined(PRUSA_AIO_NEOPIXEL_STRIP_LED_COUNT) + #error "PRUSA_AIO_NEOPIXEL_STRIP_LED_COUNT is invalid or not defined." + #elif !defined(PRUSA_AIO_NEOPIXEL_STRIP_BRIGHTNESS) + #error "PRUSA_AIO_NEOPIXEL_STRIP_BRIGHTNESS is invalid or not defined." + #endif + + #if MANY(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_WHITE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_RED, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_ORANGE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_YELLOW, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_GREEN, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_BLUE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_INDIGO, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_VIOLET) + #error "Only one PRUSA_AIO_NEOPIXEL_STRIP_COLOR option can be enabled at a time." + #elif NONE(PRUSA_AIO_NEOPIXEL_STRIP_COLOR_WHITE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_RED, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_ORANGE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_YELLOW, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_GREEN, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_BLUE, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_INDIGO, PRUSA_AIO_NEOPIXEL_STRIP_COLOR_VIOLET) + #error "Invalid PRUSA_AIO_NEOPIXEL_STRIP_COLOR option." + #endif +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +#if ENABLED(PRUSA_AIO_INPUT_SHAPING) + #ifndef PRUSA_AIO_SHAPING_FREQ_X + #error "PRUSA_AIO_SHAPING_FREQ_X is invalid or not defined." + #elif !defined(PRUSA_AIO_SHAPING_FREQ_Y) + #error "PRUSA_AIO_SHAPING_FREQ_Y is invalid or not defined." + #elif !defined(PRUSA_AIO_SHAPING_ZETA_X) + #error "PRUSA_AIO_SHAPING_ZETA_X is invalid or not defined." + #elif !defined(PRUSA_AIO_SHAPING_ZETA_Y) + #error "PRUSA_AIO_SHAPING_ZETA_Y is invalid or not defined." + #endif +#endif diff --git a/Marlin/src/inc/Prusa_AIO_Warnings.cpp b/Marlin/src/inc/Prusa_AIO_Warnings.cpp new file mode 100644 index 0000000000..564b203df8 --- /dev/null +++ b/Marlin/src/inc/Prusa_AIO_Warnings.cpp @@ -0,0 +1,122 @@ +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Prusa_AIO_Warnings.cpp + * Test Prusa AIO configuration values and give warnings at compile-time. + */ +#include "MarlinConfig.h" +#define PRUSA_AIO_VERSION 20240209 + +// +// Warnings! Located here so they will appear just once in the build output. +// + +/** + * Prusa AIO Warnings / Reminders + */ +#ifndef NO_PRUSA_AIO_WARNINGS + +//=========================================================================== +//============================== Jumpers/Pins =============================== +//=========================================================================== + +#if DISABLED(PRUSA_AIO_NO_DRIVER_UART_SPI_JUMPERS) + #if ANY(PRUSA_AIO_DRIVERS_TMC2209, PRUSA_AIO_DRIVERS_TMC2226_015_RSENSE, PRUSA_AIO_DRIVERS_TMC2226_011_RSENSE) // TMC2209s/TMC2226s are configured via UART + #warning "Ensure driver jumpers are set to UART mode". + #elif ANY(PRUSA_AIO_DRIVERS_TMC5160, PRUSA_AIO_DRIVERS_TMC2130) // TMC5160s/TMC2130s are configured via SPI + #warning "Ensure driver jumpers are set to SPI mode." + #endif +#endif + +#if ENABLED(PRUSA_AIO_HAS_FIVE_DRIVERS) + #warning "Five stepper drivers are required for enabled motherboard. E1 stepper driver will be used for Z2." + #if ENABLED(USES_DIAG_JUMPERS) + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #warning "DIAG jumpers must be removed for X, Y, Z, Z2 (E1), & E0 or homing and filament runout will not work correctly." + #else + #warning "DIAG jumpers must be installed for X & Y and removed for Z, Z2 (E1), and E0 or homing and filament runout will not work correctly." + #endif + #elif ENABLED(USES_DIAG_PINS) + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #warning "DIAG pins must be cut or desoldered from X, Y, Z, Z2 (E1), and E0 drivers or homing and filament runout will not work correctly." + #else + #warning "DIAG pins must be cut or desoldered from Z, Z2 (E1), and E0 drivers or homing and filament runout will not work correctly." + #endif + #endif +#else // Four drivers + #if ENABLED(USES_DIAG_JUMPERS) + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #warning "DIAG jumpers must be removed for X, Y, Z, & E0 or homing and filament runout will not work correctly." + #else + #warning "DIAG jumpers must be installed for X & Y and removed for Z & E or homing and filament runout will not work correctly." + #endif + #elif ENABLED(USES_DIAG_PINS) + #if ENABLED(PRUSA_AIO_MK25S_SUPPORT) + #warning "DIAG pins must be cut or desoldered from X, Y, Z, and E0 drivers or homing and filament runout will not work correctly." + #else + #warning "DIAG pins must be cut or desoldered from Z and E drivers or homing and filament runout will not work correctly." + #endif + #endif +#endif + +// Remind users to check U Disk / Flash Drive jumpers since they typically ship in the WiFi position. +#if ALL(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V2_0_REV_B, PRUSA_AIO_FLASH_DRIVE_SUPPORT) + #warning "Ensure U Disk / Flash Drive jumpers are set correctly. (See Page 12 of SKR V2's User Manual https://bit.ly/3am3PNL)" +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +// Remind users of common LCD controller setup issues + +#if ENABLED(PRUSA_AIO_DISPLAY_BTT_DUAL_MODE_TFT) + #if ENABLED(PRUSA_AIO_SINGLE_EXP_CONNECTION) + #warning "Connect 10-pin IDC cable from EXP1 on motherboard to EXP3 on BigTreeTech Dual Mode TFT. If LCD does not light up, try rotating EXP cable 180° on one end." + #else + #warning "Connect both 10-pin IDC cables from EXP1/EXP2 on motherboard to EXP1/EXP2 on BigTreeTech Dual Mode TFT. If LCD does not light up, try rotating EXP cables 180° on one end." + #endif +#else + #warning "If LCD does not light up, try rotating EXP cables 180° on one end." +#endif + +// Remind users to remove onboard SD card after flashing or they will get a "MEDIA INIT FAIL" error message due to a shared SD_DETECT signal +#if ENABLED(PRUSA_AIO_MEDIA_INIT_WARNING) + #warning "To prevent a 'MEDIA INIT FAIL' error message, remove onboard SD card after updating firmware." +#endif + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +// No FAN1_PIN available +#if ENABLED(PRUSA_AIO_NO_FAN1_PIN) + #warning "No FAN1_PIN available for automatic hotend cooling. Connect hotend cooling fan directly to 24V power source." +#endif + +// BTT002 fan pin reassignment +#if ENABLED(PRUSA_AIO_MOTHERBOARD_BTT_BTT002) + #warning "Define MK3_FAN_PINS to swap hotend and part cooling fan pins." +#endif + +// SKR V3 series with 5V fan need DC Mode board +#if ANY(PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0, PRUSA_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) && ANY(PRUSA_AIO_PART_COOLING_FAN_5V_STOCK_PRUSA_MK3S_5015, PRUSA_AIO_PART_COOLING_FAN_5V_LDO_DF5015H05S) + #warning "SKR 3-DC Mode addon is required to run 5V fans on SKR V3/EZ motherboards." +#endif + +//=========================================================================== +//============================== Temperatures =============================== +//=========================================================================== + +#if ANY(PRUSA_AIO_THERMISTOR_SLICE_450C, PRUSA_AIO_THERMISTOR_TL_T_D500) + #warning "Safety Warning: Printing above 295°C will require an upgrade from the stock V6 aluminum block or it could melt!" +#endif + +// TMC2130s run HOT! +#if ENABLED(PRUSA_AIO_DRIVERS_TMC2130) + #warning "TMC2130s run hot! Active cooling is essential or drivers will overheat!" +#endif + +#endif // NO_PRUSA_AIO_WARNINGS diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index c70ac49432..4a89a3bfd8 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2297,9 +2297,9 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #define FAUX_RGB 1 #endif #if defined(NEOPIXEL_TYPE) && NEOPIXEL_TYPE != NEO_RGB - #error "Your FYSETC/MKS/BTT/BEEZ Mini Panel requires NEOPIXEL_TYPE to be NEO_RGB." + //#error "Your FYSETC/MKS/BTT/BEEZ Mini Panel requires NEOPIXEL_TYPE to be NEO_RGB." #elif defined(NEOPIXEL_PIXELS) && NEOPIXEL_PIXELS < 3 - #error "Your FYSETC/MKS/BTT/BEEZ Mini Panel requires NEOPIXEL_PIXELS >= 3." + //#error "Your FYSETC/MKS/BTT/BEEZ Mini Panel requires NEOPIXEL_PIXELS >= 3." #endif #if FAUX_RGB #undef NEO_RGB diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 75ed6a0fe5..2e6e103a70 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -25,7 +25,7 @@ * Release version. Leave the Marlin version or apply a custom scheme. */ #ifndef SHORT_BUILD_VERSION - #define SHORT_BUILD_VERSION "bugfix-2.1.x" + #define SHORT_BUILD_VERSION "Prusa AIO 2.1.x" #endif /** diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 3a2153916f..b1a3aeff76 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -220,7 +220,7 @@ #endif #endif #if AUTO_ASSIGNED_Z2_STEPPER - #warning "Note: Auto-assigned Z2 STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" + //#warning "Note: Auto-assigned Z2 STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" #endif #if AUTO_ASSIGNED_Z2_MS1 #warning "Note: Auto-assigned Z2_MS1_PIN to an unused En_MS1_PIN. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" @@ -699,10 +699,10 @@ // #if !USE_SENSORLESS && HAS_DIAG_PINS #if ENABLED(USES_DIAG_JUMPERS) && DISABLED(DIAG_JUMPERS_REMOVED) - #warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)" + //#warning "Motherboard DIAG jumpers must be removed when SENSORLESS_HOMING is disabled. (Define DIAG_JUMPERS_REMOVED to suppress this warning.)" #endif #if ENABLED(USES_DIAG_PINS) && DISABLED(DIAG_PINS_REMOVED) - #warning "Driver DIAG pins must be physically removed unless SENSORLESS_HOMING is enabled. (See https://bit.ly/2ZPRlt0) (Define DIAG_PINS_REMOVED to suppress this warning.)" + //#warning "Driver DIAG pins must be physically removed unless SENSORLESS_HOMING is enabled. (See https://bit.ly/2ZPRlt0) (Define DIAG_PINS_REMOVED to suppress this warning.)" #endif #endif @@ -715,7 +715,7 @@ #endif #if HAS_LCD_CONTRAST && LCD_CONTRAST_MIN >= LCD_CONTRAST_MAX - #warning "Contrast cannot be changed when LCD_CONTRAST_MIN >= LCD_CONTRAST_MAX." + //#warning "Contrast cannot be changed when LCD_CONTRAST_MIN >= LCD_CONTRAST_MAX." #endif #if PROGRESS_MSG_EXPIRE > 0 && HAS_STATUS_MESSAGE_TIMEOUT @@ -750,7 +750,7 @@ * Průša MK3/S/+ fan pin reassignment */ #if MB(BTT_BTT002_V1_0, EINSY_RAMBO) && DISABLED(NO_MK3_FAN_PINS_WARNING) - #warning "Define MK3_FAN_PINS to swap hotend and part cooling fan pins. (Define NO_MK3_FAN_PINS_WARNING to suppress this warning.)" + //#warning "Define MK3_FAN_PINS to swap hotend and part cooling fan pins. (Define NO_MK3_FAN_PINS_WARNING to suppress this warning.)" #endif /** diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h index ea340a9f9f..16cd6594d1 100644 --- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h +++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h @@ -561,7 +561,7 @@ #define RGB_LED_B_PIN EXP1_08_PIN #endif #elif ENABLED(FYSETC_MINI_12864_2_1) - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #endif #else // !FYSETC_MINI_12864 diff --git a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h index 613ba19e15..10e26ae7d1 100644 --- a/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h +++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN_L_V2.h @@ -407,7 +407,7 @@ #define RGB_LED_B_PIN EXP1_08_PIN #endif #elif ENABLED(FYSETC_MINI_12864_2_1) - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #endif #else // !FYSETC_MINI_12864 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 53d31c0168..1bc1b3bad5 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -605,13 +605,13 @@ #elif MB(MKS_ROBIN_PRO) #include "stm32f1/pins_MKS_ROBIN_PRO.h" // STM32F1 env:mks_robin_pro env:mks_robin_pro_maple #elif MB(MKS_ROBIN_E3) - #include "stm32f1/pins_MKS_ROBIN_E3.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple + #include "stm32f1/pins_MKS_ROBIN_E3.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3_V1_1) #include "stm32f1/pins_MKS_ROBIN_E3_V1_1.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3D) #include "stm32f1/pins_MKS_ROBIN_E3D.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3D_V1_1) - #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple + #include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3 #elif MB(MKS_ROBIN_E3P) #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p env:mks_robin_e3p_maple #elif MB(BTT_SKR_MINI_V1_1) @@ -621,7 +621,7 @@ #elif MB(BTT_SKR_MINI_E3_V1_2) #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V2_0) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RE_btt env:STM32F103RE_btt_USB #elif MB(BTT_SKR_MINI_MZ_V1_0) #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_E3_DIP) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 4cfd75088f..e193b01fd4 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -357,7 +357,7 @@ #define FORCE_SOFT_SPI #else - #error "Only CR10_STOCKDISPLAY, LCD_FOR_MELZI, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, TFTGLCD_PANEL_(SPI|I2C), FYSETC_MINI_12864_2_1, MKS_MINI_12864_V3, and BTT_MINI_12864 are currently supported on the BIGTREE_SKR_MINI_E3." + //#error "Only CR10_STOCKDISPLAY, LCD_FOR_MELZI, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, TFTGLCD_PANEL_(SPI|I2C), FYSETC_MINI_12864_2_1, MKS_MINI_12864_V3, and BTT_MINI_12864 are currently supported on the BIGTREE_SKR_MINI_E3." #endif #endif // HAS_WIRED_LCD diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h index 49f14866c0..ed5dff39c7 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h @@ -213,7 +213,7 @@ #define DOGLCD_A0 LCD_PINS_DC #define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #define DOGLCD_MOSI EXP2_06_PIN #define DOGLCD_SCK EXP2_02_PIN #define FORCE_SOFT_SPI diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h index 41514181f5..e26ad5b8fe 100644 --- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h +++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h @@ -494,7 +494,7 @@ #define RGB_LED_B_PIN EXP1_08_PIN #endif #elif ENABLED(FYSETC_MINI_12864_2_1) - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #endif #endif // !FYSETC_MINI_12864 diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h index 0b36730467..13af88e1f4 100644 --- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h +++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3_common.h @@ -359,7 +359,7 @@ #define DOGLCD_A0 LCD_PINS_DC #define LCD_BACKLIGHT_PIN -1 #define LCD_RESET_PIN EXP1_05_PIN - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #define DOGLCD_MOSI EXP2_06_PIN #define DOGLCD_SCK EXP2_02_PIN #if SD_CONNECTION_IS(ONBOARD) diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index df91933d71..0018752ebb 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -378,7 +378,7 @@ #define LCD_BACKLIGHT_PIN -1 #else - #error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, FYSETC_MINI_12864_2_1, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3." + //#error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, FYSETC_MINI_12864_2_1, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3." #endif #endif // SKR_MINI_SCREEN_ADAPTER diff --git a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h index 1d63f40e4c..5892c4cbc2 100644 --- a/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h +++ b/Marlin/src/pins/stm32h7/pins_BTT_SKR_V3_0_common.h @@ -505,16 +505,16 @@ #define TOUCH_INT_PIN EXP1_07_PIN #ifndef TOUCH_CALIBRATION_X - #define TOUCH_CALIBRATION_X 17540 + #define TOUCH_CALIBRATION_X 20499 #endif #ifndef TOUCH_CALIBRATION_Y - #define TOUCH_CALIBRATION_Y -11388 + #define TOUCH_CALIBRATION_Y -13365 #endif #ifndef TOUCH_OFFSET_X - #define TOUCH_OFFSET_X -21 + #define TOUCH_OFFSET_X -58 #endif #ifndef TOUCH_OFFSET_Y - #define TOUCH_OFFSET_Y 337 + #define TOUCH_OFFSET_Y 356 #endif #ifndef TOUCH_ORIENTATION #define TOUCH_ORIENTATION TOUCH_LANDSCAPE @@ -597,7 +597,7 @@ #define RGB_LED_B_PIN EXP1_08_PIN #endif #elif ENABLED(FYSETC_MINI_12864_2_1) - #define NEOPIXEL_PIN EXP1_06_PIN + //#define NEOPIXEL_PIN EXP1_06_PIN #endif #endif // !FYSETC_MINI_12864 diff --git a/README.md b/README.md index ac496aac21..5d901e8d38 100644 --- a/README.md +++ b/README.md @@ -1,154 +1,81 @@ -

MarlinFirmware's logo

+

Prusa Bear

-

Marlin 3D Printer Firmware

+

Prusa All-in-One Marlin Firmware

+

All-in-One Marlin firmware for your 32-bit Prusa MK2.5S & MK3S/+ Bear!

- GPL-V3.0 License - Contributors - Last Release Date - CI Status - GitHub Sponsors + GPL-V3.0 License + Contributors + Last Commit Date + Prusa AIO CI Status + GitHub Sponsors
- Follow MarlinFirmware on Mastodon + Follow thisiskeithb on Twitter + Follow thisiskeithb on Mastodon

-Additional documentation can be found at the [Marlin Home Page](https://marlinfw.org/). -Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by! +## Table of Contents -## Marlin 2.1 Bugfix Branch +- [Helpful Links](#helpful-links) +- [Configuring Prusa All-in-One Firmware](#configuring-prusa-all-in-one-firmware) +- [Building Prusa All-in-One Firmware](#building-prusa-all-in-one-firmware) +- [Supported Hardware Upgrades](#supported-hardware-upgrades) +- [Changes to Slicer Start G-code](#changes-to-slicer-start-g-code) +- [Upgrade Caveats](#upgrade-caveats) +- [Credits](#credits) +- [License](#license) -__Not for production use. Use with caution!__ +## Helpful Links -Marlin 2.1 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below. + - [Prusa AIO Wiki](https://github.com/thisiskeithb/PrusaAIO/wiki/) — Includes wiring information, recommended motherboard & LCD cases, purchase links for supported hardware, and more! + - [Prusa AIO Discussions](https://github.com/thisiskeithb/PrusaAIO/discussions) + - [Prusa Bear Upgrade Facebook group](https://facebook.com/groups/prusabearupgrade/) + - [Prusa Community Facebook group](https://facebook.com/groups/675831176090951/) -This branch is for patches to the latest 2.1.x release version. Periodically this branch will form the basis for the next minor 2.1.x release. + You can also find me on the [MarlinFirmware Discord](https://discord.gg/n5NJ59y): [💬 thisiskeithb#4707](https://discordapp.com/users/602976310805135370). -Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases). +## Configuring Prusa All-in-One Firmware -## Example Configurations +To configure this firmware, enable options in [`Prusa_AIO_Configuration.h`](Marlin/Prusa_AIO_Configuration.h). No other config file editing is required! -Before you can build Marlin for your machine you'll need a configuration for your specific hardware. Upon request, your vendor will be happy to provide you with the complete source code and configurations for your machine, but you'll need to get updated configuration files if you want to install a newer version of Marlin. Fortunately, Marlin users have contributed dozens of tested configurations to get you started. Visit the [MarlinFirmware/Configurations](https://github.com/MarlinFirmware/Configurations) repository to find the right configuration for your hardware. +## Building Prusa All-in-One Firmware -## Building Marlin 2.1 +To build this firmware, you'll need [Visual Studio Code](https://code.visualstudio.com/) with [PlatformIO](https://docs.platformio.org/en/latest/integration/ide/vscode.html#platformio-ide-for-vscode). Detailed setup instructions can be found in the [Installing Marlin (PlatformIO with VSCode)](https://marlinfw.org/docs/basics/install_platformio_vscode.html) guide. -To build and upload Marlin you will use one of these tools: +## Supported Hardware Upgrades -- The free [Visual Studio Code](https://code.visualstudio.com/download) using the [Auto Build Marlin](https://marlinfw.org/docs/basics/auto_build_marlin.html) extension. -- The free [Arduino IDE](https://www.arduino.cc/en/main/software) : See [Building Marlin with Arduino](https://marlinfw.org/docs/basics/install_arduino.html) -- You can also use VSCode with devcontainer : See [Installing Marlin (VSCode devcontainer)](http://marlinfw.org/docs/basics/install_devcontainer_vscode.html). +In addition to the stock hardware (except the Einsy motherboard & Power Panic), the following upgrades are supported: -Marlin is optimized to build with the **PlatformIO IDE** extension for **Visual Studio Code**. You can still build Marlin with **Arduino IDE**, and we hope to improve the Arduino build experience, but at this time PlatformIO is the better choice. +- **Motherboards**: BigTreeTech SKR 3.0 & 3.0 EZ, 2.0 with optional flash drive support, 1.4 & 1.4 Turbo, BTT002 1.0, SKR Mini E3 V3.x & V2, MKS/Makerbase Robin Nano V3.x & Eagle with optional flash drive support, SGEN_L V2, and Robin E3 & E3D V1.x +- **Drivers**: TMC2209s, TMC2226s, TMC5160s, and TMC2130s +- **Displays**: BigTreeTech dual mode TFT (TFT35, TFT50, TFT70, etc.), WINSTAR OLED-based RepRapDiscount smart controller, and Mini 12864 with NeoPixel RGB backlight (BigTreeTech Mini 12864 V1/V2 and MKS Mini 12864 V3) +- **LDO/Moons Stepper Motors**: Planetary extruder and 0.9° X/Y/E +- **Bondtech BMG extruder**: Bondtech BMG upgrade kit and Self-printed BMG +- **5015 Part Cooling Fans**: 24V Mechatronics B5015E24B-BSR, 24V Delta BFB0524HH, 24V SoundOriginal, 5V LDO DF5015H05S +- **High Temperature Thermistors**: Slice Engineering 450°C and Trianglelab T-D500 (Dyze Design) 500°C +- **Probes**: BLTouch and SuperPINDA +- NeoPixels +- ESP WiFi addon running [ESP3D](https://github.com/luc-github/ESP3D) -## Hardware Abstraction Layer (HAL) +## Changes to Slicer Start G-code -Marlin includes an abstraction layer to provide a common API for all the platforms it targets. This allows Marlin code to address the details of motion and user interface tasks at the lowest and highest levels with no system overhead, tying all events directly to the hardware clock. +The `W` in Prusa's `G28 W ; home all without mesh bed level` default G-code does not exist in Marlin and `G80 ; mesh bed leveling` cancels the current motion mode, so no bed leveling will take place. See the [Changes to Start G-code](https://github.com/thisiskeithb/PrusaAIO/wiki/Slicer-G%E2%80%90Code-Notes) wiki article for example start G-code scripts from popular slicers for required changes. -Every new HAL opens up a world of hardware. At this time we need HALs for RP2040 and the Duet3D family of boards. A HAL that wraps an RTOS is an interesting concept that could be explored. Did you know that Marlin includes a Simulator that can run on Windows, macOS, and Linux? Join the Discord to help move these sub-projects forward! +## Upgrade Caveats -## 8-Bit AVR Boards +As noted in the Supported Hardware Upgrades section above, the stock Einsy board & Power Panic are not supported. This firmware is based on Marlin bugfix-2.1.x with options specifically tailored to a Prusa MK3S/+ Bear with various hardware upgrades. You will lose Prusa firmware features like the setup wizards, automatic calibration, etc., but you can now use a variety of 32-bit boards, modern TMC drivers, and a bunch of other hardware by enabling a few config options in [`Prusa_AIO_Configuration.h`](Marlin/Prusa_AIO_Configuration.h). -A core tenet of this project is to keep supporting 8-bit AVR boards while also maintaining a single codebase that applies equally to all machines. We want casual hobbyists to benefit from the community's innovations as much as possible just as much as those with fancier machines. Plus, those old AVR-based machines are often the best for your testing and feedback! +## Credits -### Supported Platforms +If you find this project helpful, please consider donating! - Platform|MCU|Example Boards - --------|---|------- - [Arduino AVR](https://www.arduino.cc/)|ATmega|RAMPS, Melzi, RAMBo - [Teensy++ 2.0](https://www.microchip.com/en-us/product/AT90USB1286)|AT90USB1286|Printrboard - [Arduino Due](https://www.arduino.cc/en/Guide/ArduinoDue)|SAM3X8E|RAMPS-FD, RADDS, RAMPS4DUE - [ESP32](https://github.com/espressif/arduino-esp32)|ESP32|FYSETC E4, E4d@BOX, MRR - [LPC1768](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1768FBD100)|ARM® Cortex-M3|MKS SBASE, Re-ARM, Selena Compact - [LPC1769](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1769FBD100)|ARM® Cortex-M3|Smoothieboard, Azteeg X5 mini, TH3D EZBoard - [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)|ARM® Cortex-M3|Malyan M200, GTM32 Pro, MKS Robin, BTT SKR Mini - [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)|ARM® Cortex-M4|ARMED, Rumba32, SKR Pro, Lerdge, FYSETC S6, Artillery Ruby - [STM32F7x6](https://www.st.com/en/microcontrollers-microprocessors/stm32f7x6.html)|ARM® Cortex-M7|The Borg, RemRam V1 - [STM32G0B1RET6](https://www.st.com/en/microcontrollers-microprocessors/stm32g0x1.html)|ARM® Cortex-M0+|BigTreeTech SKR mini E3 V3.0 - [STM32H743xIT6](https://www.st.com/en/microcontrollers-microprocessors/stm32h743-753.html)|ARM® Cortex-M7|BigTreeTech SKR V3.0, SKR EZ V3.0, SKR SE BX V2.0/V3.0 - [SAMD51P20A](https://www.adafruit.com/product/4064)|ARM® Cortex-M4|Adafruit Grand Central M4 - [Teensy 3.5](https://www.pjrc.com/store/teensy35.html)|ARM® Cortex-M4| - [Teensy 3.6](https://www.pjrc.com/store/teensy36.html)|ARM® Cortex-M4| - [Teensy 4.0](https://www.pjrc.com/store/teensy40.html)|ARM® Cortex-M7| - [Teensy 4.1](https://www.pjrc.com/store/teensy41.html)|ARM® Cortex-M7| - Linux Native|x86/ARM/etc.|Raspberry Pi + - Keith Bennett [[thisiskeithb](https://github.com/thisiskeithb)], Prusa AIO Creator - [💸 Github Sponsors](https://github.com/sponsors/thisiskeithb) / [☕ Ko-fi](https://ko-fi.com/thisiskeithb) + - Chris Warkocki [[codiac2600](https://github.com/codiac2600/)], SKR Bear Project + - Grégoire Saunier [[gregsaun](https://github.com/gregsaun)], Prusa Bear Project - [💸 Patreon](https://patreon.com/gregsaun) + - Scott Lahteine [[thinkyhead](https://github.com/thinkyhead)], Marlin Maintainer - [💸 Donate](https://www.thinkyhead.com/donate-to-marlin) -## Submitting Patches - -Proposed patches should be submitted as a Pull Request against the ([bugfix-2.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.1.x)) branch. - -- This branch is for fixing bugs and integrating any new features for the duration of the Marlin 2.1.x life-cycle. -- Follow the [Coding Standards](https://marlinfw.org/docs/development/coding_standards.html) to gain points with the maintainers. -- Please submit Feature Requests and Bug Reports to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues/new/choose). Support resources are also listed there. -- Whenever you add new features, be sure to add tests to `buildroot/tests` and then run your tests locally, if possible. - - It's optional: Running all the tests on Windows might take a long time, and they will run anyway on GitHub. - - If you're running the tests on Linux (or on WSL with the code on a Linux volume) the speed is much faster. - - You can use `make tests-all-local` or `make tests-single-local TEST_TARGET=...`. - - If you prefer Docker you can use `make tests-all-local-docker` or `make tests-all-local-docker TEST_TARGET=...`. - -## Marlin Support - -The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources: - -- [Marlin Documentation](https://marlinfw.org) - Official Marlin documentation -- [Marlin Discord](https://discord.gg/n5NJ59y) - Discuss issues with Marlin users and developers -- Facebook Group ["Marlin Firmware"](https://www.facebook.com/groups/1049718498464482/) -- RepRap.org [Marlin Forum](https://forums.reprap.org/list.php?415) -- Facebook Group ["Marlin Firmware for 3D Printers"](https://www.facebook.com/groups/3Dtechtalk/) -- [Marlin Configuration](https://www.youtube.com/results?search_query=marlin+configuration) on YouTube - -## Contributors - -Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to [all the contributors](https://github.com/MarlinFirmware/Marlin/graphs/contributors) who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them. - -## Administration - -Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of: - - - - -
Project Maintainer
- - 🇺🇸  **Scott Lahteine** -       [@thinkyhead](https://github.com/thinkyhead) -       [  Donate 💸  ](https://www.thinkyhead.com/donate-to-marlin) - - - - 🇺🇸  **Roxanne Neufeld** -       [@Roxy-3D](https://github.com/Roxy-3D) - - 🇺🇸  **Keith Bennett** -       [@thisiskeithb](https://github.com/thisiskeithb) -       [  Donate 💸  ](https://github.com/sponsors/thisiskeithb) - - 🇺🇸  **Jason Smith** -       [@sjasonsmith](https://github.com/sjasonsmith) - - - - 🇧🇷  **Victor Oliveira** -       [@rhapsodyv](https://github.com/rhapsodyv) - - 🇬🇧  **Chris Pepper** -       [@p3p](https://github.com/p3p) - -🇳🇿  **Peter Ellens** -       [@ellensp](https://github.com/ellensp) -       [  Donate 💸  ](https://ko-fi.com/ellensp) - - - - 🇺🇸  **Bob Kuhn** -       [@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn) - - 🇳🇱  **Erik van der Zalm** -       [@ErikZalm](https://github.com/ErikZalm) -       [  Donate 💸  ](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software) - -
+First layer calibration based on [Prusa's MK3/S/+ "meander" first layer calibration](https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/first_lay_cal.cpp) ## License -Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork. - -While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own. +Marlin and the Prusa All-in-One Firmware are published under the [GPL license](/LICENSE) because we believe in open development. diff --git a/buildroot/share/PlatformIO/scripts/preflight-checks.py b/buildroot/share/PlatformIO/scripts/preflight-checks.py index 2e4ab5c92d..2bb7b08495 100644 --- a/buildroot/share/PlatformIO/scripts/preflight-checks.py +++ b/buildroot/share/PlatformIO/scripts/preflight-checks.py @@ -108,6 +108,11 @@ def rm_ofile(subdir, name): if 'EEPROM_INIT_NOW' in env['MARLIN_FEATURES']: rm_ofile("module", "settings") + # + # Give Prusa AIO warnings on every build + # + rm_ofile("inc", "Prusa_AIO_Warnings") + # # Check for old files indicating an entangled Marlin (mixing old and new code) # diff --git a/buildroot/share/pixmaps/logo/Prusa_AIO_Black_Bear_Marlin.png b/buildroot/share/pixmaps/logo/Prusa_AIO_Black_Bear_Marlin.png new file mode 100644 index 0000000000000000000000000000000000000000..6586129a29a16c0a36d5758694b87a19189f68d2 GIT binary patch literal 370116 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

vxOW(G$E@;Puo`*r}h`s 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

A#*- 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 V>?Q=gF46n%c+VXkrJMIK{|6RTO;!K^ literal 0 HcmV?d00001 diff --git a/config/README.md b/config/README.md deleted file mode 100644 index b19527ccc3..0000000000 --- a/config/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Where have all the configurations gone? - -Marlin configurations for specific machines are now maintained in their own repository at: - -## https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x - -Configuration files for use with the nightly `bugfix-2.1.x` branch can be downloaded from: - -## https://github.com/MarlinFirmware/Configurations/archive/bugfix-2.1.x.zip diff --git a/ini/lpc176x.ini b/ini/lpc176x.ini index 8d5d2fd157..b9a6752411 100644 --- a/ini/lpc176x.ini +++ b/ini/lpc176x.ini @@ -24,7 +24,8 @@ extra_scripts = ${common.extra_scripts} build_src_filter = ${common.default_src_filter} + - + lib_deps = ${common.lib_deps} Servo -custom_marlin.USES_LIQUIDCRYSTAL = arduino-libraries/LiquidCrystal@~1.0.7 +# Liquid Crystal library with OLED support +custom_marlin.USES_LIQUIDCRYSTAL = LiquidCrystal=https://github.com/thisiskeithb/LiquidCrystalOLED/archive/1.0.8.zip custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip build_flags = ${common.build_flags} -DU8G_HAL_LINKS -DPLATFORM_M997_SUPPORT -IMarlin/src/HAL/LPC1768/include -IMarlin/src/HAL/LPC1768/u8g diff --git a/platformio.ini b/platformio.ini index 76200cbbd5..691d489c31 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,10 +10,38 @@ # Automatic targets - enable auto-uploading #targets = upload +# Prusa AIO Environment Options: +; STM32H743VI_btt +; STM32H723VG_btt +; BIGTREE_SKR_2 +; BIGTREE_SKR_2_F429 +; BIGTREE_SKR_2_USB +; BIGTREE_SKR_2_F429_USB +; BIGTREE_BTT002 +; BIGTREE_BTT002_VET6 +; STM32G0B1RE_btt +; STM32G0B1RE_btt_xfer +; STM32F401RC_btt +; STM32F103RC_btt +; STM32F103RE_btt +; STM32F103RE_btt_USB +; LPC1768 +; LPC1769 +; mks_robin_nano_v3 +; mks_robin_nano_v3_usb_flash_drive +; mks_robin_nano_v3_usb_flash_drive_msc +; mks_robin_nano_v3_1 +; mks_robin_nano_v3_1_usb_flash_drive +; mks_robin_nano_v3_1_usb_flash_drive_msc +; mks_eagle +; mks_eagle_usb_flash_drive +; mks_eagle_usb_flash_drive_msc +; mks_robin_e3 + [platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards -default_envs = mega2560 +default_envs = STM32H743VI_btt include_dir = Marlin extra_configs = Marlin/config.ini