С кодом скорее всего всё в порядке. Но детально я не всматриался. Сбрасываться и начинать отсчет заново, согласно этого кода, оно должно при перезапуске. Перезапуски у ардуино могут происходить произвольно, из-за помех по питанию.
Для реализации таймера лучше использовать модуль часов, например DS1302 или подобных.