Merge pull request #5973 from thinkyhead/rc_circle_pattern

Add circle pattern to nozzle clean
This commit is contained in:
Scott Lahteine 2017-03-06 04:47:01 -06:00 committed by GitHub
commit 33f8a8a344
26 changed files with 1143 additions and 678 deletions

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,9 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
// //
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
@ -1011,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1019,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -3164,8 +3164,9 @@ inline void gcode_G4() {
const uint8_t pattern = code_seen('P') ? code_value_ushort() : 0, const uint8_t pattern = code_seen('P') ? code_value_ushort() : 0,
strokes = code_seen('S') ? code_value_ushort() : NOZZLE_CLEAN_STROKES, strokes = code_seen('S') ? code_value_ushort() : NOZZLE_CLEAN_STROKES,
objects = code_seen('T') ? code_value_ushort() : NOZZLE_CLEAN_TRIANGLES; objects = code_seen('T') ? code_value_ushort() : NOZZLE_CLEAN_TRIANGLES;
const float radius = code_seen('R') ? code_value_float() : NOZZLE_CLEAN_CIRCLE_RADIUS;
Nozzle::clean(pattern, strokes, objects); Nozzle::clean(pattern, strokes, radius, objects);
} }
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1010,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1018,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -983,6 +983,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -993,7 +997,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1001,6 +1005,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -983,6 +983,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -993,7 +997,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1001,6 +1005,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -992,6 +992,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1002,7 +1006,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1010,6 +1014,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -994,6 +994,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1004,7 +1008,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1012,6 +1016,13 @@
#define NOZZLE_CLEAN_START_POINT { X_MIN_POS + 10, Y_MAX_POS - 9, (Z_MIN_POS + 0.5)} #define NOZZLE_CLEAN_START_POINT { X_MIN_POS + 10, Y_MAX_POS - 9, (Z_MIN_POS + 0.5)}
#define NOZZLE_CLEAN_END_POINT { X_MIN_POS + 90, Y_MAX_POS - 0, (Z_MIN_POS + 0.5)} #define NOZZLE_CLEAN_END_POINT { X_MIN_POS + 90, Y_MAX_POS - 0, (Z_MIN_POS + 0.5)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
//#define NOZZLE_CLEAN_GOBACK //#define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -112,7 +112,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1029,6 +1029,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1039,7 +1043,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1047,6 +1051,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1010,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1018,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1010,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1018,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1010,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1018,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -999,6 +999,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1009,7 +1013,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1017,6 +1021,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -128,7 +128,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1015,6 +1015,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1025,7 +1029,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1033,6 +1037,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1021,6 +1021,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1031,7 +1035,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1039,6 +1043,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -992,6 +992,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1002,7 +1006,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1010,6 +1014,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1000,6 +1000,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1010,7 +1014,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1018,6 +1022,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -1,54 +1,54 @@
/** /**
Marlin 3D Printer Firmware * Marlin 3D Printer Firmware
Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
Based on Sprinter and grbl. * Based on Sprinter and grbl.
Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. * (at your option) any later version.
*
This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. * GNU General Public License for more details.
*
You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/ */
/** /**
Configuration.h * Configuration.h
*
Basic settings such as: * Basic settings such as:
*
- Type of electronics * - Type of electronics
- Type of temperature sensor * - Type of temperature sensor
- Printer geometry * - Printer geometry
- Endstop configuration * - Endstop configuration
- LCD controller * - LCD controller
- Extra features * - Extra features
*
Advanced settings can be found in Configuration_adv.h * Advanced settings can be found in Configuration_adv.h
*
*/ */
#ifndef CONFIGURATION_H #ifndef CONFIGURATION_H
#define CONFIGURATION_H #define CONFIGURATION_H
/** /**
*
* *********************************** * ***********************************
* ** ATTENTION TO ALL DEVELOPERS ** * ** ATTENTION TO ALL DEVELOPERS **
* *********************************** * ***********************************
*
You must increment this version number for every significant change such as, * You must increment this version number for every significant change such as,
but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
*
Note: Update also Version.h ! * Note: Update also Version.h !
*/ */
#define CONFIGURATION_H_VERSION 010100 #define CONFIGURATION_H_VERSION 010100
//=========================================================================== //===========================================================================
@ -56,16 +56,16 @@
//=========================================================================== //===========================================================================
/** /**
Here are some standard links for getting your machine calibrated: * Here are some standard links for getting your machine calibrated:
*
http://reprap.org/wiki/Calibration * http://reprap.org/wiki/Calibration
http://youtu.be/wAL9d7FgInk * http://youtu.be/wAL9d7FgInk
http://calculator.josefprusa.cz * http://calculator.josefprusa.cz
http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
http://www.thingiverse.com/thing:5573 * http://www.thingiverse.com/thing:5573
https://sites.google.com/site/repraplogphase/calibration-of-your-reprap * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
http://www.thingiverse.com/thing:298812 * http://www.thingiverse.com/thing:298812
*/ */
//=========================================================================== //===========================================================================
//============================= DELTA Printer =============================== //============================= DELTA Printer ===============================
@ -106,22 +106,22 @@
// @section machine // @section machine
/** /**
Select which serial port on the board will be used for communication with the host. * Select which serial port on the board will be used for communication with the host.
This allows the connection of wireless adapters (for instance) to non-default port pins. * This allows the connection of wireless adapters (for instance) to non-default port pins.
Serial port 0 is always used by the Arduino bootloader regardless of this setting. * Serial port 0 is always used by the Arduino bootloader regardless of this setting.
*
:[0, 1, 2, 3, 4, 5, 6, 7] * :[0, 1, 2, 3, 4, 5, 6, 7]
*/ */
#define SERIAL_PORT 0 #define SERIAL_PORT 0
/** /**
This setting determines the communication speed of the printer. * This setting determines the communication speed of the printer.
*
250000 works in most cases, but you might try a lower speed if * 250000 works in most cases, but you might try a lower speed if
you commonly experience drop-outs during host printing. * you commonly experience drop-outs during host printing.
*
:[2400, 9600, 19200, 38400, 57600, 115200, 250000] * :[2400, 9600, 19200, 38400, 57600, 115200, 250000]
*/ */
#define BAUDRATE 250000 #define BAUDRATE 250000
// Enable the Bluetooth serial interface on AT90USB devices // Enable the Bluetooth serial interface on AT90USB devices
@ -130,7 +130,7 @@
// The following define selects which electronics board you have. // The following define selects which electronics board you have.
// Please choose the name from boards.h that matches your setup // Please choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD #ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB #define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif #endif
// Optional custom name for your RepStrap or other custom machine // Optional custom name for your RepStrap or other custom machine
@ -155,24 +155,24 @@
// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z // Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
//#define SWITCHING_EXTRUDER //#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER) #if ENABLED(SWITCHING_EXTRUDER)
#define SWITCHING_EXTRUDER_SERVO_NR 0 #define SWITCHING_EXTRUDER_SERVO_NR 0
#define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
//#define HOTEND_OFFSET_Z {0.0, 0.0} //#define HOTEND_OFFSET_Z {0.0, 0.0}
#endif #endif
/** /**
"Mixing Extruder" * "Mixing Extruder"
- Adds a new code, M165, to set the current mix factors. * - Adds a new code, M165, to set the current mix factors.
- Extends the stepping routines to move multiple steppers in proportion to the mix. * - Extends the stepping routines to move multiple steppers in proportion to the mix.
- Optional support for Repetier Host M163, M164, and virtual extruder. * - Optional support for Repetier Host M163, M164, and virtual extruder.
- This implementation supports only a single extruder. * - This implementation supports only a single extruder.
- Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
*/ */
//#define MIXING_EXTRUDER //#define MIXING_EXTRUDER
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
#define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder
#define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164
//#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands
#endif #endif
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
@ -182,20 +182,20 @@
//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis //#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis
/** /**
Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN * Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN
*
0 = No Power Switch * 0 = No Power Switch
1 = ATX * 1 = ATX
2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) * 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
*
:{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' }
*/ */
#define POWER_SUPPLY 0 #define POWER_SUPPLY 0
#if POWER_SUPPLY > 0 #if POWER_SUPPLY > 0
// Enable this option to leave the PSU off at startup. // Enable this option to leave the PSU off at startup.
// Power to steppers and heaters will need to be turned on with M80. // Power to steppers and heaters will need to be turned on with M80.
//#define PS_DEFAULT_OFF //#define PS_DEFAULT_OFF
#endif #endif
// @section temperature // @section temperature
@ -205,50 +205,50 @@
//=========================================================================== //===========================================================================
/** /**
--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
*
Temperature sensors available: * Temperature sensors available:
*
-3 : thermocouple with MAX31855 (only for sensor 0) * -3 : thermocouple with MAX31855 (only for sensor 0)
-2 : thermocouple with MAX6675 (only for sensor 0) * -2 : thermocouple with MAX6675 (only for sensor 0)
-1 : thermocouple with AD595 * -1 : thermocouple with AD595
0 : not used * 0 : not used
1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup) * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
3 : Mendel-parts thermistor (4.7k pullup) * 3 : Mendel-parts thermistor (4.7k pullup)
4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) * 5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
10 : 100k RS thermistor 198-961 (4.7k pullup) * 10 : 100k RS thermistor 198-961 (4.7k pullup)
11 : 100k beta 3950 1% thermistor (4.7k pullup) * 11 : 100k beta 3950 1% thermistor (4.7k pullup)
12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
20 : the PT100 circuit found in the Ultimainboard V2.x * 20 : the PT100 circuit found in the Ultimainboard V2.x
60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
66 : 4.7M High Temperature thermistor from Dyze Design * 66 : 4.7M High Temperature thermistor from Dyze Design
70 : the 100K thermistor found in the bq Hephestos 2 * 70 : the 100K thermistor found in the bq Hephestos 2
*
1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k. * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k.
(but gives greater accuracy and more stable PID) * (but gives greater accuracy and more stable PID)
51 : 100k thermistor - EPCOS (1k pullup) * 51 : 100k thermistor - EPCOS (1k pullup)
52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup) * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
*
1047 : Pt1000 with 4k7 pullup * 1047 : Pt1000 with 4k7 pullup
1010 : Pt1000 with 1k pullup (non standard) * 1010 : Pt1000 with 1k pullup (non standard)
147 : Pt100 with 4k7 pullup * 147 : Pt100 with 4k7 pullup
110 : Pt100 with 1k pullup (non standard) * 110 : Pt100 with 1k pullup (non standard)
*
Use these for Testing or Development purposes. NEVER for production machine. * Use these for Testing or Development purposes. NEVER for production machine.
998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 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. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
*
:{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" } * :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" }
*/ */
#define TEMP_SENSOR_0 1 #define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0 #define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0 #define TEMP_SENSOR_2 0
@ -302,36 +302,36 @@
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. #define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
//#define PID_DEBUG // Sends debug data to the serial port. //#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2] // Set/get with gcode: M301 E[extruder number, 0-2]
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
#define K1 0.95 //smoothing factor within the PID #define K1 0.95 //smoothing factor within the PID
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
// Ultimaker // Ultimaker
//#define DEFAULT_Kp 22.2 //#define DEFAULT_Kp 22.2
//#define DEFAULT_Ki 1.08 //#define DEFAULT_Ki 1.08
//#define DEFAULT_Kd 114 //#define DEFAULT_Kd 114
// MakerGear // MakerGear
//#define DEFAULT_Kp 7.0 //#define DEFAULT_Kp 7.0
//#define DEFAULT_Ki 0.1 //#define DEFAULT_Ki 0.1
//#define DEFAULT_Kd 12 //#define DEFAULT_Kd 12
// Mendel Parts V9 on 12V // Mendel Parts V9 on 12V
//#define DEFAULT_Kp 63.0 //#define DEFAULT_Kp 63.0
//#define DEFAULT_Ki 2.25 //#define DEFAULT_Ki 2.25
//#define DEFAULT_Kd 440 //#define DEFAULT_Kd 440
//E3D with 30MM fan //E3D with 30MM fan
#define DEFAULT_Kp 24.77 #define DEFAULT_Kp 24.77
#define DEFAULT_Ki 1.84 #define DEFAULT_Ki 1.84
#define DEFAULT_Kd 83.61 #define DEFAULT_Kd 83.61
#endif // PIDTEMP #endif // PIDTEMP
@ -359,26 +359,26 @@
#if ENABLED(PIDTEMPBED) #if ENABLED(PIDTEMPBED)
//#define PID_BED_DEBUG // Sends debug data to the serial port. //#define PID_BED_DEBUG // Sends debug data to the serial port.
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
//#define DEFAULT_bedKp 10.00 //#define DEFAULT_bedKp 10.00
//#define DEFAULT_bedKi .023 //#define DEFAULT_bedKi .023
//#define DEFAULT_bedKd 305.4 //#define DEFAULT_bedKd 305.4
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune //from pidautotune
//#define DEFAULT_bedKp 97.1 //#define DEFAULT_bedKp 97.1
//#define DEFAULT_bedKi 1.41 //#define DEFAULT_bedKi 1.41
//#define DEFAULT_bedKd 1675.16 //#define DEFAULT_bedKd 1675.16
//D-force //D-force
#define DEFAULT_bedKp 22.97 #define DEFAULT_bedKp 22.97
#define DEFAULT_bedKi 3.76 #define DEFAULT_bedKi 3.76
#define DEFAULT_bedKd 29.2 #define DEFAULT_bedKd 29.2
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED #endif // PIDTEMPBED
// @section extruder // @section extruder
@ -400,16 +400,16 @@
//=========================================================================== //===========================================================================
/** /**
Thermal Protection protects your printer from damage and fire if a * Thermal Protection protects your printer from damage and fire if a
thermistor falls out or temperature sensors fail in any way. * thermistor falls out or temperature sensors fail in any way.
*
The issue: If a thermistor falls out or a temperature sensor fails, * The issue: If a thermistor falls out or a temperature sensor fails,
Marlin can no longer sense the actual temperature. Since a disconnected * Marlin can no longer sense the actual temperature. Since a disconnected
thermistor reads as a low temperature, the firmware will keep the heater on. * thermistor reads as a low temperature, the firmware will keep the heater on.
*
If you get "Thermal Runaway" or "Heating failed" errors the * If you get "Thermal Runaway" or "Heating failed" errors the
details can be tuned in Configuration_adv.h * details can be tuned in Configuration_adv.h
*/ */
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
@ -437,42 +437,42 @@
#if ENABLED(DELTA) #if ENABLED(DELTA)
// Make delta curves from many straight lines (linear interpolation). // Make delta curves from many straight lines (linear interpolation).
// This is a trade-off between visible corners (not enough segments) // This is a trade-off between visible corners (not enough segments)
// and processor overload (too many expensive sqrt calls). // and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 160 #define DELTA_SEGMENTS_PER_SECOND 160
// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
// Center-to-center distance of the holes in the diagonal push rods. // Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 218.0 // mm #define DELTA_DIAGONAL_ROD 218.0 // mm
// Horizontal offset from middle of printer to smooth rod center. // Horizontal offset from middle of printer to smooth rod center.
#define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
// Horizontal offset of the universal joints on the end effector. // Horizontal offset of the universal joints on the end effector.
#define DELTA_EFFECTOR_OFFSET 24.0 // mm #define DELTA_EFFECTOR_OFFSET 24.0 // mm
// Horizontal offset of the universal joints on the carriages. // Horizontal offset of the universal joints on the carriages.
#define DELTA_CARRIAGE_OFFSET 22.0 // mm #define DELTA_CARRIAGE_OFFSET 22.0 // mm
// Horizontal distance bridged by diagonal push rods when effector is centered. // Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET))
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 85.0 #define DELTA_PRINTABLE_RADIUS 85.0
// Delta calibration menu // Delta calibration menu
// uncomment to add three points calibration menu option. // uncomment to add three points calibration menu option.
// See http://minow.blogspot.com/index.html#4918805519571907051 // See http://minow.blogspot.com/index.html#4918805519571907051
// If needed, adjust the X, Y, Z calibration coordinates // If needed, adjust the X, Y, Z calibration coordinates
// in ultralcd.cpp@lcd_delta_calibrate_menu() // in ultralcd.cpp@lcd_delta_calibrate_menu()
//#define DELTA_CALIBRATION_MENU //#define DELTA_CALIBRATION_MENU
// After homing move down to a height where XY movement is unconstrained // After homing move down to a height where XY movement is unconstrained
//#define DELTA_HOME_TO_SAFE_ZONE //#define DELTA_HOME_TO_SAFE_ZONE
//#define DELTA_ENDSTOP_ADJ { 0, 0, 0 } //#define DELTA_ENDSTOP_ADJ { 0, 0, 0 }
#endif #endif
@ -499,14 +499,14 @@
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
#if DISABLED(ENDSTOPPULLUPS) #if DISABLED(ENDSTOPPULLUPS)
// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
//#define ENDSTOPPULLUP_XMAX //#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX //#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX //#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_XMIN //#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN //#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN //#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE //#define ENDSTOPPULLUP_ZMIN_PROBE
#endif #endif
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
@ -516,7 +516,7 @@
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
// Enable this feature if all enabled endstop pins are interrupt-capable. // Enable this feature if all enabled endstop pins are interrupt-capable.
// This will remove the need to poll the interrupt pins, saving many CPU cycles. // This will remove the need to poll the interrupt pins, saving many CPU cycles.
@ -529,57 +529,58 @@
// delta speeds must be the same on xyz // delta speeds must be the same on xyz
/** /**
Default Settings * Default Settings
*
These settings can be reset by M502 * These settings can be reset by M502
*
You can set distinct factors for each E stepper, if needed. * You can set distinct factors for each E stepper, if needed.
If fewer factors are given, the last will apply to the rest. * If fewer factors are given, the last will apply to the rest.
*
Note that if EEPROM is enabled, saved values will override these. * Note that if EEPROM is enabled, saved values will override these.
*/ */
/** /**
Default Axis Steps Per Unit (steps/mm) * Default Axis Steps Per Unit (steps/mm)
Override with M92 * Override with M92
X, Y, Z, E0 [, E1[, E2[, E3]]] * X, Y, Z, E0 [, E1[, E2[, E3]]]
*/ */
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 100, 90 } // default steps per unit for Kossel (GT2, 20 tooth) #define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 100, 90 } // default steps per unit for Kossel (GT2, 20 tooth)
/** /**
Default Max Feed Rate (mm/s) * Default Max Feed Rate (mm/s)
Override with M203 * Override with M203
X, Y, Z, E0 [, E1[, E2[, E3]]] * X, Y, Z, E0 [, E1[, E2[, E3]]]
*/ */
#define DEFAULT_MAX_FEEDRATE { 200, 200, 200, 200 } #define DEFAULT_MAX_FEEDRATE { 200, 200, 200, 200 }
/** /**
Default Max Acceleration (change/s) change = mm/s * Default Max Acceleration (change/s) change = mm/s
(Maximum start speed for accelerated moves) * (Maximum start speed for accelerated moves)
Override with M201 * Override with M201
X, Y, Z, E0 [, E1[, E2[, E3]]] * X, Y, Z, E0 [, E1[, E2[, E3]]]
*/ */
#define DEFAULT_MAX_ACCELERATION { 4000, 4000, 4000, 4000 } #define DEFAULT_MAX_ACCELERATION { 4000, 4000, 4000, 4000 }
/** /**
Default Acceleration (change/s) change = mm/s * Default Acceleration (change/s) change = mm/s
Override with M204 * Override with M204
*
M204 P Acceleration * M204 P Acceleration
M204 R Retract Acceleration * M204 R Retract Acceleration
M204 T Travel Acceleration * M204 T Travel Acceleration
*/ */
#define DEFAULT_ACCELERATION 2500 // X, Y, Z and E acceleration for printing moves #define DEFAULT_ACCELERATION 2500 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #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_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
/** /**
Default Jerk (mm/s) * Default Jerk (mm/s)
* Override with M205 X Y Z E
"Jerk" specifies the minimum speed change that requires acceleration. *
When changing speed and direction, if the difference is less than the * "Jerk" specifies the minimum speed change that requires acceleration.
value set here, it may happen instantaneously. * When changing speed and direction, if the difference is less than the
*/ * value set here, it may happen instantaneously.
*/
#define DEFAULT_XJERK 20.0 #define DEFAULT_XJERK 20.0
#define DEFAULT_YJERK DEFAULT_XJERK #define DEFAULT_YJERK DEFAULT_XJERK
#define DEFAULT_ZJERK DEFAULT_YJERK // Must be same as XY for delta #define DEFAULT_ZJERK DEFAULT_YJERK // Must be same as XY for delta
@ -654,46 +655,46 @@
//#define Z_PROBE_ALLEN_KEY //#define Z_PROBE_ALLEN_KEY
#if ENABLED(Z_PROBE_ALLEN_KEY) #if ENABLED(Z_PROBE_ALLEN_KEY)
// 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
// if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
// Kossel Mini // Kossel Mini
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10) #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10)
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
#define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20 #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20
// Move the probe into position // Move the probe into position
#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0
#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
// Move the nozzle down further to push the probe into retracted position. // Move the nozzle down further to push the probe into retracted position.
#define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X
#define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y
#define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH) #define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH)
#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10) #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10)
// Raise things back up slightly so we don't bump into anything // Raise things back up slightly so we don't bump into anything
#define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X #define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X
#define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y #define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y
#define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH) #define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH)
#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2) #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2)
#define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
#define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
#define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
#define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
#endif // Z_PROBE_ALLEN_KEY #endif // Z_PROBE_ALLEN_KEY
@ -744,19 +745,19 @@
#define Z_MIN_PROBE_REPEATABILITY_TEST #define Z_MIN_PROBE_REPEATABILITY_TEST
/** /**
Z probes require clearance when deploying, stowing, and moving between * Z probes require clearance when deploying, stowing, and moving between
probe points to avoid hitting the bed and other hardware. * probe points to avoid hitting the bed and other hardware.
Servo-mounted probes require extra space for the arm to rotate. * Servo-mounted probes require extra space for the arm to rotate.
Inductive probes need space to keep from triggering early. * Inductive probes need space to keep from triggering early.
*
Use these settings to specify the distance (mm) to raise the probe (or * Use these settings to specify the distance (mm) to raise the probe (or
lower the bed). The values set here apply over and above any (negative) * lower the bed). The values set here apply over and above any (negative)
probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD. * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
Only integer values >= 1 are valid here. * Only integer values >= 1 are valid here.
*
Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * 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. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/ */
#define Z_CLEARANCE_DEPLOY_PROBE 50 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_DEPLOY_PROBE 50 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
@ -803,8 +804,8 @@
// @section homing // @section homing
#define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... #define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
// Be sure you have this distance over your Z_MAX_POS in case. // Be sure you have this distance over your Z_MAX_POS in case.
// ENDSTOP SETTINGS: // ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN // Sets direction of endstops when homing; 1=MAX, -1=MIN
@ -826,17 +827,19 @@
#define Y_MAX_POS DELTA_PRINTABLE_RADIUS #define Y_MAX_POS DELTA_PRINTABLE_RADIUS
#define Z_MAX_POS MANUAL_Z_HOME_POS #define Z_MAX_POS MANUAL_Z_HOME_POS
//=========================================================================== /**
//========================= Filament Runout Sensor ========================== * Filament Runout Sensor
//=========================================================================== * A mechanical or opto endstop is used to check for the presence of filament.
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament *
// RAMPS-based boards use SERVO3_PIN. For other boards you may need to define FIL_RUNOUT_PIN. * RAMPS-based boards use SERVO3_PIN.
// It is assumed that when logic high = filament available * For other boards you may need to define FIL_RUNOUT_PIN.
// when logic low = filament ran out * By default the firmware assumes HIGH = has filament, LOW = ran out
*/
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR) #if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor. #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
#define FILAMENT_RUNOUT_SCRIPT "M600" #define FILAMENT_RUNOUT_SCRIPT "M600"
#endif #endif
//=========================================================================== //===========================================================================
@ -847,23 +850,23 @@
//#define MESH_BED_LEVELING // Enable mesh bed leveling. //#define MESH_BED_LEVELING // Enable mesh bed leveling.
#if ENABLED(MESH_BED_LEVELING) #if ENABLED(MESH_BED_LEVELING)
#define MESH_INSET 10 // Mesh inset margin on print area #define MESH_INSET 10 // Mesh inset margin on print area
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited.
#define MESH_NUM_Y_POINTS 3 #define MESH_NUM_Y_POINTS 3
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0.
#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0]
#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling.
#if ENABLED(MANUAL_BED_LEVELING) #if ENABLED(MANUAL_BED_LEVELING)
#define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis.
#endif // MANUAL_BED_LEVELING #endif // MANUAL_BED_LEVELING
// Gradually reduce leveling correction until a set height is reached, // Gradually reduce leveling correction until a set height is reached,
// at which point movement will be level to the machine's XY plane. // at which point movement will be level to the machine's XY plane.
// The height can be set with M420 Z<height> // The height can be set with M420 Z<height>
#define ENABLE_LEVELING_FADE_HEIGHT #define ENABLE_LEVELING_FADE_HEIGHT
#endif // MESH_BED_LEVELING #endif // MESH_BED_LEVELING
@ -873,93 +876,92 @@
// @section bedlevel // @section bedlevel
/** /**
Select one form of Auto Bed Leveling below. * Select one form of Auto Bed Leveling below.
*
If you're also using the Probe for Z Homing, it's * If you're also using the Probe for Z Homing, it's
highly recommended to enable Z_SAFE_HOMING also! * highly recommended to enable Z_SAFE_HOMING also!
*
- 3POINT * - 3POINT
Probe 3 arbitrary points on the bed (that aren't collinear) * Probe 3 arbitrary points on the bed (that aren't collinear)
You specify the XY coordinates of all 3 points. * You specify the XY coordinates of all 3 points.
The result is a single tilted plane. Best for a flat bed. * The result is a single tilted plane. Best for a flat bed.
*
- LINEAR * - LINEAR
Probe several points in a grid. * Probe several points in a grid.
You specify the rectangle and the density of sample points. * You specify the rectangle and the density of sample points.
The result is a single tilted plane. Best for a flat bed. * The result is a single tilted plane. Best for a flat bed.
*
- BILINEAR * - BILINEAR
Probe several points in a grid. * Probe several points in a grid.
You specify the rectangle and the density of sample points. * You specify the rectangle and the density of sample points.
The result is a mesh, best for large or uneven beds. * The result is a mesh, best for large or uneven beds.
*/ */
//#define AUTO_BED_LEVELING_3POINT // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. //#define AUTO_BED_LEVELING_3POINT // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling.
//#define AUTO_BED_LEVELING_LINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. //#define AUTO_BED_LEVELING_LINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling.
#define AUTO_BED_LEVELING_BILINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling. #define AUTO_BED_LEVELING_BILINEAR // Only AUTO_BED_LEVELING_BILINEAR is supported for DELTA bed leveling.
/** /**
Enable detailed logging of G28, G29, M48, etc. * Enable detailed logging of G28, G29, M48, etc.
Turn on with the command 'M111 S32'. * Turn on with the command 'M111 S32'.
NOTE: Requires a lot of PROGMEM! * NOTE: Requires a lot of PROGMEM!
*/ */
//#define DEBUG_LEVELING_FEATURE //#define DEBUG_LEVELING_FEATURE
#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) #if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension. // Set the number of grid points per dimension.
// Works best with 5 or more points in each dimension.
#define ABL_GRID_MAX_POINTS_X 9 #define ABL_GRID_MAX_POINTS_X 9
#define ABL_GRID_MAX_POINTS_Y ABL_GRID_MAX_POINTS_X #define ABL_GRID_MAX_POINTS_Y ABL_GRID_MAX_POINTS_X
// Set the boundaries for probing (where the probe can reach). // Set the boundaries for probing (where the probe can reach).
#define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 15) #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 15)
#define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS)
#define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS
#define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS)
#define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS
// The Z probe minimum outer margin (to validate G29 parameters). // The Z probe minimum outer margin (to validate G29 parameters).
#define MIN_PROBE_EDGE 10 #define MIN_PROBE_EDGE 10
// Probe along the Y axis, advancing X after each column // Probe along the Y axis, advancing X after each column
//#define PROBE_Y_FIRST //#define PROBE_Y_FIRST
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Gradually reduce leveling correction until a set height is reached, // Gradually reduce leveling correction until a set height is reached,
// at which point movement will be level to the machine's XY plane. // at which point movement will be level to the machine's XY plane.
// The height can be set with M420 Z<height> // The height can be set with M420 Z<height>
#define ENABLE_LEVELING_FADE_HEIGHT #define ENABLE_LEVELING_FADE_HEIGHT
// //
// Experimental Subdivision of the grid by Catmull-Rom method. // Experimental Subdivision of the grid by Catmull-Rom method.
// Synthesizes intermediate points to produce a more detailed mesh. // Synthesizes intermediate points to produce a more detailed mesh.
// //
//#define ABL_BILINEAR_SUBDIVISION //#define ABL_BILINEAR_SUBDIVISION
#if ENABLED(ABL_BILINEAR_SUBDIVISION) #if ENABLED(ABL_BILINEAR_SUBDIVISION)
// Number of subdivisions between probe points // Number of subdivisions between probe points
#define BILINEAR_SUBDIVISIONS 3 #define BILINEAR_SUBDIVISIONS 3
#endif #endif
#endif #endif
#elif ENABLED(AUTO_BED_LEVELING_3POINT) #elif ENABLED(AUTO_BED_LEVELING_3POINT)
// 3 arbitrary points to probe. // 3 arbitrary points to probe.
// A simple cross-product is used to estimate the plane of the bed. // A simple cross-product is used to estimate the plane of the bed.
#define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_X 15
#define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_1_Y 180
#define ABL_PROBE_PT_2_X 15 #define ABL_PROBE_PT_2_X 15
#define ABL_PROBE_PT_2_Y 20 #define ABL_PROBE_PT_2_Y 20
#define ABL_PROBE_PT_3_X 170 #define ABL_PROBE_PT_3_X 170
#define ABL_PROBE_PT_3_Y 20 #define ABL_PROBE_PT_3_Y 20
#endif #endif
/** /**
Commands to execute at the end of G29 probing. * Commands to execute at the end of G29 probing.
Useful to retract or move the Z probe out of the way. * Useful to retract or move the Z probe out of the way.
*/ */
//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
@ -982,11 +984,11 @@
// - If stepper drivers time out, it will need X and Y homing again before Z homing. // - If stepper drivers time out, it will need X and Y homing again before Z homing.
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
// - Prevent Z homing when the Z probe is outside bed area. // - Prevent Z homing when the Z probe is outside bed area.
//#define Z_SAFE_HOMING // To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. //#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING) #if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28).
#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28).
#endif #endif
// Delta only homes to Z // Delta only homes to Z
@ -1009,8 +1011,8 @@
#define EEPROM_SETTINGS #define EEPROM_SETTINGS
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
// To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
#define EEPROM_CHITCHAT // Please keep turned on if you can. #define EEPROM_CHITCHAT // Please keep turned on if you can.
#endif #endif
// //
@ -1042,11 +1044,11 @@
// Preheat Constants // Preheat Constants
#define PREHEAT_1_TEMP_HOTEND 180 #define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 70 #define PREHEAT_1_TEMP_BED 70
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 100 #define PREHEAT_2_TEMP_BED 100
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
// //
// Nozzle Park -- EXPERIMENTAL // Nozzle Park -- EXPERIMENTAL
@ -1068,8 +1070,8 @@
//#define NOZZLE_PARK_FEATURE //#define NOZZLE_PARK_FEATURE
#if ENABLED(NOZZLE_PARK_FEATURE) #if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z } // Specify a park position as { X, Y, Z }
#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
#endif #endif
// //
@ -1082,13 +1084,13 @@
// //
// Available list of patterns: // Available list of patterns:
// P0: This is the default pattern, this process requires a sponge type // P0: This is the default pattern, this process requires a sponge type
// material at a fixed bed location, the cleaning process is based on // material at a fixed bed location. S defines "strokes" i.e.
// "strokes" i.e. back-and-forth movements between the starting and end // back-and-forth movements between the starting and end points.
// points.
// //
// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" // P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
// defines the number of zig-zag triangles to be done. "S" defines the // defines the number of zig-zag triangles to be done. "S" defines the
// number of strokes aka one back-and-forth movement. As an example // number of strokes aka one back-and-forth movement. Zig-zags will
// be performed in whichever dimension is smallest. As an example,
// sending "G12 P1 S1 T3" will execute: // sending "G12 P1 S1 T3" will execute:
// //
// -- // --
@ -1101,6 +1103,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1109,15 +1115,25 @@
//#define NOZZLE_CLEAN_FEATURE //#define NOZZLE_CLEAN_FEATURE
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Specify positions as { X, Y, Z } // Default number of triangles
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_TRIANGLES 3
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Moves the nozzle to the initial position // Specify positions as { X, Y, Z }
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK
#endif #endif
// //
@ -1201,7 +1217,7 @@
// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! // IMPORTANT NOTE: The U8glib library is required for Full Graphic Display!
// https://github.com/olikraus/U8glib_Arduino // https://github.com/olikraus/U8glib_Arduino
// //
#define ULTRA_LCD // Character based //#define ULTRA_LCD // Character based
//#define DOGLCD // Full graphics display //#define DOGLCD // Full graphics display
// //
@ -1244,14 +1260,14 @@
//#define ENCODER_STEPS_PER_MENU_ITEM 5 //#define ENCODER_STEPS_PER_MENU_ITEM 5
/** /**
Encoder Direction Options * Encoder Direction Options
*
Test your encoder's behavior first with both options disabled. * Test your encoder's behavior first with both options disabled.
*
Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION.
Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION.
Reversed Value Editing only? Enable BOTH options. * Reversed Value Editing only? Enable BOTH options.
*/ */
// //
// This option reverses the encoder direction everywhere // This option reverses the encoder direction everywhere
@ -1450,8 +1466,8 @@
// //
//#define SAV_3DGLCD //#define SAV_3DGLCD
#if ENABLED(SAV_3DGLCD) #if ENABLED(SAV_3DGLCD)
//#define U8GLIB_SSD1306 //#define U8GLIB_SSD1306
#define U8GLIB_SH1106 #define U8GLIB_SH1106
#endif #endif
// //
@ -1503,14 +1519,14 @@
// Support for an RGB LED using 3 separate pins with optional PWM // Support for an RGB LED using 3 separate pins with optional PWM
//#define RGB_LED //#define RGB_LED
#if ENABLED(RGB_LED) #if ENABLED(RGB_LED)
#define RGB_LED_R_PIN 34 #define RGB_LED_R_PIN 34
#define RGB_LED_G_PIN 43 #define RGB_LED_G_PIN 43
#define RGB_LED_B_PIN 35 #define RGB_LED_B_PIN 35
#endif #endif
/*********************************************************************\ /*********************************************************************\
R/C SERVO support * R/C SERVO support
Sponsored by TrinityLabs, Reworked by codexmas * Sponsored by TrinityLabs, Reworked by codexmas
**********************************************************************/ **********************************************************************/
// Number of servos // Number of servos
@ -1522,7 +1538,7 @@
// //
//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. // Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
// 300ms is a good value but you can try less delay. // 300ms is a good value but you can try less delay.
// If the servo can't reach the requested position, increase it. // If the servo can't reach the requested position, increase it.
#define SERVO_DELAY 300 #define SERVO_DELAY 300
@ -1533,15 +1549,15 @@
//#define DEACTIVATE_SERVOS_AFTER_MOVE //#define DEACTIVATE_SERVOS_AFTER_MOVE
/**********************************************************************\ /**********************************************************************\
Support for a filament diameter sensor * Support for a filament diameter sensor
Also allows adjustment of diameter at print time (vs at slicing) * Also allows adjustment of diameter at print time (vs at slicing)
Single extruder only at this point (extruder 0) * Single extruder only at this point (extruder 0)
*
Motherboards * Motherboards
34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
301 - Rambo - uses Analog input 3 * 301 - Rambo - uses Analog input 3
Note may require analog pins to be defined for different motherboards * Note may require analog pins to be defined for different motherboards
**********************************************************************/ **********************************************************************/
// Uncomment below to enable // Uncomment below to enable
//#define FILAMENT_WIDTH_SENSOR //#define FILAMENT_WIDTH_SENSOR
@ -1549,17 +1565,17 @@
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation
#if ENABLED(FILAMENT_WIDTH_SENSOR) #if ENABLED(FILAMENT_WIDTH_SENSOR)
#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2)
#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel
#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm
#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm
#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM)
#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec.
//#define FILAMENT_LCD_DISPLAY //#define FILAMENT_LCD_DISPLAY
#endif #endif
#endif // CONFIGURATION_H #endif // CONFIGURATION_H

