diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 933c3d58bd..fb7658c6ed 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1,39 +1,39 @@ -#define ADAPTIVE_FAN_SLOWING /* Base machine Choose one option below to define machine size, board, and parameters - - Choose this for CR10 Original Melzi Board - You still need to select a machine size below! + Select machine size */ -//#define MachineCR10Orig + +//#define MachineEnder2 +//#define MachineEnder3 +//#define MachineEnder4 +//#define MachineMini +//#define MachineCR20 //Buzzer doesnt work +//#define MachineCR20Pro +//#define MachineCR10 +//#define MachineCR10S +#define MachineCR10SPro // Graphics LCD Requires soldering R64 and R66 +//#define MachineCRX //Currently only supports GraphicLCD +//#define MachineS4 +//#define MachineS5 + +//#define MachineCR10Orig // Forces Melzi board /* Enabled this for linear advance instead of mesh leveling on a melzi board */ //#define OrigLA -/* - Select machine size -*/ -//#define MachineEnder2 // Must Select MachineCR10Orig above! -//#define MachineEnder3 // Must Select MachineCR10Orig above! -//#define MachineEnder4 -//#define MachineMini -//#define MachineCR20 //Buzzer doesnt work, need to map pin -//#define MachineCR20Pro -//#define MachineCR10Std -//#define MachineCRX -#define MachineCR10SPro -//#define MachineS4 -//#define MachineS5 //#define PLUS // Adds bltouch, allmetal, bilinear (standard), lerdge, 93 e steps/mm -//#define Big_UI +//#define Big_UI // Lightweight status screen #define BoardRev2 //Enable for SD detect function on Rev 2.1 boards or Ender 4 -//#define GraphicLCD //Full graphics LCD for Ender 4 +//#define GraphicLCD //Full graphics LCD for Ender 4, CR-X or CR10SPro +//#define ForceCRXDisplay +//#define Force10SProDisplay +#define TM3DTouchscreenUpdates // Enables TM3D Error screens and eeprom screen not found in Creality screen firmware //#define AddonFilSensor //Adds a filamnt runout sensor to the CR20 or Ender 4 //#define lerdgeFilSensor //Using lerdge filament sensor, which is opposite polarity to stock //#define DualFilSensors //Using dual filament sensors on XMax and YMAX @@ -49,12 +49,12 @@ #define HotendStock //#define HotendE3D -/* - Enable this if you have an all metal hotend capable of 300c - -*/ +//Enable this if you have an all metal hotend capable of 300c #define HotendAllMetal +// Enable this if you used a plug and play creality e3d kit with the Creality thermistor +//#define CrealityThermistor + /* * Select these if you have changed to a high performance extruder */ @@ -97,13 +97,16 @@ #define ABL_BLTOUCH //#define CREALITY_ABL_MOUNT //Using creality ABL mount +//#define E3D_DUALFAN_MOUNT // Using HD Modular mount as above with 2 5015 blowers and sensor on the right +//#define E3D_PROBEMOUNT_LEFT // Default is probe mounted to the right for E3D. Set this to invert. + /* Choose bed leveling type here Requires a sensor from above Melzi board users may only select ABL_BI for bilinear leveling */ //#define ABL_BI -#define ABL_UBL +//#define ABL_UBL //#define POWER_LOSS_RECOVERY //Large and does not fit with any other features on Melzi, or UBL on Atmega /* @@ -173,21 +176,6 @@ * Advanced settings can be found in Configuration_adv.h * */ - -#if(ENABLED(MachineCR10SPro)) - #define MachineCR10Std - #if DISABLED(ABL_BLTOUCH) - #define ABL_NCSW - #endif - #if DISABLED(ABL_UBL) - #define ABL_BI - #endif - #define MeshStd - #define BoardRev2 - #define SD_DETECT_PIN 49 -#endif - - #define CONFIGURATION_H_VERSION 020000 //=========================================================================== @@ -244,7 +232,57 @@ */ // Enable to show the bitmap in Marlin/_Bootscreen.h on startup. -#if(DISABLED(MachineEnder4) && DISABLED(MachineCR10Orig) && DISABLED(LowMemoryBoard) && ( DISABLED(MachineCR10SPro) && DISABLED(GraphicLCD))) +#if(ENABLED(MachineCR10SPro)) + #define MachineCR10Std + #if DISABLED(ABL_BLTOUCH) + #define ABL_NCSW + #endif + #if DISABLED(ABL_UBL) + #define ABL_BI + #endif + #define MeshStd + #define BoardRev2 + #define SD_DETECT_PIN 49 +#endif + +#if ENABLED(MachineEnder2) || ENABLED(MachineEnder3) || ENABLED(MachineCR10) + #define MachineCR10Orig +#endif + +#if ENABLED(MachineCR10) || ENABLED(MachineCR10S) + #define MachineCR10Std +#endif + +#if ENABLED(PLUS) + #define lerdgeFilSensor //Using lerdge filament sensor, which is opposite polarity to stock) + #define HotendAllMetal + #define EZRstruder + #if DISABLED(ABL_UBL) + #define ABL_BI + #endif + #define ABL_BLTOUCH + #define HotendAllMetal +#endif + +#if(ENABLED(MachineCRX)) + #define MachineCR10Std + #define Dual_BowdenSplitterY +#endif + +#if ENABLED(MachineCR20Pro) + #define MachineCR20 + #if DISABLED(ABL_EZABL) && DISABLED(ABL_NCSW) + #define ABL_BLTOUCH + #endif + #define HotendAllMetal + #if DISABLED(ABL_UBL) + #define ABL_BI + #define POWER_LOSS_RECOVERY + #endif + #define SolidBedMounts +#endif + +#if(DISABLED(MachineEnder4) && DISABLED(MachineCR10Orig) && DISABLED(LowMemoryBoard)) && DISABLED(MachineCR10SPro) #define SHOW_CUSTOM_BOOTSCREEN #endif // Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen. @@ -266,6 +304,8 @@ #define CUSTOM_MACHINE_NAME "SuPeR CR-10" #elif(ENABLED(MachineCRX)) #define CUSTOM_MACHINE_NAME "TM3D CR-X" +#elif(ENABLED(MachineCR10SPro)) +#define CUSTOM_MACHINE_NAME "TM3D 10S Pro" #elif(ENABLED(MachineCR10Std)) #define CUSTOM_MACHINE_NAME "300 SuPeR" #elif(ENABLED(MachineS4)) @@ -335,32 +375,6 @@ #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " TM3D " VerChar1 VerChar2 VerChar3 VerChar4 VerChar5 VerChar6 -#if ENABLED(PLUS) - #define lerdgeFilSensor //Using lerdge filament sensor, which is opposite polarity to stock) - #define HotendAllMetal - #define EZRstruder - #if DISABLED(ABL_UBL) - #define ABL_BI - #endif - #define ABL_BLTOUCH - #define HotendAllMetal -#endif - -#if(ENABLED(MachineCRX)) - #define MachineCR10Std - #define Dual_BowdenSplitterY -#endif - -#if ENABLED(MachineCR20Pro) - #define MachineCR20 - #define ABL_BLTOUCH - #define HotendAllMetal - #if DISABLED(ABL_UBL) - #define ABL_BI - #define POWER_LOSS_RECOVERY - #endif - #define SolidBedMounts -#endif /** * Select the serial port on the board to use for communication with the host. * This allows the connection of wireless adapters (for instance) to non-default port pins. @@ -644,14 +658,13 @@ * * :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '501':"100K Zonestar (Tronxy X3A)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '61':"100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup", '66':"Dyze Design 4.7M High Temperature thermistor", '67':"Slice Engineering 450C High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-4':"Thermocouple + AD8495", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" } */ -#if ENABLED(HotendStock) -#define TEMP_SENSOR_0 1 +#if ENABLED(HotendStock) || ENABLED(CrealityThermistor) + #define TEMP_SENSOR_0 1 #if(ENABLED(Dual_ChimeraDualNozzle)) #define TEMP_SENSOR_1 1 #endif -#endif -#if ENABLED(HotendE3D) -#define TEMP_SENSOR_0 5 +#else + #define TEMP_SENSOR_0 5 #if(ENABLED(Dual_ChimeraDualNozzle)) #define TEMP_SENSOR_1 5 #endif @@ -711,9 +724,9 @@ // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! // You should use MINTEMP for thermistor short/failure protection. #if (ENABLED(HotendAllMetal)) - #define HEATER_0_MAXTEMP 310 + #define HEATER_0_MAXTEMP 315 #else - #define HEATER_0_MAXTEMP 250 + #define HEATER_0_MAXTEMP 255 #endif #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 @@ -749,17 +762,16 @@ // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it #if ENABLED(HotendStock) - - #if(ENABLED(MachineCRX)) - #define DEFAULT_Kp 17.5 - #define DEFAULT_Ki 1.37 - #define DEFAULT_Kd 55.47 - #else - // Stock CR-10 Hotend fan 100% - #define DEFAULT_Kp 17.42 - #define DEFAULT_Ki 1.27 - #define DEFAULT_Kd 59.93 - #endif + #if(ENABLED(MachineCRX) || ENABLED(MachineCR10SPro)) + #define DEFAULT_Kp 17.5 + #define DEFAULT_Ki 1.37 + #define DEFAULT_Kd 55.47 + #else + // Stock CR-10 Hotend fan 100% + #define DEFAULT_Kp 17.42 + #define DEFAULT_Ki 1.27 + #define DEFAULT_Kd 59.93 + #endif #endif #if ENABLED(HotendE3D) @@ -1043,7 +1055,7 @@ * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]] */ #if ENABLED(MachineCR20Pro) - #define DEFAULT_MAX_FEEDRATE { 7500, 7500, 10, 25 } + #define DEFAULT_MAX_FEEDRATE { 7500, 7500, 10, 50 } #define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 25 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts @@ -1053,7 +1065,7 @@ #define DEFAULT_ZJERK 0.4 #define DEFAULT_EJERK 5.0 #elif (ENABLED(MachineMini) || ENABLED(MachineCR20) || ENABLED(MachineEnder2) || ENABLED(MachineEnder3) || ENABLED(MachineEnder4)) - #define DEFAULT_MAX_FEEDRATE { 750, 750, 10, 25 } + #define DEFAULT_MAX_FEEDRATE { 750, 750, 10, 50 } #define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 25 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts @@ -1063,8 +1075,8 @@ #define DEFAULT_ZJERK 0.4 #define DEFAULT_EJERK 5.0 #elif (ENABLED(MachineCR10SPro)) - #define DEFAULT_MAX_FEEDRATE { 500, 500, 10, 25 } - #define DEFAULT_MAX_ACCELERATION { 750, 750, 100, 25 } + #define DEFAULT_MAX_FEEDRATE { 500, 500, 10, 70 } + #define DEFAULT_MAX_ACCELERATION { 750, 750, 100, 60 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts #define DEFAULT_TRAVEL_ACCELERATION 300 // X, Y, Z acceleration for travel (non printing) moves @@ -1073,7 +1085,7 @@ #define DEFAULT_ZJERK 0.4 #define DEFAULT_EJERK 5.0 #elif (ENABLED(MachineCR10Std)) - #define DEFAULT_MAX_FEEDRATE { 500, 500, 10, 25 } + #define DEFAULT_MAX_FEEDRATE { 500, 500, 10, 50 } #define DEFAULT_MAX_ACCELERATION { 1500, 1500, 100, 25 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts @@ -1083,7 +1095,7 @@ #define DEFAULT_ZJERK 0.4 #define DEFAULT_EJERK 5.0 #elif ENABLED( MachineS4) - #define DEFAULT_MAX_FEEDRATE { 500, 400, 10, 25 } + #define DEFAULT_MAX_FEEDRATE { 500, 400, 10, 50 } #define DEFAULT_MAX_ACCELERATION { 1000, 750, 100, 25 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts @@ -1093,7 +1105,7 @@ #define DEFAULT_ZJERK 0.4 #define DEFAULT_EJERK 5.0 #elif ENABLED(MachineS5) - #define DEFAULT_MAX_FEEDRATE { 300, 300, 10, 25 } + #define DEFAULT_MAX_FEEDRATE { 300, 300, 10, 50 } #define DEFAULT_MAX_ACCELERATION { 1000, 500, 100, 25 } #define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration for retracts @@ -1125,7 +1137,7 @@ // #define JUNCTION_DEVIATION #if ENABLED(JUNCTION_DEVIATION) - #define JUNCTION_DEVIATION_MM 0.02 // (mm) Distance from real junction edge + #define JUNCTION_DEVIATION_MM 0.08 // (mm) Distance from real junction edge #endif /** @@ -1219,7 +1231,18 @@ #define BLTOUCH #endif #if ENABLED(BLTOUCH) -#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed + //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed + + /** + * BLTouch V3.0 and newer smart series + * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV. + * If the pin trigger is not detected, first try swapping the black and white wires then toggle this. + */ + #define BLTOUCH_V3 + #if ENABLED(BLTOUCH_V3) + #define BLTOUCH_FORCE_5V_MODE + //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE + #endif #endif /** @@ -1305,33 +1328,58 @@ #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] #endif - #if ((ENABLED(ABL_EZABL) || ENABLED(ABL_NCSW)) && ENABLED(HotendStock)) && DISABLED(CREALITY_ABL_MOUNT) - #define X_PROBE_OFFSET_FROM_EXTRUDER -44 // X offset: -left +right [of the nozzle] - #define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle] - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - #endif + #if ((ENABLED(ABL_EZABL) || ENABLED(ABL_NCSW)) && ENABLED(HotendStock)) + #if ENABLED(CREALITY_ABL_MOUNT) + #define X_PROBE_OFFSET_FROM_EXTRUDER -55 // X offset: -left +right [of the nozzle] + #define Y_PROBE_OFFSET_FROM_EXTRUDER -15 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #else + #define X_PROBE_OFFSET_FROM_EXTRUDER -44 // X offset: -left +right [of the nozzle] + #define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #endif + #endif - #if ((ENABLED(ABL_EZABL) || ENABLED(ABL_NCSW)) && ENABLED(HotendStock)) && ENABLED(CREALITY_ABL_MOUNT) - #define X_PROBE_OFFSET_FROM_EXTRUDER -55 // X offset: -left +right [of the nozzle] - #define Y_PROBE_OFFSET_FROM_EXTRUDER -15 // Y offset: -front +behind [the nozzle] - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - #endif #if (ENABLED(ABL_BLTOUCH) && ENABLED(HotendE3D)) - #define X_PROBE_OFFSET_FROM_EXTRUDER 33 // X offset: -left +right [of the nozzle] - #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #if ENABLED(E3D_DUALFAN_MOUNT) + #if ENABLED(E3D_PROBEMOUNT_LEFT) + #define X_PROBE_OFFSET_FROM_EXTRUDER -63 // X offset: -left +right [of the nozzle] + #else + #define X_PROBE_OFFSET_FROM_EXTRUDER 63 // X offset: -left +right [of the nozzle] + #endif + #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #else + #define X_PROBE_OFFSET_FROM_EXTRUDER 33 // X offset: -left +right [of the nozzle] + #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #endif #endif #if ((ENABLED(ABL_EZABL) || ENABLED(ABL_NCSW)) && ENABLED(HotendE3D)) - #define X_PROBE_OFFSET_FROM_EXTRUDER 33 // X offset: -left +right [of the nozzle] - #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #if ENABLED(E3D_DUALFAN_MOUNT) + #if ENABLED(E3D_PROBEMOUNT_LEFT) + #define X_PROBE_OFFSET_FROM_EXTRUDER -63 // X offset: -left +right [of the nozzle] + #else + #define X_PROBE_OFFSET_FROM_EXTRUDER 63 // X offset: -left +right [of the nozzle] + #endif + #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #else + #define X_PROBE_OFFSET_FROM_EXTRUDER 33 // X offset: -left +right [of the nozzle] + #define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] + #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] + #endif #endif #endif // Certain types of probes need to stay away from edges -#define MIN_PROBE_EDGE 10 +#if ENABLED(ABL_BLTOUCH) + #define MIN_PROBE_EDGE 3 +#else + #define MIN_PROBE_EDGE 5 +#endif // X and Y axis travel speed (mm/m) between probes #define XY_PROBE_SPEED 6000 @@ -1374,9 +1422,9 @@ // Enable the M48 repeatability test to test probe accuracy #if (ENABLED(ABL_EZABL)|| ENABLED(ABL_BLTOUCH) || ENABLED(ABL_NCSW)) -#if(DISABLED(MachineCR10Orig)) -#define Z_MIN_PROBE_REPEATABILITY_TEST -#endif + #if(DISABLED(MachineCR10Orig)) + #define Z_MIN_PROBE_REPEATABILITY_TEST + #endif #endif // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 // :{ 0:'Low', 1:'High' } @@ -1602,7 +1650,7 @@ * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. * By default the firmware assumes HIGH=FILAMENT PRESENT. */ -#if (DISABLED(MachineCR10Orig) && DISABLED(MachineCR20) && DISABLED(MachineEnder4) && DISABLED(MachineCRX)) || ENABLED(AddonFilSensor) || ENABLED(DualFilSensors) +#if(DISABLED(MachineCR10Orig) &&(DISABLED(MachineCR20)|| ENABLED(AddonFilSensor)) && (DISABLED(MachineEnder4) || ENABLED(AddonFilSensor)) && (DISABLED(MachineCRX)|| ENABLED(AddonFilSensor) || ENABLED(DualFilSensors))) #define FILAMENT_RUNOUT_SENSOR #endif #if ENABLED(FILAMENT_RUNOUT_SENSOR) @@ -1716,13 +1764,13 @@ */ #if(DISABLED(MachineCR10Orig)) #define G26_MESH_VALIDATION // Enable G26 mesh validation +#define G26_XYFEEDRATE 20 #endif #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 the G26 Mesh Validation Tool. - #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool. - #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for the G26 Mesh Validation Tool. - #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for XY Moves for the G26 Mesh Validation Tool. + #define MESH_TEST_HOTEND_TEMP 205.0 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool. + #define MESH_TEST_BED_TEMP 60.0 // (°C) Default bed temperature for the G26 Mesh Validation Tool. #endif #endif @@ -1736,7 +1784,7 @@ #elif ENABLED(MeshExtreme) #define GRID_MAX_POINTS_X 15 #else - GRID_MAX_POINTS_X 3 + #define GRID_MAX_POINTS_X 3 #endif #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X @@ -1744,33 +1792,40 @@ // Set the number of grid points per dimension. - - // Set the boundaries for probing (where the probe can reach). -#if( (X_PROBE_OFFSET_FROM_EXTRUDER + 15) > 0 ) -#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + 5) +/* + +#define MESH_INSET MIN_PROBE_EDGE + +#if( (X_PROBE_OFFSET_FROM_EXTRUDER ) > MESH_INSET ) + #define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + MESH_INSET + 1) #else -#define LEFT_PROBE_BED_POSITION 10 + #define LEFT_PROBE_BED_POSITION MESH_INSET + 1 #endif -#if( (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER - 5) < X_BED_SIZE) -#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER - 5) +#if( (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER) < X_BED_SIZE - MESH_INSET) + #define RIGHT_PROBE_BED_POSITION (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER - MESH_INSET - 1) #else -#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - X_PROBE_OFFSET_FROM_EXTRUDER - 5) + #define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - X_PROBE_OFFSET_FROM_EXTRUDER - MESH_INSET -1) #endif -#if ( (Y_PROBE_OFFSET_FROM_EXTRUDER + 25) > 10 ) -#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + 25) +#if ( (Y_PROBE_OFFSET_FROM_EXTRUDER + MESH_INSET) > MESH_INSET ) + #define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + MESH_INSET + 1) #else -#define FRONT_PROBE_BED_POSITION 25 + #define FRONT_PROBE_BED_POSITION MESH_INSET + 1 #endif -#if( (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER - 25) < Y_BED_SIZE) -#define BACK_PROBE_BED_POSITION (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER - 25) +#if( (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER ) < Y_BED_SIZE - MESH_INSET) +#define BACK_PROBE_BED_POSITION (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER - MESH_INSET - 1) #else -#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - 25) + #define BACK_PROBE_BED_POSITION (Y_BED_SIZE - Y_PROBE_OFFSET_FROM_EXTRUDER - MESH_INSET - 1 ) #endif +*/ + //#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE + //#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - (MIN_PROBE_EDGE)) + //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE + //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - (MIN_PROBE_EDGE)) // Probe along the Y axis, advancing X after each column //#define PROBE_Y_FIRST @@ -1937,8 +1992,11 @@ * Commands to execute at the end of G29 probing. * Useful to retract or move the Z probe out of the way. */ -#define Z_PROBE_END_SCRIPT "M280 P0 S90" - +#if ENABLED(ABL_BLTOUCH) + #define Z_PROBE_END_SCRIPT "M280 P0 S90 \n G1 X0 Y0" +#else + #define Z_PROBE_END_SCRIPT "G1 X0 Y0" +#endif // @section homing @@ -1962,19 +2020,24 @@ // #define Z_SAFE_HOMING +#if ENABLED(E3D_DUALFAN_MOUNT) + #define HOMING_ADD 15 +#else + #define HOMING_ADD 0 +#endif #if ENABLED(Z_SAFE_HOMING) #if ENABLED(MachineS4) - #define Z_SAFE_HOMING_X_POINT 60 // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT 60 // Y point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_X_POINT 60 + HOMING_ADD // X point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_Y_POINT 60 + HOMING_ADD // Y point for Z homing when homing all axis (G28). #elif ENABLED(MachineS5) - #define Z_SAFE_HOMING_X_POINT 80 // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT 80 // Y point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_X_POINT 80 + HOMING_ADD // X point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_Y_POINT 80 + HOMING_ADD // Y point for Z homing when homing all axis (G28). #elif ENABLED(MachineCRX) - #define Z_SAFE_HOMING_X_POINT 50 // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT 70 // Y point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_X_POINT 50 + HOMING_ADD // X point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_Y_POINT 70 + HOMING_ADD // Y point for Z homing when homing all axis (G28). #else - #define Z_SAFE_HOMING_X_POINT 50 // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT 50 // Y point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_X_POINT 50 + HOMING_ADD // X point for Z homing when homing all axis (G28). + #define Z_SAFE_HOMING_Y_POINT 50 + HOMING_ADD // Y point for Z homing when homing all axis (G28). #endif #endif @@ -2200,7 +2263,7 @@ * M76 - Pause the print job timer * M77 - Stop the print job timer */ - #if(DISABLED(MachineCR10Orig)) +#if DISABLED(MachineCR10Orig) #define PRINTJOB_TIMER_AUTOSTART #endif /** @@ -2215,7 +2278,7 @@ * * View the current statistics with M78. */ - #if(DISABLED(MachineCR10Orig)) +#if DISABLED(MachineCR10Orig) #define PRINTCOUNTER #endif //============================================================================= @@ -2308,8 +2371,9 @@ // This option overrides the default number of encoder pulses needed to // produce one step. Should be increased for high-resolution encoders. // -//#define ENCODER_PULSES_PER_STEP 4 - +#if ENABLED(MachineCR20) + #define ENCODER_PULSES_PER_STEP 2 +#endif // // Use this option to override the number of step signals required to // move between next/prev menu items. @@ -2827,4 +2891,4 @@ //#define DEACTIVATE_SERVOS_AFTER_MOVE // Allow servo angle to be edited and saved to EEPROM -//#define EDITABLE_SERVO_ANGLES \ No newline at end of file +//#define EDITABLE_SERVO_ANGLES diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 171bf2c28c..3cb5d017dc 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -79,7 +79,7 @@ #define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) && ENABLED(PIDTEMP) - //#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303 + #define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303 #endif /** @@ -1025,7 +1025,7 @@ // Note: Extra time may be added to mitigate controller latency. #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). #define BABYSTEP_ZPROBE_OFFSET // Enable to combine M851 and Babystepping - #if DISABLED(MachineCR10SPro) && DISABLED(GraphicLCD) + #if DISABLED(MachineCR10SPro) && DISABLED(GraphicLCD) #define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif @@ -1128,7 +1128,9 @@ // // G2/G3 Arc Support // -#define ARC_SUPPORT // Disable this feature to save ~3226 bytes +#if DISABLED(MachineCR10Orig) + #define ARC_SUPPORT // Disable this feature to save ~3226 bytes +#endif #if ENABLED(ARC_SUPPORT) #define MM_PER_ARC_SEGMENT 1 // Length of each arc segment #define N_ARC_CORRECTION 25 // Number of intertpolated segments between corrections @@ -1403,7 +1405,7 @@ #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. #define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change - #if(DISABLED(MachineCR10Orig) && DISABLED(LowMemoryBoard)) + #if(DISABLED(MachineCR10Orig) && DISABLED(LowMemoryBoard)) && DISABLED(MachineCR10SPro) //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #endif @@ -2150,28 +2152,24 @@ #else #define CommBedTmp "75" #endif - -#if (ENABLED(ABL_UBL)) - #define USER_DESC_1 "UBL Commission 1" - #define USER_GCODE_1 "M502 \n M500 \n M501 \n M190 S" CommBedTmp" \n M104 S225 \n G28 \n G29 P1 \n G29 S1 \n M117 Run Step 2" - - #define USER_DESC_2 "UBL Commission 2" - #define USER_GCODE_2 "G29 S1 \n G29 S0 \n G29 F 10.0 \n G29 A \n M500 \n G28 \n G29 L1 \n M109 S225 \n G1 X100 Y 100 \n G1 Z0 \n M117 Set Z Offset" + #define USER_DESC_1 "Mesh Commission" + #if (ENABLED(ABL_UBL)) + #define USER_GCODE_1 "M502 \n M500 \n M501 \n M190 S" CommBedTmp" \n G28 \n G29 P1 \n G29 S1 \n G29 S0 \n G29 F 10.0 \n G29 A \n M500 \n G28 \n G29 L1 \n M109 S225 \n G1 X150 Y 150 \n G1 Z0 \n M77 \n M117 Set Z Offset" + #elif ENABLED(ABL_BI) + #define USER_GCODE_1 "M117 \n M502 \n M500 \n M501 \n M190 S" CommBedTmp" \n M117 Probing.... \n M104 S225 \n G28 \n G29 \n M500 \n G28 \n M420 S \n M109 S225 \n G1 X100 Y 100 \n G1 Z0 \n M77 \n M117 Set Z Offset" + #endif + + #define USER_DESC_2 "PID Tune" + #define USER_GCODE_2 "M106 S128 \n M303 C8 S225 E1 U \n M500 \n M117 PID Tune Done" #define USER_DESC_3 "Prep for Z Adjust" - #define USER_GCODE_3 "M190 " CommBedTmp" \n M104 235 \n G28 \n G29 L1 \n G1 X100 Y 100 \n G1 Z0" + #define USER_GCODE_3 "M190 S" CommBedTmp" \n M104 235 \n G28 \n G29 L1 \n G1 X100 Y 100 \n G1 Z0" - #define USER_DESC_4 "Fill Mesh Points" - #define USER_GCODE_4 "G29 P3 \n G29 P3 \n G29 P3 \n G29 T" -#elif ENABLED(ABL_BI) - #define USER_DESC_1 "BIL Commission" - #define USER_GCODE_1 "M502 \n M500 \n M501 \n M190 " CommBedTmp" \n M104 S225 \n G28 \n G29 \n M500 \n G28 \n M420 S \n M109 S225 \n G1 X100 Y 100 \n G1 Z0 \n M117 Set Z Offset" + #define USER_DESC_4 "Store Settings" + #define USER_GCODE_4 "M500" - #define USER_DESC_2 "Prep for Z Adjust" - #define USER_GCODE_2 "M190 " CommBedTmp" \n M104 235 \n G28 \n M420 S \n G1 X100 Y 100 \n G1 Z0" -#endif - #define USER_DESC_5 "Run Mesh Validation" - #define USER_GCODE_5 "G26" + //#define USER_DESC_5 "Run Mesh Validation" + //#define USER_GCODE_5 "G26" #endif /** @@ -2405,7 +2403,8 @@ /** * M43 - display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins */ -#define PINS_DEBUGGING - +#if DISABLED(MachineCR10Orig) + #define PINS_DEBUGGING +#endif // Enable Marlin dev mode which adds some special commands -//#define MARLIN_DEV_MODE \ No newline at end of file +//#define MARLIN_DEV_MODE diff --git a/Marlin/src/feature/bedlevel/abl/abl.cpp b/Marlin/src/feature/bedlevel/abl/abl.cpp index ce2799cd38..b6011332bf 100644 --- a/Marlin/src/feature/bedlevel/abl/abl.cpp +++ b/Marlin/src/feature/bedlevel/abl/abl.cpp @@ -32,6 +32,10 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../../../core/debug_out.h" +#if ENABLED(EXTENSIBLE_UI) + #include "../../../lcd/extensible_ui/ui_api.h" +#endif + int bilinear_grid_spacing[2], bilinear_start[2]; float bilinear_grid_factor[2], z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y]; diff --git a/Marlin/src/feature/bedlevel/bedlevel.cpp b/Marlin/src/feature/bedlevel/bedlevel.cpp index 55267b44e0..f2a0274e06 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.cpp +++ b/Marlin/src/feature/bedlevel/bedlevel.cpp @@ -42,6 +42,11 @@ #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../../core/debug_out.h" +#if ENABLED(EXTENSIBLE_UI) + #include "../../lcd/extensible_ui/ui_api.h" +#endif + + bool leveling_is_valid() { return #if ENABLED(MESH_BED_LEVELING) diff --git a/Marlin/src/gcode/bedlevel/M420.cpp b/Marlin/src/gcode/bedlevel/M420.cpp index f87c60fecb..28730f3b4f 100644 --- a/Marlin/src/gcode/bedlevel/M420.cpp +++ b/Marlin/src/gcode/bedlevel/M420.cpp @@ -32,6 +32,10 @@ #include "../../module/configuration_store.h" #endif +#if ENABLED(EXTENSIBLE_UI) + #include "../../lcd/extensible_ui/ui_api.h" +#endif + //#define M420_C_USE_MEAN /** @@ -175,14 +179,16 @@ void GcodeSuite::M420() { set_bed_leveling_enabled(false); // Subtract the mean from all values for (uint8_t x = GRID_MAX_POINTS_X; x--;) - for (uint8_t y = GRID_MAX_POINTS_Y; y--;) + for (uint8_t y = GRID_MAX_POINTS_Y; y--;) { Z_VALUES(x, y) -= zmean; + #if ENABLED(EXTENSIBLE_UI) + ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y)); + #endif + } + #if ENABLED(ABL_BILINEAR_SUBDIVISION) bed_level_virt_interpolate(); #endif - #if ENABLED(EXTENSIBLE_UI) - ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y)); - #endif } #endif diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 675cd2b88e..f6caae4c88 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -71,6 +71,10 @@ #define G29_RETURN(b) return; #endif +#if ENABLED(EXTENSIBLE_UI) + #include "../../../lcd/extensible_ui/ui_api.h" +#endif + /** * G29: Detailed Z probe, probes the bed at 3 or more points. * Will fail if the printer has not been homed with G28. diff --git a/Marlin/src/gcode/bedlevel/abl/M421.cpp b/Marlin/src/gcode/bedlevel/abl/M421.cpp index cba905b4fb..295911330c 100644 --- a/Marlin/src/gcode/bedlevel/abl/M421.cpp +++ b/Marlin/src/gcode/bedlevel/abl/M421.cpp @@ -31,6 +31,10 @@ #include "../../gcode.h" #include "../../../feature/bedlevel/abl/abl.h" +#if ENABLED(EXTENSIBLE_UI) + #include "../../../lcd/extensible_ui/ui_api.h" +#endif + /** * M421: Set a single Mesh Bed Leveling Z coordinate * diff --git a/Marlin/src/lcd/extensible_ui/lib/Creality_DWIN.cpp b/Marlin/src/lcd/extensible_ui/lib/Creality_DWIN.cpp index a5316d5027..24e2018cf4 100644 --- a/Marlin/src/lcd/extensible_ui/lib/Creality_DWIN.cpp +++ b/Marlin/src/lcd/extensible_ui/lib/Creality_DWIN.cpp @@ -49,7 +49,6 @@ unsigned char AxisPagenum = 0; //0 for 10mm, 1 for 1mm, 2 for 0.1mm bool InforShowStatus = true; bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage. bool FanStatus = true; -bool AutoLevelStatus = true; bool AutohomeKey = false; unsigned char AutoHomeIconNum; unsigned long VolumeSet = 0x80; @@ -58,12 +57,9 @@ bool PoweroffContinue = false; extern const char *injected_commands_P; char commandbuf[30]; -//RTSSHOW rtscheck; - void onStartup() { Serial2.begin(115200); LanguageRecbuf = 0; //Force language to English, 1=Chinese but currently not implemented - AutoLevelStatus = 1; //Set auto leveling on int showcount = 0; rtscheck.recdat.head[0] = rtscheck.snddat.head[0] = FHONE; @@ -71,28 +67,27 @@ char commandbuf[30]; memset(rtscheck.databuf,0, sizeof(rtscheck.databuf)); #if HAS_MESH && (ENABLED(MachineCR10SPro) || ENABLED(Force10SProDisplay)) - /*if (getMeshValid()) + if (ExtUI::getMeshValid()) { - bed_mesh_t bedMesh = getMeshArray(); + //bed_mesh_t bedMesh = ExtUI::getMeshArray(); for(int xCount = 0; xCount < GRID_MAX_POINTS_X; xCount++) { for(int yCount = 0; yCount < GRID_MAX_POINTS_X; yCount++) { if((showcount++) < 16) { - rtscheck.RTS_SndData(bedMesh[xCount][yCount] *10000, AutolevelVal + (15-showcount-1)*2); + rtscheck.RTS_SndData(getMeshArray[xCount][yCount] *10000, AutolevelVal + (15-showcount-1)*2); rtscheck.RTS_SndData(showcount,AutolevelIcon); } } } rtscheck.RTS_SndData(2, AutoLevelIcon); //On enqueueCommands_P((PSTR("M420 S1"))); // Enable Bed leveling if mesh found and valid - AutoLevelStatus = getLevelingActive(); //set ExtUI status for consistency } else { rtscheck.RTS_SndData(3, AutoLevelIcon); //Off - }*/ + } #endif //VolumeSet = eeprom_read_byte((unsigned char*)FONT_EEPROM+4); @@ -1013,13 +1008,17 @@ SERIAL_ECHO(Checkkey); } else if(recdat.data[0] == 1) //Bed Autoleveling { - AutoLevelStatus?RTS_SndData(2, AutoLevelIcon):RTS_SndData(3, AutoLevelIcon); + if (getLevelingActive()) + RTS_SndData(2, AutoLevelIcon); + else + RTS_SndData(3, AutoLevelIcon); + RTS_SndData(10, FilenameIcon); //Motor Icon waitway = 2; //only for prohibiting to receive massage - - enqueueCommands_P((PSTR("G28"))); + if (!isPositionKnown()) + enqueueCommands_P((PSTR("G28"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F150 Z0.0"))); + enqueueCommands_P((PSTR("G1 F100 Z0.0"))); RTS_SndData(ExchangePageBase + 64, ExchangepageAddr); } else if(recdat.data[0] == 2) // Exchange filement @@ -1081,40 +1080,40 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X30 Y30 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 2) // Top Right { waitway = 4; //only for prohibiting to receive massage - enqueueCommands_P((PSTR("G1 F200 Z3"))); + enqueueCommands_P((PSTR("G1 F100 Z3"))); enqueueCommands_P((PSTR("G1 X270 Y30 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F200 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 3) // Centre { waitway = 4; //only for prohibiting to receive massage - enqueueCommands_P((PSTR("G1 F200 Z3"))); + enqueueCommands_P((PSTR("G1 F100 Z3"))); enqueueCommands_P((PSTR("G1 X150 Y150 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F200 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 4) // Bottom Left { waitway = 4; //only for prohibiting to receive massage - enqueueCommands_P((PSTR("G1 F200 Z3"))); + enqueueCommands_P((PSTR("G1 F100 Z3"))); enqueueCommands_P((PSTR("G1 X30 Y270 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F200 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 5) // Bottom Right { waitway = 4; //only for prohibiting to receive massage - enqueueCommands_P((PSTR("G1 F200 Z3"))); + enqueueCommands_P((PSTR("G1 F100 Z3"))); enqueueCommands_P((PSTR("G1 X270 Y270 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F200 Z-3"))); + enqueueCommands_P((PSTR("G1 F200 Z0"))); } break; #else @@ -1124,7 +1123,7 @@ SERIAL_ECHO(Checkkey); if (!isAxisPositionKnown((axis_t)X) || !isAxisPositionKnown((axis_t)Y)) enqueueCommands_P(PSTR("G28")); else - enqueueCommands_P(PSTR("G28 Z0")); + enqueueCommands_P(PSTR("G28 Z")); enqueueCommands_P(PSTR("G1 F150 Z0.0")); RTS_SndData(getZOffset_mm()*100, 0x1026); } @@ -1152,21 +1151,18 @@ SERIAL_ECHO(Checkkey); { //setLevelingActive(false); // FIX ME waitway = 4; //only for prohibiting to receive massage - enqueueCommands_P((PSTR("G28 X0 Y0 Z0"))); - enqueueCommands_P((PSTR("G90"))); + if (!isPositionKnown()) + enqueueCommands_P((PSTR("G28"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F200 Z0.0"))); + enqueueCommands_P((PSTR("G1 F100 Z0.0"))); RTS_SndData(ExchangePageBase + 84, ExchangepageAddr); } - else if(recdat.data[0] == 5) // AutoLevel + else if(recdat.data[0] == 5) // AutoLevel "Measuring" Button { waitway = 3; //only for prohibiting to receive massage RTS_SndData(1, AutolevelIcon); RTS_SndData(ExchangePageBase + 85, ExchangepageAddr); - enqueueCommands_P(PSTR("G29 P1")); - enqueueCommands_P((PSTR("G1 F100 Z10.0;"))); - enqueueCommands_P(PSTR("G1 X150 Y150 F5000")); - enqueueCommands_P((PSTR("G1 F100 Z0.0"))); + enqueueCommands_P(PSTR(USER_GCODE_1)); } else if(recdat.data[0] == 6) // Assitant Level , Centre 1 { @@ -1174,7 +1170,7 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X150 Y150 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 7) // Assitant Level , Front Left 2 { @@ -1182,7 +1178,7 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X30 Y30 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 8) // Assitant Level , Front Right 3 { @@ -1190,7 +1186,7 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X270 Y30 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 9) // Assitant Level , Back Right 4 { @@ -1198,7 +1194,7 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X270 Y270 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 10) // Assitant Level , Back Left 5 { @@ -1206,24 +1202,21 @@ SERIAL_ECHO(Checkkey); enqueueCommands_P((PSTR("G1 F100 Z3;"))); enqueueCommands_P((PSTR("G1 X30 Y270 F5000"))); waitway = 2; - enqueueCommands_P((PSTR("G1 F100 Z-3"))); + enqueueCommands_P((PSTR("G1 F100 Z0"))); } else if(recdat.data[0] == 11) // Autolevel switch { - if(AutoLevelStatus) //turn on the Autolevel + if(getLevelingActive()) //turn on the Autolevel { RTS_SndData(3, AutoLevelIcon); - AutoLevelStatus = false; - enqueueCommands_P((PSTR("M420 S1"))); + enqueueCommands_P((PSTR("M420 S0"))); } else//turn off the Autolevel { RTS_SndData(2, AutoLevelIcon); - AutoLevelStatus = true; - enqueueCommands_P((PSTR("M420 0"))); + enqueueCommands_P((PSTR("M420 S1"))); } RTS_SndData(getZOffset_mm()*100, 0x1026); - //eeprom_write_byte((unsigned char*)FONT_EEPROM+2, AutoLevelStatus); } RTS_SndData(10, FilenameIcon); @@ -1258,7 +1251,7 @@ SERIAL_ECHO(Checkkey); { waitway = 4; enqueueCommands_P((PSTR("G28"))); - enqueueCommands_P((PSTR("G1 F100 Z10.2"))); + enqueueCommands_P((PSTR("G1 F100 Z10"))); InforShowStatus = AutohomeKey = true; AutoHomeIconNum = 0; RTS_SndData(ExchangePageBase + 74, ExchangepageAddr); @@ -1711,9 +1704,7 @@ void onPrinterKilled(PGM_P const msg) {} #if ENABLED(POWER_LOSS_RECOVERY) if(PoweroffContinue) { - //sprintf_P(power_off_commands[0], PSTR("G92 Z%s E%s"), str_Z, str_E); enqueue_and_echo_command(power_off_commands[0]); - //sprintf_P(power_off_commands[1], PSTR("G0 Z%s"), str_Z_up); enqueue_and_echo_command(power_off_commands[1]); enqueue_and_echo_commands_P((PSTR("G28 X0 Y0"))); } diff --git a/Marlin/src/lcd/extensible_ui/ui_api.cpp b/Marlin/src/lcd/extensible_ui/ui_api.cpp index aa71743e12..4b5c0477c7 100644 --- a/Marlin/src/lcd/extensible_ui/ui_api.cpp +++ b/Marlin/src/lcd/extensible_ui/ui_api.cpp @@ -714,7 +714,7 @@ namespace ExtUI { void setLevelingActive(const bool state) { set_bed_leveling_enabled(state); } #if HAS_MESH bool getMeshValid() { return leveling_is_valid(); } - bed_mesh_t getMeshArray() { return Z_VALUES_ARR; } + //bed_mesh_t getMeshArray = Z_VALUES_ARR; void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zoff) { if (WITHIN(xpos, 0, GRID_MAX_POINTS_X) && WITHIN(ypos, 0, GRID_MAX_POINTS_Y)) { Z_VALUES(xpos, ypos) = zoff; @@ -748,10 +748,15 @@ namespace ExtUI { enqueue_and_echo_commands_P(gcode); } + bool commandsInQueue() { return (planner.movesplanned() || commands_in_queue); } + bool isAxisPositionKnown(const axis_t axis) { return TEST(axis_known_position, axis); } + bool isPositionKnown() { return all_axes_known(); } + bool isMachineHomed() { return all_axes_homed(); } + PGM_P getFirmwareName_str() { static const char firmware_name[] PROGMEM = "Marlin " SHORT_BUILD_VERSION; return firmware_name; diff --git a/Marlin/src/lcd/extensible_ui/ui_api.h b/Marlin/src/lcd/extensible_ui/ui_api.h index dd4e021ef5..be18c711ba 100644 --- a/Marlin/src/lcd/extensible_ui/ui_api.h +++ b/Marlin/src/lcd/extensible_ui/ui_api.h @@ -58,9 +58,12 @@ namespace ExtUI { bool isMoving(); bool isAxisPositionKnown(const axis_t); + bool isPositionKnown(); // Axis position guaranteed, steppers active since homing + bool isMachineHomed(); // Axis position most likely correct, steppers may have deactivated bool canMove(const axis_t); bool canMove(const extruder_t); void enqueueCommands_P(PGM_P const); + bool commandsInQueue(); /** * Getters and setters @@ -112,7 +115,7 @@ namespace ExtUI { #if HAS_MESH #include "../../feature/bedlevel/bedlevel.h" bool getMeshValid(); - bed_mesh_t getMeshArray(); + float *getMeshArray[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y] = &Z_VALUES_ARR; void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zval); void onMeshUpdate(const uint8_t xpos, const uint8_t ypos, const float zval); #endif