@ -66,54 +66,58 @@
* the user can specify the X and Y position of interest with command parameters . This allows the user to
* the user can specify the X and Y position of interest with command parameters . This allows the user to
* focus on a particular area of the Mesh where attention is needed .
* focus on a particular area of the Mesh where attention is needed .
*
*
* B # Bed Set the Bed Temperature . If not specified , a default of 60 C . will be assumed .
* B # Bed Set the Bed Temperature . If not specified , a default of 60 C . will be assumed .
*
*
* C Current When searching for Mesh Intersection points to draw , use the current nozzle location
* C Current When searching for Mesh Intersection points to draw , use the current nozzle location
* as the base for any distance comparison .
as the base for any distance comparison .
*
*
* D Disable Disable the Unified Bed Leveling System . In the normal case the user is invoking this
* D Disable Disable the Unified Bed Leveling System . In the normal case the user is invoking this
* command to see how well a Mesh as been adjusted to match a print surface . In order to do
* command to see how well a Mesh as been adjusted to match a print surface . In order to do
* this the Unified Bed Leveling System is turned on by the G26 command . The D parameter
* this the Unified Bed Leveling System is turned on by the G26 command . The D parameter
* alters the command ' s normal behaviour and disables the Unified Bed Leveling System even if
* alters the command ' s normal behaviour and disables the Unified Bed Leveling System even if
* it is on .
* it is on .
*
*
* H # Hotend Set the Nozzle Temperature . If not specified , a default of 205 C . will be assumed .
* H # Hotend Set the Nozzle Temperature . If not specified , a default of 205 C . will be assumed .
*
*
* F # Filament Used to specify the diameter of the filament being used . If not specified
* F # Filament Used to specify the diameter of the filament being used . If not specified
* 1.75 mm filament is assumed . If you are not getting acceptable results by using the
* 1.75 mm filament is assumed . If you are not getting acceptable results by using the
* ' correct ' numbers , you can scale this number up or down a little bit to change the amount
* ' correct ' numbers , you can scale this number up or down a little bit to change the amount
* of filament that is being extruded during the printing of the various lines on the bed .
* of filament that is being extruded during the printing of the various lines on the bed .
*
*
* K Keep - On Keep the heaters turned on at the end of the command .
* K Keep - On Keep the heaters turned on at the end of the command .
*
*
* L # Layer Layer height . ( Height of nozzle above bed ) If not specified .20 mm will be used .
* L # Layer Layer height . ( Height of nozzle above bed ) If not specified .20 mm will be used .
*
*
* Q # Multiplier Retraction Multiplier . Normally not needed . Retraction defaults to 1.0 mm and
* Q # Multiplier Retraction Multiplier . Normally not needed . Retraction defaults to 1.0 mm and
* un - retraction is at 1.2 mm These numbers will be scaled by the specified amount
* un - retraction is at 1.2 mm These numbers will be scaled by the specified amount
*
*
* N # Nozzle Used to control the size of nozzle diameter . If not specified , a .4 mm nozzle is assumed .
* M # Random Randomize the order that the circles are drawn on the bed . The search for the closest
* ' n ' can be used instead if your host program does not appreciate you using ' N ' .
* undrawn cicle is still done . But the distance to the location for each circle has a
* random number of the size specified added to it . Specifying R50 will give an interesting
* deviation from the normal behaviour on a 10 x 10 Mesh .
* N # Nozzle Used to control the size of nozzle diameter . If not specified , a .4 mm nozzle is assumed .
* ' n ' can be used instead if your host program does not appreciate you using ' N ' .
*
*
* O # Ooooze How much your nozzle will Ooooze filament while getting in position to print . This
* O # Ooooze How much your nozzle will Ooooze filament while getting in position to print . This
* is over kill , but using this parameter will let you get the very first ' cicle ' perfect
* is over kill , but using this parameter will let you get the very first ' cicle ' perfect
* so you have a trophy to peel off of the bed and hang up to show how perfectly you have your
* so you have a trophy to peel off of the bed and hang up to show how perfectly you have your
* Mesh calibrated . If not specified , a filament length of .3 mm is assumed .
* Mesh calibrated . If not specified , a filament length of .3 mm is assumed .
*
*
* P # Prime Prime the nozzle with specified length of filament . If this parameter is not
* P # Prime Prime the nozzle with specified length of filament . If this parameter is not
* given , no prime action will take place . If the parameter specifies an amount , that much
* given , no prime action will take place . If the parameter specifies an amount , that much
* will be purged before continuing . If no amount is specified the command will start
* will be purged before continuing . If no amount is specified the command will start
* purging filament until the user provides an LCD Click and then it will continue with
* purging filament until the user provides an LCD Click and then it will continue with
* printing the Mesh . You can carefully remove the spent filament with a needle nose
* printing the Mesh . You can carefully remove the spent filament with a needle nose
* pliers while holding the LCD Click wheel in a depressed state .
* pliers while holding the LCD Click wheel in a depressed state .
*
*
* R # Random Randomize the order that the circles are drawn on the bed . The search for the closest
* R # Repeat Prints the number of patterns given as a parameter , starting at the current location .
* undrawn cicle is still done . But the distance to the location for each circle has a
* If a parameter isn ' t given , every point will be printed unless G26 is interrupted .
* random number of the size specified added to it . Specifying R50 will give an interesting
* This works the same way that the UBL G29 P4 R parameter works .
* deviation from the normal behaviour on a 10 x 10 Mesh .
*
*
* X # X coordinate Specify the starting location of the drawing activity .
* X # X Coord. Specify the starting location of the drawing activity .
*
*
* Y # Y coordinate Specify the starting location of the drawing activity .
* Y # Y Coord. Specify the starting location of the drawing activity .
*/
*/
// External references
// External references
@ -176,6 +180,8 @@
static bool keep_heaters_on = false ;
static bool keep_heaters_on = false ;
static int16_t g26_repeats ;
/**
/**
* G26 : Mesh Validation Pattern generation .
* G26 : Mesh Validation Pattern generation .
*
*
@ -359,7 +365,7 @@
//debug_current_and_destination(PSTR("Done with current circle."));
//debug_current_and_destination(PSTR("Done with current circle."));
} while ( location . x_index > = 0 & & location . y_index > = 0 ) ;
} while ( location . x_index > = 0 & & location . y_index > = 0 & & g26_repeats - - ) ;
LEAVE :
LEAVE :
lcd_reset_alert_level ( ) ;
lcd_reset_alert_level ( ) ;
@ -722,11 +728,21 @@
}
}
}
}
if ( code_seen ( ' R ' ) ) {
if ( code_seen ( ' M ' ) ) {
randomSeed ( millis ( ) ) ;
randomSeed ( millis ( ) ) ;
random_deviation = code_has_value ( ) ? code_value_float ( ) : 50.0 ;
random_deviation = code_has_value ( ) ? code_value_float ( ) : 50.0 ;
}
}
if ( code_seen ( ' R ' ) ) {
g26_repeats = code_has_value ( ) ? code_value_int ( ) - 1 : 999 ;
if ( g26_repeats < = 0 ) {
SERIAL_PROTOCOLLNPGM ( " ?(R)epeat value not plausible; must be greater than 0. " ) ;
return UBL_ERR ;
}
}
x_pos = current_position [ X_AXIS ] ;
x_pos = current_position [ X_AXIS ] ;
y_pos = current_position [ Y_AXIS ] ;
y_pos = current_position [ Y_AXIS ] ;