For longer delays the use of the delay() function is not a good idea as it paralyzes the processor while it is waiting. Nothing else can be done, such as reading a switch.
Look at the technique in the Blink Without Delay example sketch which shows how to use millis() for timing purposes. It will work fine for long delays even though it counts in milliseconds.
...R