I haven't been able to put in as much work as I wanted to on this project, but I'm not stopping now.
The most recent snag is in the buttons. I knew I might have problems with floating values, the wires connected to the arduino might have odd values because they didn't connect to anything, and essentially acted like antennas. The traditional solution to this problem is a pull-up or pull-down resistor, to set that voltage to a known value, which I was hoping to not need.
Needless to say, the laws of physics did their level best to ignore my pleas and refused to bend for me. Pull-up/down resistors here we come.
I *was* trying to supply voltage to one side of the button, reading it on the other side. I wanted to do this so that the high side could trigger an interrupt and my interrupt service routine (ISR) could then read the button values for me. This was to keep from polling the buttons and basically burning power for no reason.
The ATMega chip used in the Arduino has internal pull-up resistors to set inputs to a HIGH state. But that's backwards from how the circuit is built. Oh well, back to the drawing board.