OK, good. That leaves an unexplained scaling coefficient of roughly 2 someplace in the optical measurement, but for your situation I'm not worried about that.I have just tested the full rotation by the step-size of 635 microns.
...
So, the output of the gear-box has been rotated by this step exactly 360°.
Float is OK for this particular situation, but in general, a better choice would be type "long". For counting, floats have two disadvantages. One is that on Arduino floats have only 24 bits of precision, so the maximum integer value they can store exactly is less than 17 million. The other is that they take a lot longer to compute. Neither of these really matters in your move loop, but it's something to keep in mind for other applications.In order to be able do that I had to change the variable numberOfSteps from int to float because my units are nano-meters :-)
--Rik