itoa - millis()

Vedo 3 problemi di cui uno grosso:

Perché devi convertire il numero in una stringa? Per stamparla sulla seriale puoi farlo anche senza. La conversioe ti ruba tempo e ti fa la sketch piú grande.

Metti un numero a 2 cifre in un array di 2 elementi e vuoi aggiungere pure un /0 finale. Sovrascrivi la memoria.

La variabile tempo viene aggiornata solo quando i minuti sono contati fino minore a 0.

Se vuoi far decrementare i secondi ogni 1000 millisecondi devi aggiornare ogni secondo la variabile tempo.

L'inprecisione che trovi non é data dalla inprecisione del clock del Arduino ma dal Tuo sketch che per pura fortuna fa qualcosa di simile a quello che vuoi fare.

Ciao Uwe