|
@@ -74,18 +74,17 @@
|
74
|
74
|
* A Activate Activate the Unified Bed Leveling system.
|
75
|
75
|
*
|
76
|
76
|
* B # Business Use the 'Business Card' mode of the Manual Probe subsystem. This is invoked as
|
77
|
|
- * G29 P2 B The mode of G29 P2 allows you to use a bussiness card or recipe card
|
|
77
|
+ * G29 P2 B. The mode of G29 P2 allows you to use a business card or recipe card
|
78
|
78
|
* as a shim that the nozzle will pinch as it is lowered. The idea is that you
|
79
|
79
|
* can easily feel the nozzle getting to the same height by the amount of resistance
|
80
|
80
|
* the business card exhibits to movement. You should try to achieve the same amount
|
81
|
81
|
* of resistance on each probed point to facilitate accurate and repeatable measurements.
|
82
|
|
- * You should be very careful not to drive the nozzle into the bussiness card with a
|
|
82
|
+ * You should be very careful not to drive the nozzle into the business card with a
|
83
|
83
|
* lot of force as it is very possible to cause damage to your printer if your are
|
84
|
|
- * careless. If you use the B option with G29 P2 B you can leave the number parameter off
|
85
|
|
- * on its first use to enable measurement of the business card thickness. Subsequent usage
|
86
|
|
- * of the B parameter can have the number previously measured supplied to the command.
|
87
|
|
- * Incidently, you are much better off using something like a Spark Gap feeler gauge than
|
88
|
|
- * something that compresses like a Business Card.
|
|
84
|
+ * careless. If you use the B option with G29 P2 B you can omit the numeric value
|
|
85
|
+ * on first use to measure the business card's thickness. Subsequent usage of 'B'
|
|
86
|
+ * will apply the previously-measured thickness as the default.
|
|
87
|
+ * Note: A non-compressible Spark Gap feeler gauge is recommended over a Business Card.
|
89
|
88
|
*
|
90
|
89
|
* C Continue Continue, Constant, Current Location. This is not a primary command. C is used to
|
91
|
90
|
* further refine the behaviour of several other commands. Issuing a G29 P1 C will
|
|
@@ -98,7 +97,7 @@
|
98
|
97
|
*
|
99
|
98
|
* E Stow_probe Stow the probe after each sampled point.
|
100
|
99
|
*
|
101
|
|
- * F # Fade * Fade the amount of Mesh Based Compensation over a specified height. At the
|
|
100
|
+ * F # Fade Fade the amount of Mesh Based Compensation over a specified height. At the
|
102
|
101
|
* specified height, no correction is applied and natural printer kenimatics take over. If no
|
103
|
102
|
* number is specified for the command, 10mm is assumed to be reasonable.
|
104
|
103
|
*
|
|
@@ -115,15 +114,15 @@
|
115
|
114
|
* the bed and use this feature to select the center of the area (or cell) you want to
|
116
|
115
|
* invalidate.
|
117
|
116
|
*
|
118
|
|
- * J # Grid * Perform a Grid Based Leveling of the current Mesh using a grid with n points on a side.
|
|
117
|
+ * J # Grid Perform a Grid Based Leveling of the current Mesh using a grid with n points on a side.
|
119
|
118
|
* Not specifying a grid size will invoke the 3-Point leveling function.
|
120
|
119
|
*
|
121
|
120
|
* K # Kompare Kompare current Mesh with stored Mesh # replacing current Mesh with the result. This
|
122
|
121
|
* command literally performs a diff between two Meshes.
|
123
|
122
|
*
|
124
|
|
- * L Load * Load Mesh from the previously activated location in the EEPROM.
|
|
123
|
+ * L Load Load Mesh from the previously activated location in the EEPROM.
|
125
|
124
|
*
|
126
|
|
- * L # Load * Load Mesh from the specified location in the EEPROM. Set this location as activated
|
|
125
|
+ * L # Load Load Mesh from the specified location in the EEPROM. Set this location as activated
|
127
|
126
|
* for subsequent Load and Store operations.
|
128
|
127
|
*
|
129
|
128
|
* The P or Phase commands are used for the bulk of the work to setup a Mesh. In general, your Mesh will
|
|
@@ -143,12 +142,11 @@
|
143
|
142
|
* probing needed locations. This allows you to invalidate portions of the Mesh but still
|
144
|
143
|
* use the automatic probing capabilities of the Unified Bed Leveling System. An X and Y
|
145
|
144
|
* parameter can be given to prioritize where the command should be trying to measure points.
|
146
|
|
- * If the X and Y parameters are not specified the current probe position is used. Phase 1
|
147
|
|
- * allows you to specify the M (Map) parameter so you can watch the generation of the Mesh.
|
148
|
|
- * Phase 1 also watches for the LCD Panel's Encoder Switch being held in a depressed state.
|
149
|
|
- * It will suspend generation of the Mesh if it sees the user request that. (This check is
|
150
|
|
- * only done between probe points. You will need to press and hold the switch until the
|
151
|
|
- * Phase 1 command can detect it.)
|
|
145
|
+ * If the X and Y parameters are not specified the current probe position is used.
|
|
146
|
+ * P1 accepts a 'T' (Topology) parameter so you can observe mesh generation.
|
|
147
|
+ * P1 also watches for the LCD Panel Encoder Switch to be held down, and will suspend
|
|
148
|
+ * generation of the Mesh in that case. (Note: This check is only done between probe points,
|
|
149
|
+ * so you must press and hold the switch until the Phase 1 command detects it.)
|
152
|
150
|
*
|
153
|
151
|
* P2 Phase 2 Probe areas of the Mesh that can't be automatically handled. Phase 2 respects an H
|
154
|
152
|
* parameter to control the height between Mesh points. The default height for movement
|
|
@@ -171,7 +169,7 @@
|
171
|
169
|
* be done based on the current location of the nozzle.
|
172
|
170
|
*
|
173
|
171
|
* A B parameter is also available for this command and described up above. It places the
|
174
|
|
- * manual probe subsystem into Business Card mode where the thickness of a business care is
|
|
172
|
+ * manual probe subsystem into Business Card mode where the thickness of a business card is
|
175
|
173
|
* measured and then used to accurately set the nozzle height in all manual probing for the
|
176
|
174
|
* duration of the command. (S for Shim mode would be a better parameter name, but S is needed
|
177
|
175
|
* for Save or Store of the Mesh to EEPROM) A Business card can be used, but you will have
|
|
@@ -237,7 +235,7 @@
|
237
|
235
|
* you should have the Mesh adjusted for a Mean Height of 0.00 and the Z-Probe measuring
|
238
|
236
|
* 0.000 at the Z Home location.
|
239
|
237
|
*
|
240
|
|
- * Q Test * Load specified Test Pattern to assist in checking correct operation of system. This
|
|
238
|
+ * Q Test Load specified Test Pattern to assist in checking correct operation of system. This
|
241
|
239
|
* command is not anticipated to be of much value to the typical user. It is intended
|
242
|
240
|
* for developers to help them verify correct operation of the Unified Bed Leveling System.
|
243
|
241
|
*
|
|
@@ -262,14 +260,16 @@
|
262
|
260
|
* is suitable to paste into a spreadsheet for a 3D graph of the mesh.
|
263
|
261
|
*
|
264
|
262
|
* U Unlevel Perform a probe of the outer perimeter to assist in physically leveling unlevel beds.
|
265
|
|
- * Only used for G29 P1 O U It will speed up the probing of the edge of the bed. This
|
266
|
|
- * is useful when the entire bed does not need to be probed because it will be adjusted.
|
|
263
|
+ * Only used for G29 P1 O U. This speeds up the probing of the edge of the bed. Useful
|
|
264
|
+ * when the entire bed doesn't need to be probed because it will be adjusted.
|
267
|
265
|
*
|
268
|
|
- * W What? Display valuable data the Unified Bed Leveling System knows.
|
|
266
|
+ * V # Verbosity Set the verbosity level (0-4) for extra details. (Default 0)
|
269
|
267
|
*
|
270
|
|
- * X # * * X Location for this line of commands
|
|
268
|
+ * W What? Display valuable Unified Bed Leveling System data.
|
271
|
269
|
*
|
272
|
|
- * Y # * * Y Location for this line of commands
|
|
270
|
+ * X # X Location for this command
|
|
271
|
+ *
|
|
272
|
+ * Y # Y Location for this command
|
273
|
273
|
*
|
274
|
274
|
*
|
275
|
275
|
* Release Notes:
|
|
@@ -318,7 +318,7 @@
|
318
|
318
|
}
|
319
|
319
|
|
320
|
320
|
// Don't allow auto-leveling without homing first
|
321
|
|
- if (axis_unhomed_error())
|
|
321
|
+ if (axis_unhomed_error())
|
322
|
322
|
home_all_axes();
|
323
|
323
|
|
324
|
324
|
if (g29_parameter_parsing()) return; // abort if parsing the simple parameters causes a problem,
|
|
@@ -377,7 +377,7 @@
|
377
|
377
|
}
|
378
|
378
|
|
379
|
379
|
if (code_seen('J')) {
|
380
|
|
- if (grid_size!=0) { // if not 0 it is a normal n x n grid being probed
|
|
380
|
+ if (grid_size) { // if not 0 it is a normal n x n grid being probed
|
381
|
381
|
ubl.save_ubl_active_state_and_disable();
|
382
|
382
|
ubl.tilt_mesh_based_on_probed_grid(code_seen('T'));
|
383
|
383
|
ubl.restore_ubl_active_state_and_leave();
|
|
@@ -479,7 +479,7 @@
|
479
|
479
|
}
|
480
|
480
|
|
481
|
481
|
if (code_seen('H') && code_has_value()) height = code_value_float();
|
482
|
|
-
|
|
482
|
+
|
483
|
483
|
if ( !position_is_reachable_xy( x_pos, y_pos )) {
|
484
|
484
|
SERIAL_PROTOCOLLNPGM("(X,Y) outside printable radius.");
|
485
|
485
|
return;
|
|
@@ -497,15 +497,15 @@
|
497
|
497
|
* - Allow 'G29 P3' to choose a 'reasonable' constant.
|
498
|
498
|
*/
|
499
|
499
|
if (c_flag) {
|
500
|
|
-
|
501
|
500
|
if (repetition_cnt >= GRID_MAX_POINTS) {
|
502
|
|
- for ( uint8_t x = 0; x < GRID_MAX_POINTS_X; x++ ) {
|
503
|
|
- for ( uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++ ) {
|
|
501
|
+ for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++) {
|
|
502
|
+ for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) {
|
504
|
503
|
ubl.z_values[x][y] = ubl_constant;
|
505
|
504
|
}
|
506
|
505
|
}
|
507
|
|
- } else {
|
508
|
|
- while (repetition_cnt--) { // this only populates reachable mesh points near
|
|
506
|
+ }
|
|
507
|
+ else {
|
|
508
|
+ while (repetition_cnt--) { // this only populates reachable mesh points near
|
509
|
509
|
const mesh_index_pair location = find_closest_mesh_point_of_type(INVALID, x_pos, y_pos, USE_NOZZLE_AS_REFERENCE, NULL, false);
|
510
|
510
|
if (location.x_index < 0) break; // No more reachable invalid Mesh Points to populate
|
511
|
511
|
ubl.z_values[location.x_index][location.y_index] = ubl_constant;
|
|
@@ -536,7 +536,7 @@
|
536
|
536
|
// good to have the extra information. Soon... we prune this to just a few items
|
537
|
537
|
//
|
538
|
538
|
if (code_seen('W')) ubl.g29_what_command();
|
539
|
|
-
|
|
539
|
+
|
540
|
540
|
//
|
541
|
541
|
// When we are fully debugged, this may go away. But there are some valid
|
542
|
542
|
// use cases for the users. So we can wait and see what to do with it.
|
|
@@ -1578,7 +1578,7 @@
|
1578
|
1578
|
SERIAL_ECHOPGM("Could not complete LSF!");
|
1579
|
1579
|
return;
|
1580
|
1580
|
}
|
1581
|
|
-
|
|
1581
|
+
|
1582
|
1582
|
if (g29_verbose_level > 3) {
|
1583
|
1583
|
SERIAL_ECHOPGM("LSF Results A=");
|
1584
|
1584
|
SERIAL_PROTOCOL_F(lsf_results.A, 7);
|