Check out an excellent homebrew sensor page at http://home.concepts.nl/~bvandam/sensors.html.
This is compiled from mail messages to the owner of a Mindstorms page.
Related to your input mux, but possibly more useful: You can use an 8-position joystick (of the on-off variety) and 4 resistors as a sensor. I used an old (I do mean old) Atari joystick. It had one common pin, 4 position pins (cardinal compass directions), and a fire button. As would be expected, the appropriate pin or pins were connected to common when the joystick was pushed in a direction or the fire button was pressed. Note that this means that diagonals connect two direction pins to common. You can probably figure out the rest... Connect a resistor of the appropriate value to each of the four direction pins, then tie their ends to one side of a wire plate. I also connected the fire button directly. The common pin from the joystick goes to the other side of the wire plate. At the time I was still using Lego's RCX coding software, so I was stuck with treating it as a light sensor. However, I had managed to turn that light sensor input into a 10-position switch: Joystick in the center resulted in 0. Various directions resulted in various predictable values. The fire button resulted in a 100. The only real catch is trying to get four resistors that will also combine in the correct combinations (diagonals) to always result in distinct values. As I noted before, I could probably choose the resistors better now that I can use raw sensor mode. These were chosen because they produced distinct values in light sensor mode. Top: 66k 10% Left: 22k 5% Bot: 33k 5% Rght: 47k 5% I literally sat down with a box of assorted resistors and kept trying combinations until they came out right. Note that only the diagonals I used (the ones that make sense on a joystick) will make sense with an output value: it's not a perfect 'mux'. These result in the following (light sensor mode) values: (more or less) 21 60 43 51 28 67 53 36 0 means no direction, nothing pushed. I connected the fire button without a resistor, so 100 indicated that it was pushed. I actually used the following ranges. They seem to work well. 0-15: stop 16-25: forward 26-32: right 33-40: back 41-47: up right 48-51: left 52-56: back right 57-63: up left 64-72: back left 73-100: fire button If it's too much trouble to build a joystick of switches, why not pick up an old atari joystick somewhere? They've gotta be selling pretty cheap. Mine came with an Atari model 2600. I don't know exactly how old it is, but the box it lives in is for a 2.4k modem. =) It's interesting how some people are designing sensors to allow robots to be autonomous, while I'm designing controls so I can tell it where to go. :) Jeremy Weatherford xidus@xidus.net