I made a drawing machine that takes the pulse of a user as an input.
Drawing with a US Cutter MH871-MK2 pen plotter, the system reads a user’s pulse with a simple, low-cost pulse oximeter via Arduino. There are a few built-in modes to make prebaked patterns using the wiggly lines of a pulse.
As of this writing, the prebaked modes include drawing:
- a series of straight pulsed lines (mostly useful as a diagnostic),
- a circle,
- a spiral, and (of course)
- a heart.
The Processing sketch (available on Github) that retrieves pulse data from the Arduino and transmits instructions to the plotter needs to juggle a few timing events successfully, but thankfully seems to do so without any trouble. The sketch needs to be listening on one serial port for Arduino data, which is constantly streaming in fairly fast, and also needs to do math on that incoming data and transmit plotter instructions—but no faster than the plotter can execute the instructions. (The plotter does not send back any acknowledgement, ready, or not-ready signals, so I had to find empirically what wait time is appropriate between instruction transmissions. Twenty milliseconds works for my application, but if you’re making the pen go farther you should give the plotter more time to get there.)
The next step I’d like to take with this project: I’d like the base drawing to be the contours of the face of a loved one, loved place, loved thing, etc. The idea is that you’d be able to watch the image of this thing you care about being composed on paper, with own heartbeat animating the drawing as it proceeds.