View file

@ -217,13 +217,12 @@
* Multiple extruders can be assigned to the same pin in which case * 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. * the fan will turn on when any selected extruder is above the threshold.
*/ */
#define E0_AUTO_FAN_PIN -1 #define E0_AUTO_FAN_PIN -1
#define E1_AUTO_FAN_PIN -1 #define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
// Define a pin to turn case light on/off // Define a pin to turn case light on/off
//#define CASE_LIGHT_PIN 4 //#define CASE_LIGHT_PIN 4
@ -309,13 +308,13 @@
// Remember: you should set the second extruder x-offset to 0 in your slicer. // Remember: you should set the second extruder x-offset to 0 in your slicer.
// There are a few selectable movement modes for dual x-carriages using M605 S<mode> // There are a few selectable movement modes for dual x-carriages using M605 S<mode>
// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results // Mode 0 (DXC_FULL_CONTROL_MODE): Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
// as long as it supports dual x-carriages. (M605 S0) // as long as it supports dual x-carriages. (M605 S0)
// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so // Mode 1 (DXC_AUTO_PARK_MODE) : Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
// that additional slicer support is not required. (M605 S1) // that additional slicer support is not required. (M605 S1)
// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all // Mode 2 (DXC_DUPLICATION_MODE) : Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
// This is the default power-up mode which can be later using M605. // This is the default power-up mode which can be later using M605.
#define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_FULL_CONTROL_MODE #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_FULL_CONTROL_MODE
@ -428,6 +427,9 @@
// On the Info Screen, display XY with one decimal place when possible // On the Info Screen, display XY with one decimal place when possible
//#define LCD_DECIMAL_SMALL_XY //#define LCD_DECIMAL_SMALL_XY
// The timeout (in ms) to return to the status screen from sub-menus
//#define LCD_TIMEOUT_TO_STATUS 15000
#if ENABLED(SDSUPPORT) #if ENABLED(SDSUPPORT)
// Some RAMPS and other boards don't detect when an SD card is inserted. You can work // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@ -445,6 +447,42 @@
// using: // using:
//#define MENU_ADDAUTOSTART //#define MENU_ADDAUTOSTART
/**
* Sort SD file listings in alphabetical order.
*
* With this option enabled, items on SD cards will be sorted
* by name for easier navigation.
*
* By default...
*
* - Use the slowest -but safest- method for sorting.
* - Folders are sorted to the top.
* - The sort key is statically allocated.
* - No added G-code (M34) support.
* - 40 item sorting limit. (Items after the first 40 are unsorted.)
*
* SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the
* compiler to calculate the worst-case usage and throw an error if the SRAM
* limit is exceeded.
*
* - SDSORT_USES_RAM provides faster sorting via a static directory buffer.
* - SDSORT_USES_STACK does the same, but uses a local stack-based buffer.
* - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!)
* - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!)
*/
//#define SDCARD_SORT_ALPHA
// SD Card Sorting options
#if ENABLED(SDCARD_SORT_ALPHA)
#define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256).
#define FOLDER_SORTING -1 // -1=above 0=none 1=below
#define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code.
#define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
#define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
#define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
#define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use!
#endif
// Show a progress bar on HD44780 LCDs for SD printing // Show a progress bar on HD44780 LCDs for SD printing
//#define LCD_PROGRESS_BAR //#define LCD_PROGRESS_BAR
@ -457,6 +495,8 @@
#define PROGRESS_MSG_EXPIRE 0 #define PROGRESS_MSG_EXPIRE 0
// Enable this to show messages for MSG_TIME then hide them // Enable this to show messages for MSG_TIME then hide them
//#define PROGRESS_MSG_ONCE //#define PROGRESS_MSG_ONCE
// Add a menu item to test the progress bar:
//#define LCD_PROGRESS_BAR_TEST
#endif #endif
// This allows hosts to request long names for files and folders with M33 // This allows hosts to request long names for files and folders with M33
@ -469,8 +509,25 @@
#endif // SDSUPPORT #endif // SDSUPPORT
// Some additional options are available for graphical displays: /**
* Additional options for Graphical Displays
*
* Use the optimizations here to improve printing performance,
* which can be adversely affected by graphical display drawing,
* especially when doing several short moves, and when printing
* on DELTA and SCARA machines.
*
* Some of these options may result in the display lagging behind
* controller events, as there is a trade-off between reliable
* printing performance versus fast display updates.
*/
#if ENABLED(DOGLCD) #if ENABLED(DOGLCD)
// Enable to save many cycles by drawing a hollow frame on the Info Screen
#define XYZ_HOLLOW_FRAME
// Enable to save many cycles by drawing a hollow frame on Menu Screens
#define MENU_HOLLOW_FRAME
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM. // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
//#define USE_BIG_EDIT_FONT //#define USE_BIG_EDIT_FONT
@ -510,36 +567,6 @@
#define BABYSTEP_MULTIPLICATOR 1 //faster movements #define BABYSTEP_MULTIPLICATOR 1 //faster movements
#endif #endif
//
// Ensure Smooth Moves
//
// Enable this option to prevent the machine from stuttering when printing multiple short segments.
// This feature uses two strategies to eliminate stuttering:
//
// 1. During short segments a Graphical LCD update may take so much time that the planner buffer gets
// completely drained. When this happens pauses are introduced between short segments, and print moves
// will become jerky until a longer segment provides enough time for the buffer to be filled again.
// This jerkiness negatively affects print quality. The ENSURE_SMOOTH_MOVES option addresses the issue
// by pausing the LCD until there's enough time to safely update.
//
// NOTE: This will cause the Info Screen to lag and controller buttons may become unresponsive.
// Enable ALWAYS_ALLOW_MENU to keep the controller responsive.
//
// 2. No block is allowed to take less time than MIN_BLOCK_TIME. That's the time it takes in the main
// loop to add a new block to the buffer, check temperatures, etc., including all blocked time due to
// interrupts (without LCD update). By enforcing a minimum time-per-move, the buffer is prevented from
// draining.
//
#define ENSURE_SMOOTH_MOVES
#if ENABLED(ENSURE_SMOOTH_MOVES)
//#define ALWAYS_ALLOW_MENU // If enabled, the menu will always be responsive.
// WARNING: Menu navigation during short moves may cause stuttering!
#define LCD_UPDATE_THRESHOLD 135 // (ms) Minimum duration for the current segment to allow an LCD update.
// Default value is good for graphical LCDs (e.g., REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER).
// You may try to lower this value until you printer starts stuttering again as if ENSURE_SMOOTH_MOVES is disabled.
#define MIN_BLOCK_TIME 6 // (ms) Minimum duration of a single block. You shouldn't need to modify this.
#endif
// @section extruder // @section extruder
// extruder advance constant (s2/mm3) // extruder advance constant (s2/mm3)
@ -561,19 +588,37 @@
* *
* Assumption: advance = k * (delta velocity) * Assumption: advance = k * (delta velocity)
* K=0 means advance disabled. * K=0 means advance disabled.
* To get a rough start value for calibration, measure your "free filament length" * See Marlin documentation for calibration instructions.
* between the hobbed bolt and the nozzle (in cm). Use the formula below that fits
* your setup, where L is the "free filament length":
*
* Filament diameter | 1.75mm | 3.0mm |
* ----------------------------|-----------|------------|
* Stiff filament (PLA) | K=47*L/10 | K=139*L/10 |
* Softer filament (ABS, nGen) | K=88*L/10 | K=260*L/10 |
*/ */
//#define LIN_ADVANCE //#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE) #if ENABLED(LIN_ADVANCE)
#define LIN_ADVANCE_K 75 #define LIN_ADVANCE_K 75
/**
* Some Slicers produce Gcode with randomly jumping extrusion widths occasionally.
* For example within a 0.4mm perimeter it may produce a single segment of 0.05mm width.
* While this is harmless for normal printing (the fluid nature of the filament will
* close this very, very tiny gap), it throws off the LIN_ADVANCE pressure adaption.
*
* For this case LIN_ADVANCE_E_D_RATIO can be used to set the extrusion:distance ratio
* to a fixed value. Note that using a fixed ratio will lead to wrong nozzle pressures
* if the slicer is using variable widths or layer heights within one print!
*
* This option sets the default E:D ratio at startup. Use `M905` to override this value.
*
* Example: `M905 W0.4 H0.2 D1.75`, where:
* - W is the extrusion width in mm
* - H is the layer height in mm
* - D is the filament diameter in mm
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
* Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
// Example: 0.4 * 0.2 / ((1.75 / 2) ^ 2 * PI) = 0.033260135
#endif #endif
// @section leveling // @section leveling
@ -680,33 +725,42 @@
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
#endif #endif
// Add support for experimental filament exchange support M600; requires display /**
#if ENABLED(ULTIPANEL) * Filament Change
// #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) * Experimental filament change support.
#if ENABLED(FILAMENT_CHANGE_FEATURE) * Adds the GCode M600 for initiating filament change.
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend *
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend * Requires an LCD display.
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) */
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) //#define FILAMENT_CHANGE_FEATURE
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm #if ENABLED(FILAMENT_CHANGE_FEATURE)
// It is a short retract used immediately after print interrupt before move to filament exchange position #define FILAMENT_CHANGE_X_POS 3 // X position of hotend
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
// Longer length for bowden printers to unload filament from whole bowden tube, #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
// shorter lenght for printers without bowden to unload filament from extruder only, #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
// 0 to disable unloading for manual unloading #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm // It is a short retract used immediately after print interrupt before move to filament exchange position
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
// Short or zero length for printers without bowden where loading is not used #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
#define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast // Longer length for bowden printers to unload filament from whole bowden tube,
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, // shorter length for printers without bowden to unload filament from extruder only,
// 0 to disable for manual extrusion // 0 to disable unloading for manual unloading
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
// or until outcoming filament color is not clear for filament color change #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
#endif // Short or zero length for printers without bowden where loading is not used
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
// 0 to disable for manual extrusion
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
// or until outcoming filament color is not clear for filament color change
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L // Turn off nozzle if user doesn't change filament within this time limit in seconds
#define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5L // Number of alert beeps before printer goes quiet
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
// even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
#endif #endif
/******************************************************************************\ /******************************************************************************\
@ -1101,4 +1155,29 @@
*/ */
//#define EXTENDED_CAPABILITIES_REPORT //#define EXTENDED_CAPABILITIES_REPORT
/**
* Double-click the Encoder button on the Status Screen for Z Babystepping.
*/
//#define DOUBLECLICK_FOR_Z_BABYSTEPPING
#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
// Note: You may need to add extra time to mitigate controller latency.
/**
* Volumetric extrusion default state
* Activate to make volumetric extrusion the default method,
* with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter.
*
* M200 D0 to disable, M200 Dn to set a new diameter.
*/
//#define VOLUMETRIC_DEFAULT_ON
/**
* Enable this option for a leaner build of Marlin that removes all
* workspace offsets, simplifying coordinate transformations, leveling, etc.
*
* - M206 and M428 are disabled.
* - G92 will revert to its behavior from Marlin 1.0.
*/
//#define NO_WORKSPACE_OFFSETS
#endif // CONFIGURATION_ADV_H #endif // CONFIGURATION_ADV_H

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1087,6 +1087,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1097,7 +1101,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1105,6 +1109,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1090,6 +1090,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1100,7 +1104,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1108,6 +1112,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -100,7 +100,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1089,6 +1089,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1099,7 +1103,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1107,6 +1111,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -89,7 +89,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1093,6 +1093,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1103,7 +1107,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1111,6 +1115,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -1003,6 +1003,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1013,7 +1017,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1021,6 +1025,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

