Cronometro

Hola amigos,

       String s = "";
       int n = millis() / 1000;
       int segundos = n % 60  ;
       int minutos =  n / 60  ;
       if(segundos < 10){
        s = String(minutos) + ":0" + String(segundos);
        }else{
         s = String(minutos) + ":" + String(segundos);
        }
       lcd.setCursor(0, 0);
       lcd.print(s) ;    
   }

Quiero agregarle horas, minutos, y segundos a este codigo.
Del modo que esta ahora solo cuenta segundos y minutos.
Y cuando llega a los 60 minutos, no los transforma en hora,
Si no que este continua con 61, 62, 63, 500 minutos, etc.
He estado usando Google para comvertir minutos a horas.
Les estare muy agradecido si alguien pudiera ayudarme.
Gracias de ante mano.

Pierro

De lo daré de una forma incluso más eficiente y con milisegundos incluidos:

char pantalla[17]; // Asumiendo LCD de 16 columnas
unsigned long t = millis();

unsigned int ms = t % 1000;
t /= 1000;
byte s = t % 60;
t /= 60;
byte m = t % 60;

sprintf(pantalla, "%d:%02d:%02d.%03d", t / 60, m, s, ms);
lcd.setCursor(0, 0);
lcd.print(pantalla);

WOW! Compañero :slight_smile: te estoy muy agradecido por tu gran aporte y ayuda que me has brindado, el código funciona de lo mas perfecto. el único error que se produce a la hora de cargarlo es el siguiente:

warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=]
sprintf(pantalla, "%d:%02d:%02d.%03d", t / 60, m, s, ms);
                                              ^
warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=]

Pero permite que el codigo sea guardado y es funcionable, asi que no parece afectarle en nada.
Soy nuevo en el foro, como puedo marcar la pregunta como resuelta?
Gracias nuevamente.

Pierro

Coloca %ld en lugar de %d dentro del sprintf

Genial!!! surbyte, ahora no se produce ningún error! todo corre de lo mas limpio y estable. nunca me había sentido tan contento :slight_smile: gracias compañeros, gracias por toda su ayuda y soporte. estoy inmensamente agradecido, mis cordiales saludos a todos.

Pierro