visualizzare millis() in un display da destra verso sinistra

Salve a tutti, non sò come devo fare per far avanzare il contatore da destra verso sinistra, cioè ho fatto un timer da 2 minuti che conta fino i centesimi di secondo, inizia a contare e quando arriva alla decina sposta l'unità verso destra mettendo la decina a sinistra, tutto ok, solo che quando riparte da 0 l'unità riparte da destra cosi si vede 10,20,30, ecc anzichè 01,02,03 ecc. Una soluzione è dire al display di cancellare lo 0 di destra quando arriva a 60 secondi per i secondi e 99 centesimi per i centesimi, ma guardandolo sembra una cosa anomala vedere l'allineamento del timer a sinistra, quindi chiedo aiuto se esiste qualche istruzione per risolvere questo inconveniente. Inserisco sotto la parte che utilizzo per la visualizzazione dei tempi:

onstop=digitalRead (pulonstop);
if(onstop==0){zero=millis()/10;}
centesimi=(millis()/10-zero);
   if(centesimi >98)   {zero=millis()/10;}
     lcd.setCursor(8, 2);lcd.print(centesimi);

per i secondi è uguale solo che millis è diviso per 1000
Se avete una soluzione diversa sono disponibile a qualsiasi consiglio.

Grazie

Ciao.
Non sono esperto, ma io ho risolto una cosa del genere facendo cosi’:

lcd.setCursor(8, 2);

if (centesimi<10){lcd.print('0');

        lcd.print(centesimi);

Ti stampa uno zero se il valore e’ minore di 10.

Riciao… Altra soluzione Bellissima che ho trovato adesso…

Devi aggiungere una funzione e definizione:

#include <avr/pgmspace.h>



 
#define lcdprint(format, ...) StreamPrint_progmem(lcd,PSTR(format),##__VA_ARGS__)
#define Streamprint(stream,format, ...) StreamPrint_progmem(stream,PSTR(format),##__VA_ARGS__)



void StreamPrint_progmem(Print &out,PGM_P format,...)
{
    char formatString[128], *ptr;
  strncpy_P( formatString, format, sizeof(formatString) ); // copy in from program mem
  formatString[ sizeof(formatString)-2 ]='\0';
  ptr=&formatString[ strlen(formatString)+1 ]; // our result buffer...
  va_list args;
  va_start (args,format);
  vsnprintf(ptr, sizeof(formatString)-1-strlen(formatString), formatString, args );
  va_end (args);
  formatString[ sizeof(formatString)-1 ]='\0';
  out.print(ptr);
}

Aggiunto questo hai una nuova istruzione:

		lcd.setCursor(0,0); 
                 lcd.print(centesimi);
		
		lcdprint("%02d",centesimi);

dove 02 indica che vuoi stampare 2 caratteri, e i mancanti scrivi 0
puoi omettere 0 e ti stampera caratteri vuoti.

puoi mettere anche piu’ parametri, io per esempio utilizzo:

		lcdprint("%02d:%02d:%2d",now.hour(),now.minute(),now.second());

la suddetta e’ presa dal link http://www.utopiamechanicus.com/article/low-memory-serial-print/
serve per la serial, ma l’ho modifacata per LCD in I2C e va’ benissimo.
Spero di essere stato utile
Ciao

Grazie mille!!!!!!! Grandioso!! Funziona!!!!
Grazie!
Grazie!

Grazie!

Grazie!

Grazie!