Timing of different events independently

You could use a while statement to 'freeze' the loop until you press a button.

while(digitalRead(buttonPin); // wait here until buttonPin becomes LOW

There are several other ways.
Post your code if you want help with it.
Leo..