lunes, 5 de octubre de 2015

[Lenguaje Arduino 09] Instrucciones de gestión de tiempo

Las instrucciones de gestión de tiempo no pertenecen a ningún objeto, así que se escriben directamente en el sketch:
  • millis(): devuelve el número de milisegundos (ms) desde que la placa Arduino empezó a ejecutar el sketch actual. Este número se reseteará a cero aproximadamente después de 50 días (cuando su valor supere el máximo permitido por su tipo, que es “unsigned long”). No tiene parámetros.
  • micros(): devuelve el número de microsegundos (μs) desde que la placa Arduino empezó a ejecutar el sketch actual. Este número –de tipo “unsigned long”– se reseteará a cero aproximadamente después de 70 minutos. Esta instrucción tiene una resolución de 4 μs (es decir, que el valor retornado es siempre un múltiplo de cuatro). Recordar que 1000 μs es un milisegundo y por tanto, 1000000 μs es un segundo. No tiene parámetros.
  • delay(): pausa el sketch durante la cantidad de milisegundos especificados como parámetro –de tipo “unsigned long”–. No tiene valor de retorno.
  • delayMicroseconds(): pausa el sketch durante la cantidad de microsegundos especificados como parámetro –de tipo “unsigned long”– . Actualmente el máximo valor que se puede utilizar con precisión es de 16383. Para esperas mayores que esta, se recomienda usar la instrucción delay(). El mínimo valor que se puede utilizar con precisión es de 3 μs. No tiene valor de retorno.
Ejemplo 11
Un código sencillo de alguna de las instrucciones anteriores es el siguiente.

unsigned long time;

void setup(){
        Serial.begin(9600);
}

void loop(){
        time = micros();
        Serial.println(time);
        delay(1000);
}


Si se ejecuta el código anterior se puede ver por el “Monitor Serial” cómo va aumentando el tiempo que pasa desde que se puso en marcha el sketch. El valor observado va aumentando aproximadamente un segundo cada vez.

Ejemplo 12
Otro código que muestra lo antes visto es el siguiente.

unsigned long inicio, fin, transcurrido;

void setup(){
        Serial.begin(9600);
}

void loop(){
        inicio=millis();
        delay(1000);
        fin=millis();
        transcurrido=fin-inicio;
        Serial.print(transcurrido);
        delay(500);
}


En el código anterior se puede ver una manera de contar el tiempo transcurrido entre dos momentos determinados. El procedimiento es guardar en una variable el valor devuelto por millis() en el momento inicial, y guardar en otra variable diferente el valor devuelto por millis() en el momento final, para seguidamente restar uno del otro y averiguar así el lapso de tiempo transcurrido (que en el ejemplo debería de ser de aproximadamente un segundo). Este cálculo en el código anterior se realiza cada medio segundo.




No olvides visitar la pestaña Tutoriales arduino y Lenguaje arduino, donde podrás encontrar la lista de tutoriales que he hecho hasta el momento. Como siempre muchas gracias por visitar mi blog y si tienen alguna consulta o consejo puede comentarlo por medio de este mismo blog.

No hay comentarios.:

Publicar un comentario