El tiempo ha sido uno de los conceptos que más quebraderos de cabeza ha proporcionado a filósofos y físicos. Recordemos que hace siglos estas dos profesiones se confundían. Los primeros físicos eran filósofos y aquellos que inauguraron el método científico se dieron cuenta de las implicaciones filosóficas del tiempo.

Un fascinante ejemplo, que da una idea de su genialidad, es el propio Newton, que ya puso en duda la inmediatez de su concepto de acción a distancia para su Ley de Gravitación Universal.

Pues bien, esta entrada la dedicaremos a ver cómo podemos medir el tiempo. Uno de los «sensores» más interesantes y útiles en los proyectos de arduino está dentro de la propia placa. Es el «cronómetro», accesible mediante programación a través de la instrucción millis(), en código y de diversas formas en los distintos métodos de programación por bloques.

En qué consiste y cómo se usa

Cuando arduino arranca, pone en marcha un contador de tiempo interno que no se detiene (salvo que se dé una orden de reset, en cuyo caso sigue sin detenerse, pero se pone a cero). Es decir, dentro de nuestra placa de arduino hay un cronómetro. Arduino nos permite acceder al contenido ese reloj, lo que ofrece una herramienta de gran valor para nuestros proyectos y programas.

Cuando trabajamos con sensores o «información de exterior», debemos definir una variable para almacenar la información. De forma similar, para poder utilizar el tiempo, debemos guardarlo en una variable. Ver el segundo programa, más abajo.

Usando el cronómetro para hacer parpadear un LED

Invariablemente, el primer programa que se enseña a los principiantes es hacer parpadear (blink) un LED. He aquí el programa con visualino, utilizando bloques:

Los bloques esperar(ms) detienen la ejecución de las siguientes instrucciones del programa. Es preciso que pase 1 segundo (en el caso mostrado) para que arduino ejecute la siguiente instrucción. Este programa se puede subir a la placa directamente y ver cómo el LED integrado (pin número 13) parpadea, sin necesidad de cablear ningún elemento adicional.

Veamos cómo hacer un programa de parpadeo, pero sin utilizar la instrucción «espera(ms)» :

Este programa hace lo mismo que el anterior. Almacenamos un valor inicial de tiempo y lo vamos comparando con el cronómetro (tiempo real); cuando la comparación exceda 1 segundo, almacenamos el tiempo real en la variable de comparación y repetimos el ciclo. ¿Cuál es su ventaja?. No aparece la instrucción esperar(ms), por lo que el parpadeo de un LED no entorpece la ejecución del resto del programa.

Podéis ver otros ejemplos en los que hemos hecho uso de esta interesante función (millis). Primero, para reproducir un experimento similar al que hizo Galileo hace tiempo y también para obtener el valor de la aceleración de la gravedad, midiendo el período de oscilación de un péndulo simple.

(fotografía de protada, Geralt, pixabay.com)