Marlin Mixing, Meshes, and More!
Greetings everyone! Another busy week. Let's get right to it…

Graphical Displays

Last month I received a RepRap Discount Full Graphical Display donated all the way from Australia! Of course the very first thing I did was fix up the Marlin status screen. The XYZ coordinates needed to be able to show negative values, so that was the first fix. I centered the nozzle and hot-end temperatures on their graphics. And I got rid of visual noise like the empty "--:--" time value.

Looking into LCD menus generally, I discovered some limitations that prevented the "Manual Bed Leveling" feature from working very well. After a lot of trial-and-error, it now works a lot better, including an extra display to show the current probe-point count.

Color-Mixing Extruders!

Color-mixing extruders are becoming all the rage in 3D printing as more research and development is being done in this area, and soon we will be seeing a lot more machines and extruders with this feature.

The idea is simple. The extruder feeds multiple filaments into a single hot end where they are melted and stirred together to produce a single color. The hard part is to build a hot end that can both mix and extrude reliably, but these problems are mostly worked out. The biggest challenge is to get fast transitions from one blended color to another. This is aided by using a "wipe tower" where filament can be extruded between changes.

I anticipated that the software side of this would be very challenging starting from Marlin's optimized C-style code. However, the way Marlin uses "stepper indirection" made it a lot easier.

The final result is an implementation supporting a single mixing extruder with up to 4 mixing stepper motors. I haven't yet added support for the stepper that turns the mixer, but I'm still waiting for feedback on how that ought to be controlled or automated.

Release 1.1.0 News

Version 1.1.0-RC6 is shaping up to be a very solid release candidate. I encourage all brave RepRap enthusiasts to download this version and help us test it. I think it might be the most stable version of Marlin yet!

So far most reports have been very positive, with only a little confusion about the new configuration options for probes and endstops. We've continued to refine and improve the probe-related settings to handle all common setups, and I think we've got most use-cases covered. But in the long run we want to make it even easier and catch configuration problems at compile-time.

Classes, Singletons, Objects

On the geekier side, I have (at last!) encapsulated the Stepper, Endstops, Planner, and Temperature functions in their own "singleton" objects to improve the semantics of the code-base, clarify the relationships between code units, and better group functionality into families. While this has no effect on how Marlin performs for the end-user, it's a big win for developers who work with this code every day. And in the long run, we hope it will mean fewer bugs and quicker turnaround.

Future Days

Unless new bugs appear, Marlin 1.1.0 should be getting an official release very soon! The "singleton" cleanup is the newest change, so we want to give that a full trial this week and shake out any issues we find. Personally, I feel pretty confident about it, but I'm the programmer, so I guess I always say that.

Version 1.1.1 will be the next official release as a bug-fix to version 1.1.0, and the 1.1.x branch will continue to get updates while we get to work on 1.2.0, which will have a whole new file layout and many more improvements.

That's all for now. See you soon!