Here is a picture of the completed Frand's Mind Bender. This puzzle is a physical recreation of a virtual puzzle that I found on a text-based game called LambdaMOO (telnet to lambda.moo.mud.org port 8888).
I had always thought it would be interesting to build a physical replica of this puzzle, but unfortunately I had no knowledge of electronics or microcontrollers. I did a bit of research and found out about something called a Basic Stamp, which is a microcontroller (little electronic brain for you non-techie folks) that you can program using a fairly simple programming language. The starter kit was about $100, but I am a fairly cheap bastard: I was worried that it might not work and I would be out $100 that could have been spent on puzzles.
The next big hurdle was to find a display. Most displays are fairly small, but I needed one that could show a message that was potentially 44 characters long. This is far too long to show on a typical display without scrolling, so I needed to find one that would show multiple lines. In fact, since the the words that can be produced can be up to 13 characters long, I determined that I needed a display that would display four lines.
This tied into my next problem: I needed 16 inputs to control the puzzle, since there are four knobs and each one has four operations (push, pull, twist left, and twist right), but the Basic Stamp has exactly 16 dual funcion inputs/output pins! This left me with no way to output data to my display.
matrix configuration where four of the i/o pins are the columns and four of the i/o pins are the rows (see 2x2 example on right). The 16 switches are laid out (logically) in a 4x4 grid so that when you press a switch it connects one row to one column, completing the circut. By checking regularly for this connection, you can determine exactly which switch has been pressed. It is tough to explain, so if you are confused (and prefer not to be) check out that link above because it explains it with diagrams.
Stay tuned for the 2nd half of this entry tomorrow! I ran out of time tonight.
19 hours ago