Driving conveyor belts using Arduino Unos
In regards to time control use the mills() function.  You start by creating an:

unsigned long lastTime = millis();


Then later in the program create another variable:

unsigned long currentTime = millis();


Next Compare the two:

unsigned long elapsedTime = currentTime - lastTime;


For the most part I normally just shorten the last two lines into one:

unsigned long elapsedTime = millis() - lastTime;


Stepper motors are not needed if you are just doing timed control, but the advantage of stepper motors are you can move them with pin point accuracy based on the number of steps per rotation.  If there are 60 steps per rotation then 360 degrees per rotation/ 60 steps per rotation and you get that each step is 6 degrees.  So in order to turn the motor 6 degrees you would turn it 6 steps.  This also allows you to keep track of angular velocity.

When I control motors I normally create an array of the different parts of the cycle then loop through the array.