View file

@ -96,7 +96,7 @@
// //
// Marlin now allow you to have a vendor boot image to be displayed on machine // Marlin now allow you to have a vendor boot image to be displayed on machine
// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
// custom boot image and them the default Marlin boot image is shown. // custom boot image and then the default Marlin boot image is shown.
// //
// We suggest for you to take advantage of this new feature and keep the Marlin // We suggest for you to take advantage of this new feature and keep the Marlin
// boot image unmodified. For an example have a look at the bq Hephestos 2 // boot image unmodified. For an example have a look at the bq Hephestos 2
@ -996,6 +996,10 @@
// |________|_________|_________| // |________|_________|_________|
// T1 T2 T3 // T1 T2 T3
// //
// P2: This starts a circular pattern with circle with middle in
// NOZZLE_CLEAN_CIRCLE_MIDDLE radius of R and stroke count of S.
// Before starting the circle nozzle goes to NOZZLE_CLEAN_START_POINT.
//
// Caveats: End point Z should use the same value as Start point Z. // Caveats: End point Z should use the same value as Start point Z.
// //
// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments // Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
@ -1006,7 +1010,7 @@
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
// Default number of triangles // Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3 #define NOZZLE_CLEAN_TRIANGLES 3
@ -1014,6 +1018,13 @@
#define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
#define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)}
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
// Circular pattern circle fragments number
#define NOZZLE_CLEAN_CIRCLE_FN 10
// Middle point of circle
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Moves the nozzle to the initial position // Moves the nozzle to the initial position
#define NOZZLE_CLEAN_GOBACK #define NOZZLE_CLEAN_GOBACK
#endif #endif

