Motor Control with Encoder

If you put a rotary optical encoder on the shaft of the motor (nice, but very expensive ), you will get a fairly exact reading of the motor's position. You have to budget some of Arduino's CPU time to measuring the pulses of the encoder though.

The cheap solution is to get an RC servo...