For my birthday, I got an Etch-A-Sketch.  For those too young to know, it’s an old toy that has two knobs you turn to draw a picture by scratching off silver dust from a screen.  I’m a child at heart so I loved this toy.  I had seen the odd video on the internet of an Etch-A-Sketch being controlled with motors to draw things like lines, circles, etc., but nothing intricate or overly interesting.

I currently work at a company that sells a piece of software called Mastercam.  This is used to program multi-axis machines (primarily CNC) to manufacture parts automatically.  An Etch-A-Sketch is essentially a 2-axis machine, with one knob for each direction, which meant that, at least in theory, it could create paths for a capable Etch-A-Sketch.

With some simple motor drivers (L293D), 2 bipolar stepper motors, and an Arduino Duemilanove to control the whole thing, I made an attachment to control the knobs, and  in turn, what the screen drew from a computer.

With the help of some of the post developers at work, we created a simple output from Mastercam to control the Etch-A-Sketch based on any program I made.  I could literally draw the picture in Mastercam and the code would come out to have the Etch-A-Sketch duplicate it.

Arduinos  don’t have the memory capacity to store a large program, and they would need to be reprogrammed every time I wanted to draw something new.  DNC is a method used by machinists to run a program on a machine that is too big for the machine to hold all at once.  Using Java and the RXTX library, I wrote a simple DNC program to transfer programs over to the controller.  Handshaking was needed so the DNC program didn’t overrun the controller, but that was an easy fix.

This obviously isn’t anything super practical, but it was fun and makes for an easy way to always have a new picture sitting next to my desk