Friday Facts 2: Makelangelo Java GUI

This last week there has been work on Makelangelo software to make it work with the new firmware.

I spent a lot of time using design patterns to decouple classes so they can be independently tested. Usually this means an Observer pattern common in Java: a visible Panel on the screen has a list of registered Listeners and when something interesting happens in the Panel it calls notifyListeners(interestingEvent). This way Panel can be run and tested without needing any specific Listener.

A single sub-panel

I’d like to change up the code for a MakelangeloRobot to be decoupled from the NetworkSession – the source of data from the real machine. Then data could come from, say, a piece of code reading from a file. That way the state of the machine could be recorded and played back for testing things like “is the machine connecting to you a Makelangelo 5, a 3, a 2, or something else?”

I’m also plagued by ideas about how a Turtle path is used by a MakelangeloRobot. Turtle is a class that contains TurtleMoves, which describe the movement of the pen over the paper. One Turtle per color! Based on the old Commdore 64 turtle, one of the first procedural drawing programs I used as a kid.

Many classes in the Makelangelo app read and manipulate the history of TurtleMoves in a Turtle.

Drawing speed vs quality testing

In a cartesian plotter the velocity, acceleration, and jerk have the same effect everywhere across the work area. Testing such a machine to find ideal speeds is not onerous. I would draw a grid of squares and on the x axis each square would have more velocity while on the y axis each square would have greater acceleration. In this way the sweet spot is easy enough to find.

In a polargraph plotter the challenge is much greater. What works at the top doesn’t work at the bottom, what works in the center might not work on the sides. Simply drawing a set of squares isn’t enough! Long story short I need your help to find the sweetest of sweet spots. Together we can do it. Right? Right??

Spiral improvements


…and that’s all I have to say about that.

Final thoughts

These changes can be downloaded from the Makelangelo project on Github.

Did you know you can add bars to your timing belt? I didn’t.

Join our Discord to talk more about this post.


Makelangelo software 7.26.0 beta

This Makelangelo software 7.26.0 beta release brings several changes that should improve drawings and quality of life. It is a pre-release for the very brave. If you do try it then please come to our Discord, introduce yourself, and tell us about the experience so we can make it better.

All new firmware

Before Marginally Clever Robots was even conceived I was learning to move motors with Arduino. As time went on 3D printers arrived and the Marlin firmware in my Prusa printers got really really good. So good, in fact, that I make a fork of the Marlin code and taught it to run a Makelangelo 5 robot. It is smoother, faster, and it means going forward I will have more time to do the things Marginally Clever Robots is good at.

Firmware update tool for Windows

Built into the Makelangelo app is a new firmware update tool. Your robot must be on and connected via USB cable. The app should not be connected to the robot yet.

  • avrDude path: is the location of the windows tool that uploads the .hex file to your robot. A copy has been included in this release. If you have Arduino software installed it will try to use that instead.
  • *.hex file: is the file to upload. This release includes a file called firmware-2021-09-10.hex.
  • Port: is the COM port your robot appears on when USB connected.
  • Refresh: will update the COM port list if you add/remove a robot.
  • Start: will initiate the upload process. It can take up to 2 minutes.

Sending code to the robot

The correct way to send a file to the robot is to use Makelangelo > Save to File/SD card. Save the *.gcode file to your SD card (included with the robot) and run your code from the robot.

Quality of Life

I want to separate the “make art” part of the app from the “drive robot” part of the app. You will find new top level menu items for all art stuff, and the right hand panel is for driving-only.

They are as follows:

  • Makelangelo > New: start over
  • Makelangelo > Open File: open an image file and begin converting it to lines.
  • Generate Art: The name hasn’t changed, only the location. The artwork does not “stack” – a new creation will replace the old one.
  • Art Pipeline: This might be renamed later to “tools”. It includes things like scaling, flipping, and the Simplify and Reorder actions. Until now every image loaded automatically ran simplify and reorder, even if you were not done experimenting with your image conversion. Now you must do it explicitly. Take note of your estimated drawing time, it will often drop by large amounts!

Final thoughts

This release does not respond to connect + drive commands. It tries to connect, does not recognize the new firmware, and then never unlocks the driving buttons. At this time I want to gauge your feelings about the new firmware and the quality of life changes.

The tool works in Windows only. It should make life easier for 99% of the artists out there. The firmware upload tool is only designed for the Makelangelo 5 robot.