236
Marlin/nozzle.cpp Normal file
View file

@ -0,0 +1,236 @@
#include "nozzle.h"
#include "Marlin.h"
#include "point_t.h"
/**
* @brief Stroke clean pattern
* @details Wipes the nozzle back and forth in a linear movement
*
* @param start point_t defining the starting point
* @param end point_t defining the ending point
* @param strokes number of strokes to execute
*/
void Nozzle::stroke(
__attribute__((unused)) point_t const &start,
__attribute__((unused)) point_t const &end,
__attribute__((unused)) uint8_t const &strokes
) {
#if ENABLED(NOZZLE_CLEAN_FEATURE)
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Store the current coords
point_t const initial = {
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
current_position[E_AXIS]
};
#endif // NOZZLE_CLEAN_GOBACK
// Move to the starting point
do_blocking_move_to_xy(start.x, start.y);
do_blocking_move_to_z(start.z);
// Start the stroke pattern
for (uint8_t i = 0; i < (strokes >>1); i++) {
do_blocking_move_to_xy(end.x, end.y);
do_blocking_move_to_xy(start.x, start.y);
}
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Move the nozzle to the initial point
do_blocking_move_to(initial.x, initial.y, initial.z);
#endif // NOZZLE_CLEAN_GOBACK
#endif // NOZZLE_CLEAN_FEATURE
}
/**
* @brief Zig-zag clean pattern
* @details Apply a zig-zag cleanning pattern
*
* @param start point_t defining the starting point
* @param end point_t defining the ending point
* @param strokes number of strokes to execute
* @param objects number of objects to create
*/
void Nozzle::zigzag(
__attribute__((unused)) point_t const &start,
__attribute__((unused)) point_t const &end,
__attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) uint8_t const &objects
) {
#if ENABLED(NOZZLE_CLEAN_FEATURE)
const float A = nozzle_clean_horizontal ? nozzle_clean_height : nozzle_clean_length, // [twice the] Amplitude
P = (nozzle_clean_horizontal ? nozzle_clean_length : nozzle_clean_height) / (objects << 1); // Period
// Don't allow impossible triangles
if (A <= 0.0f || P <= 0.0f ) return;
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Store the current coords
point_t const initial = {
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
current_position[E_AXIS]
};
#endif // NOZZLE_CLEAN_GOBACK
for (uint8_t j = 0; j < strokes; j++) {
for (uint8_t i = 0; i < (objects << 1); i++) {
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
do_blocking_move_to_xy(x, y);
if (i == 0) do_blocking_move_to_z(start.z);
}
for (int i = (objects << 1); i > -1; i--) {
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
do_blocking_move_to_xy(x, y);
}
}
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Move the nozzle to the initial point
do_blocking_move_to_z(initial.z);
do_blocking_move_to_xy(initial.x, initial.y);
#endif // NOZZLE_CLEAN_GOBACK
#endif // NOZZLE_CLEAN_FEATURE
}
/**
* @brief Circular clean pattern
* @details Apply a circular cleaning pattern
*
* @param start point_t defining the middle of circle
* @param strokes number of strokes to execute
* @param radius radius of circle
*/
void Nozzle::circle(
__attribute__((unused)) point_t const &start,
__attribute__((unused)) point_t const &middle,
__attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) float const &radius
) {
#if ENABLED(NOZZLE_CLEAN_FEATURE)
if (strokes == 0) return;
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Store the current coords
point_t const initial = {
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
current_position[E_AXIS]
};
#endif // NOZZLE_CLEAN_GOBACK
if (start.z <= current_position[Z_AXIS]) {
// Order of movement is pretty darn important here
do_blocking_move_to_xy(start.x, start.y);
do_blocking_move_to_z(start.z);
} else {
do_blocking_move_to_z(start.z);
do_blocking_move_to_xy(start.x, start.y);
}
float x, y;
for (uint8_t s = 0; s < strokes; s++) {
for (uint8_t i = 0; i < NOZZLE_CLEAN_CIRCLE_FN; i++) {
x = middle.x + sin((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius;
y = middle.y + cos((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius;
do_blocking_move_to_xy(x, y);
}
}
// Let's be safe
do_blocking_move_to_xy(start.x, start.y);
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Move the nozzle to the initial point
if (start.z <= initial.z) {
// As above order is important
do_blocking_move_to_z(initial.z);
do_blocking_move_to_xy(initial.x, initial.y);
} else {
do_blocking_move_to_xy(initial.x, initial.y);
do_blocking_move_to_z(initial.z);
}
#endif // NOZZLE_CLEAN_GOBACK
#endif // NOZZLE_CLEAN_FEATURE
}
/**
* @brief Clean the nozzle
* @details Starts the selected clean procedure pattern
*
* @param pattern one of the available patterns
* @param argument depends on the cleaning pattern
*/
void Nozzle::clean(
__attribute__((unused)) uint8_t const &pattern,
__attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) float const &radius,
__attribute__((unused)) uint8_t const &objects
) {
#if ENABLED(NOZZLE_CLEAN_FEATURE)
#if ENABLED(DELTA)
if (current_position[Z_AXIS] > delta_clip_start_height)
do_blocking_move_to_z(delta_clip_start_height);
#endif
switch (pattern) {
case 1:
Nozzle::zigzag(
NOZZLE_CLEAN_START_POINT,
NOZZLE_CLEAN_END_POINT, strokes, objects);
break;
case 2:
Nozzle::circle(
NOZZLE_CLEAN_START_POINT,
NOZZLE_CLEAN_CIRCLE_MIDDLE, strokes, radius);
break;
default:
Nozzle::stroke(
NOZZLE_CLEAN_START_POINT,
NOZZLE_CLEAN_END_POINT, strokes);
}
#endif // NOZZLE_CLEAN_FEATURE
}
void Nozzle::park(
__attribute__((unused)) uint8_t const &z_action
) {
#if ENABLED(NOZZLE_PARK_FEATURE)
float const z = current_position[Z_AXIS];
point_t const park = NOZZLE_PARK_POINT;
switch(z_action) {
case 1: // force Z-park height
do_blocking_move_to_z(park.z);
break;
case 2: // Raise by Z-park height
do_blocking_move_to_z(
(z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z);
break;
default: // Raise to Z-park height if lower
if (current_position[Z_AXIS] < park.z)
do_blocking_move_to_z(park.z);
}
do_blocking_move_to_xy(park.x, park.y);
#endif // NOZZLE_PARK_FEATURE
}

View file

@ -53,40 +53,11 @@ class Nozzle {
__attribute__((unused)) point_t const &start, __attribute__((unused)) point_t const &start,
__attribute__((unused)) point_t const &end, __attribute__((unused)) point_t const &end,
__attribute__((unused)) uint8_t const &strokes __attribute__((unused)) uint8_t const &strokes
) __attribute__((optimize ("Os"))) { ) __attribute__((optimize ("Os")));
#if ENABLED(NOZZLE_CLEAN_FEATURE)
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Store the current coords
point_t const initial = {
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
current_position[E_AXIS]
};
#endif // NOZZLE_CLEAN_GOBACK
// Move to the starting point
do_blocking_move_to_xy(start.x, start.y);
do_blocking_move_to_z(start.z);
// Start the stroke pattern
for (uint8_t i = 0; i < (strokes >>1); i++) {
do_blocking_move_to_xy(end.x, end.y);
do_blocking_move_to_xy(start.x, start.y);
}
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Move the nozzle to the initial point
do_blocking_move_to(initial.x, initial.y, initial.z);
#endif // NOZZLE_CLEAN_GOBACK
#endif // NOZZLE_CLEAN_FEATURE
}
/** /**
* @brief Zig-zag clean pattern * @brief Zig-zag clean pattern
* @details Apply a zig-zag cleanning pattern * @details Apply a zig-zag cleaning pattern
* *
* @param start point_t defining the starting point * @param start point_t defining the starting point
* @param end point_t defining the ending point * @param end point_t defining the ending point
@ -98,49 +69,22 @@ class Nozzle {
__attribute__((unused)) point_t const &end, __attribute__((unused)) point_t const &end,
__attribute__((unused)) uint8_t const &strokes, __attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) uint8_t const &objects __attribute__((unused)) uint8_t const &objects
) __attribute__((optimize ("Os"))) { ) __attribute__((optimize ("Os")));
#if ENABLED(NOZZLE_CLEAN_FEATURE)
float A = nozzle_clean_horizontal ? nozzle_clean_height : nozzle_clean_length; // [twice the] Amplitude
float P = ( nozzle_clean_horizontal ? nozzle_clean_length : nozzle_clean_height ) / (objects << 1); // Period
// Don't allow impossible triangles /**
if (A <= 0.0f || P <= 0.0f ) return; * @brief Circular clean pattern
* @details Apply a circular cleaning pattern
#if ENABLED(NOZZLE_CLEAN_GOBACK) *
// Store the current coords * @param start point_t defining the middle of circle
point_t const initial = { * @param strokes number of strokes to execute
current_position[X_AXIS], * @param radius radius of circle
current_position[Y_AXIS], */
current_position[Z_AXIS], static void circle(
current_position[E_AXIS] __attribute__((unused)) point_t const &start,
}; __attribute__((unused)) point_t const &middle,
#endif // NOZZLE_CLEAN_GOBACK __attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) float const &radius
for (uint8_t j = 0; j < strokes; j++) { ) __attribute__((optimize ("Os")));
for (uint8_t i = 0; i < (objects << 1); i++) {
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
do_blocking_move_to_xy(x, y);
if (i == 0) do_blocking_move_to_z(start.z);
}
for (int i = (objects << 1); i > -1; i--) {
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
do_blocking_move_to_xy(x, y);
}
}
#if ENABLED(NOZZLE_CLEAN_GOBACK)
// Move the nozzle to the initial point
do_blocking_move_to_z(initial.z);
do_blocking_move_to_xy(initial.x, initial.y);
#endif // NOZZLE_CLEAN_GOBACK
#endif // NOZZLE_CLEAN_FEATURE
}
public: public:
/** /**
@ -153,54 +97,13 @@ class Nozzle {
static void clean( static void clean(
__attribute__((unused)) uint8_t const &pattern, __attribute__((unused)) uint8_t const &pattern,
__attribute__((unused)) uint8_t const &strokes, __attribute__((unused)) uint8_t const &strokes,
__attribute__((unused)) float const &radius,
__attribute__((unused)) uint8_t const &objects = 0 __attribute__((unused)) uint8_t const &objects = 0
) __attribute__((optimize ("Os"))) { ) __attribute__((optimize ("Os")));
#if ENABLED(NOZZLE_CLEAN_FEATURE)
#if ENABLED(DELTA)
if (current_position[Z_AXIS] > delta_clip_start_height)
do_blocking_move_to_z(delta_clip_start_height);
#endif
switch (pattern) {
case 1:
Nozzle::zigzag(
NOZZLE_CLEAN_START_POINT,
NOZZLE_CLEAN_END_POINT, strokes, objects);
break;
default:
Nozzle::stroke(
NOZZLE_CLEAN_START_POINT,
NOZZLE_CLEAN_END_POINT, strokes);
}
#endif // NOZZLE_CLEAN_FEATURE
}
static void park( static void park(
__attribute__((unused)) uint8_t const &z_action __attribute__((unused)) uint8_t const &z_action
) __attribute__((optimize ("Os"))) { ) __attribute__((optimize ("Os")));
#if ENABLED(NOZZLE_PARK_FEATURE)
float const z = current_position[Z_AXIS];
point_t const park = NOZZLE_PARK_POINT;
switch(z_action) {
case 1: // force Z-park height
do_blocking_move_to_z(park.z);
break;
case 2: // Raise by Z-park height
do_blocking_move_to_z(
(z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z);
break;
default: // Raise to Z-park height if lower
if (current_position[Z_AXIS] < park.z)
do_blocking_move_to_z(park.z);
}
do_blocking_move_to_xy(park.x, park.y);
#endif // NOZZLE_PARK_FEATURE
}
}; };
#endif #endif