There is significant downside to breaking up the long line segments on UBL Cartesian machines. It adds a lot of extra computation but worse... It cuts out all of UBL's off mesh Z-Height correction checks. There have been a large number of people complaining about the nozzle going to infinity or crashing into the bed lately. They are being caused by
```
void unified_bed_leveling::line_to_destination_cartesian()
```
not watching over the segments being queued up for movement.
* Work around for serial buffer over run
PronterFace sends a lot of M105 commands. During long operations such
as UBL's G29 P1, G29 P2, G29 P4 and G26 this can over run the serial
buffer. This results (very often) in a M1 (actually a M1M105) ending
up in the command queue.
Until we figure out a better way to resolve this issue, this will keep
the UBL commands from experiencing bogus commands at thier completion.
A number of regressions were patched also. The UBL G29 P2 and P4 Press and Hold had stopped working. It is very possible this is broken in the bugfix_v1.1.x branch also.
The main purpose of the Pull Request is to get the 3-Point mesh tilting to use the LSF algorithm just like the grid based mesh tilt. This simplifies the logic and reduces the code size some what. But the real reason to do it is the 3-Point case can be solved exactly. And by feeding these numbers into the LSF algorithm it provides a way to check all that code for 'correctness'.
G26 uses logic that looks like:
```
ex = _GET_MESH_X(i + 1) - (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS));
```
The Bi-Linear macros need parenthesis to work correctly.
Travis is having problems at: https://github.com/MarlinFirmware/Marlin/pull/8560
So... doing a direct commit to get things correct. Bugfix_v1.1.x does not have this bug. Nothing needs to be done to that branch.
These changes may need to be warmed over. I tried to fix things with
the least amount of disruption. I just wanted to get the bugfix_v2.0.0
branch working for people again.
This is a non-intuitive change. @oldmcg says in this post https://github.com/MarlinFirmware/Marlin/issues/7572#issuecomment-340641207 that using DELTA_PRINTABLE_RADIUS is better than DELTA_PROBABLE_RADIUS for setting the probe limits. This is because the automatic probe code checks all locations for being reachable by the probe prior to doing the probe.
- Fix G26 Circle Drawing.
- Add default extrusion settings so machine can print lines on print bed
- Yet to be done: Get LCD Menu's to use these settings.
* Re-Print of same SD Memory Card file with single click
* Re-Print of same SD Memory Card file with single click
* This is the bugfix-v2.0.0 version of https://github.com/MarlinFirmware/Marlin/pull/8104
* Get UBL Mesh Generation, Mesh Save & Mesh Load working with 32-Bit platforms
* clean up read_data() and write_data() for non-LPC1768 HAL's
* Get read_data() and write_data() return codes consistent
All HAL's read_data() and write_data() return false if they succeed.
* Get read_data() and write_data() return codes to be consistent
Make read_data() and write_data() return true if an error happens.
* Say UBL is now checked out on machine types in default Configuration.h file.
* Add Max7219 LED Matrix Debug Support
The Max7219 8x8 LED Matrix's are very helpful for debugging new code.
And for that matter, just trying to maximize printer settings without
causing stuttering.
The displays are very inexpensive (under $2.00 with shipping) and
provide a lot of help when trying to debug complicated code.
* Try to keep Makefile up to date.
Original Mesh Bed Leveling replacement put at top of UBL Menu Options to
help facilitate the removal of the Original Mesh Bed Leveling.
Radar display (and control) of the UBL Interactive Mesh Editing.
* Save up to 94 bytes of RAM on 20x4 LCD Display machines
Moved the custom screen characters out of RAM into Program Memory. With
SD-Card support and the Progress Bar enabled, this saves 94 bytes of RAM
memory.
This was tested using the example_configurations/FolgerTech-i3-2020
files. So a couple small changes to those files snuck into this Pull
Request.
Probably... We can find similar savings in the Graphics LCD code it we
comb through it. And if so... That is the place we really need to
save RAM memory!
* Tidy up white space and indentation
* Misc. Clean Up
Mostly UBL related clean up.
- But fixed a bug in the thermistortables.
- Made G26 more responsive to user aborts.
- Added sanity checks for older name for UBL_MESH_VALIDATION.
- Made G29 P4 able to edit invalidated mesh points
- Restore a reasonable Fade Height for UBL when creating new state information
- Get UBL's Topology Map to look a little bit better
- Make sure the user doesn't see a blank screen when doing Mesh Editing.
* Huh??? GitHub Desktop screwed up!
* get the planner object in scope
* Fix out of scope z_fade_height
* Travis timed out...
I need a change so I can force a new commit and sync.
Adding the capability to specify ahead of time how much of the validation pattern to print made it so by default G26 only did one circle and no connecting lines.
It is more natural for the unsophisticated user to just do the entire mesh (bed). We default the repetition count to GRID_MAX_POINTS+1 to insure we get every last one of them!
UltiPanel was enabled, but technically, it is a REPRAP_DISCOUNT_SMART_CONTROLLER
Either configuration works on the machine. But we want it 'Right'.
Setup the Proportional Font spacing so columns line up nicer on PronterFace and Repetier Host.
* M421 Mesh Point Offset and misc. UBL clean up
Allow M421 to accept an offset as well as absolute value for a specified
mesh point.
And misc. UBL clean up to reduce redundent code.
* Better error checking for M421
* Fix M421 Y index bug
I just noticed.... We've had a Y index bug for who knows how long?
I think I forgot to Sync before I committed last time. Some UBL
changes did not stick.
Also, update the gMax configuaration.h file so other than unique numbers
and settings, it exactly matches the default configuration.h file.
* Restore LSF functionality
Some of the typo's persisted... Hopefully this gets them all fixed.
* Restore user's expectations of how G28 should behave
* Allow Nozzle size control with ornery host programs
* Correct over optimization of pre-initialized variables
NEAR_ZERO() works most of the time... But it leaves corner cases
uncovered. We need to explicitly check if these variables are +/-
infinity.
* Correct over optimization of pre-initialized variables
The Configuration.h file entries for BL-Touch have been updated to:
```cpp
//#define BLTOUCH
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
//#define BLTOUCH_HEATERS_OFF // if defined the printer's heaters are
turned off during probe event
```