This version of the Makelangelo Software app is written for Java 15. Get Java SE 15 here.

For the rest of you… please come to our Discord, introduce yourself, and we’ll figure it out together!

Makelangelo News

Makelangelo Belt Tensioner

Makelangelo is a wall hanging, mural drawing machine. There is a motor on the top left and top right of the wall, and belts hang down from there to the pen. Tension caused by gravity keeps the belt on the pulley.

To draw on the entire wall you need a belt long enough for the pen to reach the bottom corners, going diagonally across the drawing area. That means if the pen were to be in the middle and drop all the way to the bottom it would hit the floor.


When the machine tries to find home by touching limit switches, the pen holder hits the floor as described. Gravity stops, tension is lost, and the machine becomes confused.


This 3D printed tensioner fits a roller skate bearing (8x22x7) and holds the bearing against the belt, gently pinching it against the pulley. This prevents skipping and allows large machines to find home.

This has an added bonus of letting the machine accelerate faster without skipping.

Print two (one for each bearing) and then fit them onto the two corners and enjoy!

Download the part from Thingiverse here:

Makelangelo News Robot Arm

Weekly summary ending 2018-02-22

Hey, gang! Here is what we worked on in the last week, where we are heading next, and how you can join us.

Makelangelo Update Released!

Makelangelo Software v7.20.1 and Makelangelo firmware v9.0.0 are out now. This is a major change to the firmware which rewrites all the logic for planning movement, especially with acceleration and deceleration. If you upgrade one then you must upgrade both. We have written a guide to help you with updating the Makelangelo firmware that should make this easy for you.

One of the side effects is that the old and busted steps/min values have been replaced with new hotness mm/s and mm/s/s. I am getting good drawing results with top speed=90mm/s, drawing speed=60mm/s, and acceleration=300mm/s/s. See for yourself.

Makelangelo 5 at Science World Vancouver, Feb 20, 2019

Wednesday the power was out for a scheduled electrical upgrade and we used the time at Vancouver’s Telus World of Science to take some better photographs and video. I hope that with this I can finally make a presentation pitch video that does the machine sweet vengeful justice.

Fun fact: A large sheet of acrylic has enough static cling and surface tension to hold an A0 sheet of paper without tape.

Makelangelo on a white board

I find that the Makelangelo suction cups work great on glass …and not so great on a class room white board. I tasked Jacob with designing a new system and he went through several rapid prototype iterations.

In house we’ve moved on a few versions from what you just saw and have an even better design. When it’s ready we’ll offer it in the store and on Thingiverse.

I should also mention Scott has been doing a great job of manufacturing Makelangelos and documenting process. I don’t mention enough how good he’s doing (very!) at a job some people would look down on. Documentation is hard, yo! He’s even inventing better ways to make the machines faster with less futzing.

Sixi motors arrived

Jin was taking some much earned time off this week, during which time the motors and the power supply we ordered finally arrived. As I write this he’s doing electrical tests and torque tests and making sure that everything is to spec.

Meanwhile, on the other side of town,

In anticipation of our new CNC machine arriving in ~6 weeks I’ve been taking night classes to learn how to be a better machinist. Here’s a funny from my last session:

Manners really seal the deal.


The next week is Jacob & Scott’s last week of internship. Pizza party? Pizza party. If everything goes well with the testing we should be installing the new motors into Sixi this week. I can wait, but I don’t want to… 😭

Join Us

Get the latest Sixi Master Assembly for Fusion360 on Patreon
Buy anything in our store and mention ‘The Fusion link’ in the notes field to get a link by email.

You can use this file to build your own copy of the robot arm.  Put that 3D printer you bought to use – Make it your own! Share your creation with others!  That’s what open source is about.  If you build one we would love to share it with others.  I am actively seeking talent… show me what you got.

As always, follow our daily progress on our Instagram or see our older stuff on Youtube.

You can do us a huge favor by watching just 2 minutes of video on our Youtube channel. We have 44k subscribers on IG and we need 100k minutes watched to monetize our channel. If you all watch 2 minutes of video that’s 88k minutes done, finito, in the bank, sayanora. So Like, Share, Subscribe! We thank you.

Lastly, thank you for your likes, subscribes, comments, and purchases. You keep the lights on and the mood high so we can keep working on awesome things that will help the planet.