polymorph:
Just commenting on the idea of using a motor as a generator to determine direction:Connect one terminal of the motor to a voltage divider at Vcc/2. Connect the other, through the appropriate resistors and diodes to protect the Arduino and capacitor to smooth the signal, to an Analog input pin.
Motor spins one way, voltage>2.5V. Motor spins the other way, voltage<2.5V. You could connect a second Analog input to the voltage divider to get an accurate read of zero speed voltage.
Load the motor down with the right resistor across it, and you can probably get a reasonable indication of speed, too. The resistor should go right across the motor.
That doesn't sound right to me. A DC generator to turn in both directions must cause the voltage to change polarity, so voltage output of your 'simple method' would be some positive voltage in one direction depending on speed, and the same voltage but negative if driven in the opposite direction at the same speed. And as arduino analog inputs can not measure negative voltages, how could it work?