Mi primer proyecto por mi cuenta con el Arduino Duemilanove 328 + LCD DFRobot shield 2x16
mi propósito era hacer un medidor de tiempo entre dos pulsaciones.
(algo simple)
Tengo el problema de que si mido el tiempo con la función millis()
ésta me devuelve un numero long, y para mostrarlo en el LCD, debería convertirlo a cadena de caracteres (que no tengo idea de como hacerlo)
Alguno me puede orientar de como podría convertir milisegundos a cadena de caracteres legible x el humano (y mostrables en el LCD) ??
char* lapTime2String(unsigned long lapTime, byte precision) {
int minutes = lapTime / 60000; // 60000ms = 1 minute
int seconds = (lapTime % 60000) / 1000;
int milliseconds = lapTime % 1000; // 1000ms = 1 second
int tenths = milliseconds / 100;
int hundredths = milliseconds / 10;
char *pLapTimeStr;
pLapTimeStr = (char *)malloc(12*8*sizeof(char));
switch (precision) {
case 1:
sprintf(pLapTimeStr, "%01d.%02d.%d", minutes, seconds, tenths);
break;
case 2:
sprintf(pLapTimeStr, "%01d.%02d.%02d", minutes, seconds, hundredths);
break;
case 3:
sprintf(pLapTimeStr, "%01d.%02d.%03d", minutes, seconds, milliseconds);
break;
default:
sprintf(pLapTimeStr, "%01d.%02d.%d", minutes, seconds, tenths);
}
return(pLapTimeStr);
}
Le pasas el tiempo en milisegundos y la precisión que deseas (decimas, centesimas o milesimas de segundo). Te devuelve un puntero a caracteres con el texto.
Como ejemplo de como usar el puntero te pongo una función que saca el tiempo por el puerto serie: