If you are looking for a quick way to paint your house or a make a retina-resolution-reprint of your favourite artwork, you probably have to skip this post. The machine we built is large, low-res and veeerrrrryyyy slow. It is also big, bad-ass, cheap and out of control, something that can be built in a couple of afternoons, has an almost mesmerising and meditative tranquility while seen in action – and (re)produces great (ok, read: “makes unique”) works of art.

Figure 1: Drawbot and its makers

About a year ago the organisers of a local maker festival issued a call-for-artists to do something interesting and appealing with a 18ft high tower. As part of the outdoor bit at the festival the host organisation had three towers as ‘canvas’ for maker-artists willing to make a contribution – with a small material budget.

I teamed up with one of my students (Janwillem te Voortwis, as BSc project for his study Creative Technology) to seize this opportunity to propose (and try and build) one of those long-time lingering desires: a huge V-plotter in style of the Kritzler (or the recent Scribit on kickstarter – or any other fantastic Arduino controlled V-plotter out there) but with a twist (literally). Instead of pencils or felt markers we used spray-paint, and not just one can, but a daisy wheel style multi-colour print-head, a bit robot-rainbow style.

Since the local festival adopted Leonardo da Vinci as main theme and inspiration, we felt compelled to build the machine with a lot of wood and big wheels, base the print-head design on Leonardo’s famous fighting vehicle – and print only reproductions of the Mona Lisa.

The V-plotter’s mechanism consisted largely of two big, beefy steppermotors (which were intended originally for a never-finished CNC mill project) using sprockets and bicycle chains to move the print-head. The print-head consisted of laser cut (geared) plates, also driven by a steppermotor, to select the right colour spray-can for the requested dot. For every new colour the printhead has to rotate the right can in place (also moving and shaking the other cans causing a nice ‘tinkling’ noise) The spray-cans were activated by RC-servos and a 3D printed clamp-with-lever mechanism, similar to for example this one on Thingiverse.

Figure 2: print head with eight cans of spray paint.

Two custom design control boards with ATmega328 and RS485 connection were used to control the main steppers and the print-head (all programmed using Arduino). Converting images to V-plotter coordinates (and colour dot information) happens in a Processing.org sketch, running on an old (but outdoor-resistant) Panasonic CF19 toughbook (running Ubuntu 16.04LTS).

Figure 3: Processing sketch for robot control running on ruggedised laptop

During the festival we managed to create five reproductions. Nice random effects were generated by the wind, causing spray paint to disperse (or miss the canvas altogether). Effective resolution was 1 dpi, while a painting (3 x 4 ft) took more than two hours. As soon as the cans with ‘matched’ colours ran out, we had to substitute different cans, leading to (even more) interesting pop-art.


While the laser-cut wood gears in the print head held out surprisingly well, the 3D printed mechanisms for enabling the spray-cans often got stuck by excess paint. The whole setup was powered by a beefy 150 Watt supply which had to work hard (and sometimes gave up) during the warm festival days. One real headache was caused during calibration. Strange misalignments at the fringes of the canvas were inexplicable (although artistically interesting). Eventually the source of these mishaps was traced back to the second-hand sprockets we were using. Apparently they come in versions with 18 and 19 teeth.

Figure 4: Epic fail, lovely misprint. Why oh why didn’t we count the teeth before….

The project got briefly caught up in a (nationwide) discussion on the need to attribute rights (such as copyright) to artificially intelligent algorithms that are being used in the creative industry. When we sold one of the pieces our machine made to an AI expert, we circumvented the issue by dedicating a part of the sum for a project beneficiary to social robots (in this case, the Furby Retirement Home project called reFURBYshment inspired by the solution of a recent case with the selfie making monkey where legal claims were successfully settled by donating part of the image revenue to wildlife organisations.


project: Janwillem te Voortwis, Edwin Dertien


This is the arduino sketch used in the printhead. The DynamixelReader.cpp and *.h file are necessary for the command protocol (which is, incidently, identical to the RS485 process normally employed in dynamixel servo’s)

Arduino printhead



The arduino code for the v-plotter:

Vplotter sketch

An archive containing the processing sketch: image_pixaliser.zip