Cronometro

Il problema risiede in:

  1. l'Arduino usa un risonatore ceramico che non ha una grossa precisione. Perdere qualche secondo nel giro di pochi minuti non è strano, è nella norma;
  2. ricordati che ora il tuo Arduino sta usando 2 timer (lo 0 e il 2) con 2 ISR che si bloccano a vicenda, quindi i tempi vengono alterati anche da questo.

Se vuoi una precisione maggiore, puoi usare il timer 2 tramite il modulo Real-Time Counter dell'Atmega328 collegato ad un quarzo esterno da 32768 Hz. Lavorando con uno standalone puoi disattivare il timer 0 e lasciar lavorare solo il timer 2 impostato per avere 1 overflow ogni millisecondo. A questo punto il cronometro sarebbe molto preciso.