Remote Controlled Clock Suggestions

Ladies and Gentlemen,

I am trying to figure out the best way to control an analog clock hand (stepper motor, servo motor, continuous servo, etc) that will stop on a given time.

I have tried a few ideas...using a stepper set to rotate a set number of steps to reach the specific time: Some issues I ran into was determining a way to keep track of the steppers location and if the stepper was sent the command to move to let's say 2 o'clock twice accidentally, then the stepper will simply rotate said number of steps twice and all work is lost and I must start from scratch again >:( .

Second, I have tried using a continuous rotating servo with the clock hand blocking photoresistors and then stopping the servo based on light level readings. This works in my head, but I am struggling with the code, i.e. if (photoresistor 1 is blocked) stop servo...if not continue rotating, but if (photoresistor 2 is blocked) stop at this time, etc. In other words, 4 different photoresistors corresponding to 4 different times. When the clock hand passes over one of the 4 photoresistors corresponding to the desired time, then stop the clock hand. If a new command is sent to move to a different time, rotate the servo until reaching that photoresistor and then stop.

I truly do not know if either of the above ideas are reasonable and would greatly welcome any input that would help me.

Thank you so much!

Put a single photoresistor at the 12 o'clock point.
After the Arduino has been reset it has no idea where the hand is pointing, therefore tell it to keep stepping in the forward direction until the photoresistor tells it that it is now pointing to 12 o'clock.
This is your reference point from which all other movements are relative.
Use a variable called current_position to record 0 steps of rotation.

For a typical stepper with 200 steps per revolution you need to move (200 steps/12 hours) number of steps per hour to point to a location on the dial. You will need to round to a whole number. Move to that location and record that number in the current_position variable.

To move to another position calculate the number of steps required from the 12 o'clock reference position, round to a whole number, then subtract the current_position. This will tell you the number of forward or reverse steps required. Once you reach the new location update the current_position variable again.

If you tell it to go to the same location twice it will do nothing as the required position and current position are the same.