Buenos días gente! Espero estén bien.
Tengo un pequeño pero gran problema
El tema es el siguiente:
La idea es medir el tiempo que tarda la ejecución de un bloque de código a través de la función millis, luego convertirlo a través de una división en segundos (aunque en realidad necesito el tiempo en minutos, pero ya en segundos está el problema).
Explicación del programa:
En la primera línea guardo el tiempo con millis, sucede el bloque, y al final guardo el tiempo de nuevo con un millis 2. Luego realizo la resta entre estos, para obtener el tiempo que tomó la ejecución de dicho código. Hasta acá todo bien.
Para la conversión a segundos necesito dividirlo por 1000, corroborando con el monitorSerie, la diferencia de tiempo en milisegundos corresponde con el bloque, pero en la conversión surge el problema, y es que los números después de la coma se quedan en cero, solo es correcto el número entero.
Probé con diferentes tipos de variables. También probé en solo dividirlo por 10 y no por 1000, pero tampoco. La verdad no sé que hacer, no es un código complejo, pero el problema está. Estoy usando un Arduino UNO genérico.
Agradecería cualquier opinión, estoy trabajando en un proyecto y no pensé atascarme en este punto, busqué bastante pero no encontré la solución.
Dejo el sketch adaptado con contenido general, para no poner el código específico que estoy usando y hacerlo más simple.
Desde ya muchas gracias, Saludos!!
unsigned long tiempo1 = 0;
unsigned long tiempo2 = 0;
unsigned long deltaTiempo = 0;
int led=13;
float tiempoS=0;
void setup (){
pinMode (led, OUTPUT);
Serial.begin(9600);
}
void loop() {
tiempo1=millis();
// Bloque de código a medir
digitalWrite (led, HIGH);
delay (100);
digitalWrite (led, LOW);
delay (100);
digitalWrite (led, HIGH);
delay (100);
digitalWrite (led, LOW);
delay (100);
// Fin de bloque a medir
tiempo2=millis();
deltaTiempo=tiempo2-tiempo1;
Serial.print ("Dif. de tiempo(ms):");
Serial.println(deltaTiempo);
tiempoS = ((float) deltaTiempo / 1000);
Serial.print ("Tiempo en Segundos:");
Serial.println(tiempoS, 4);
}