Jakékoliv měření času se dá provést přes funkci millis(). Spoustu pěkného povídání je zde. Celé povídání zdůrazňuje měření intervalu a ne jednotlivých časů. Potom je také možné díky modulární aritmetice pohodově překonat přetečení unsigned long typu, co nastava asi každých 47 dní. Pokud je potřeba čas prodloužit, článek doporučuje použít 64 bitů pro uložení času přes”
uint64_t millis64() { static uint32_t low32, high32; uint32_t new_low32 = millis(); if (new_low32 < low32) high32++; low32 = new_low32; return (uint64_t) high32 << 32 | low32; }
Pokud nepotřebujeme v uptime měřit sekundy, tak se pomocí zjednodušení na minuty dostaneme na nekolik tisíc let i pomoci unsigned long. Jenom je potreba pracovat s millis() jednou za minutu (to je 60 000 ticku). Kód pak může vypadat napriklad takhle”
unsigned long TT,upM=0,upH=0,upD=0; if (millis()-TT >60000) { upM++; if (upM == 60) { upM = 0; upH++; } if (upH == 24) { upH = 0; upD++; } TT = millis(); }