А уж про задержки/паузы/часы - так тут вообще полет фантазии! Развернуться есть где художнику

Какой самый маленький интервал в программе? Например 1 сек. Настраиваем прерывание от таймера на одну секунду и в прерывании щелкаем счётчиками: от одного простейшего, до многоуровневых "часовых" (секунды, минуты, часы, дни...) - в зависимости от потребностей.
Ну и, допустим, интервал 2 дня 10 часов 25 минут 40 сек:
- заряжаем четыре счётчика и запускаем отсчет
- начинаем заполнять переменную окончания отсчёта в обратном порядке (с дней)
если оттикал дни - bitSet(PAUSE, 0);
часы - bitSet(PAUSE, 1);
минуты...
А в программе сравниваем не "start = millis() - 3456000000",
а PAUSE = 0x0F (это для четырёх счётчиков - 0b00001111)