Zliczanie czasu można zrealizować na kilka sposobów. Trzeba pamiętać, że Arduino bez naszej wiedzy tworzy w procesorze rodzaj zegara, a raczej timera ciągle odmierzającego czas. To zadanie wykonuje jeden z trzech timerów procesora ATmega328. Taki zegar-timer tworzony jest w każdym programie Arduino i to jest jeden z powodów, dla których nawet najprostszy program zajmuje w pamięci procesora więcej miejsca niż podobne „niearduinowe” programy tworzone np. z pomocą AVR Studio czy BASCOM-a.
Nie jest to prawdziwy zegar, tylko timer zliczający milisekundy, które upłynęły od chwili włączenia zasilania i rozpoczęcia pracy programu, co można odczytać za pomocą funkcji millis(). Ten licznik-timer jest kasowany do zera przy każdym wyłączeniu zasilania, a ponadto ulega przepełnieniu i liczy od zera po każdych kolejnych 49 dniach. Dokładność odmierzania w ten sposób czasu jest bardzo mała, zarówno z powodu pewnych uproszczeń programowych (wskutek których „arduinowa milisekunda” z założenia nie ...