# Registro automático de datos ambientales

Para ilustrar el funcionamiento de la biblioteca **<span style="color: rgb(22, 145, 121);">datalogger</span>** vamos a programar un **registrador quinceminutal** de temperatura y luminosidad ambiental.

Para inicializar el registro de datos o **log** tendremos que añadir dos bloques dentro del evento <span style="color: rgb(53, 152, 219);">**al** **iniciar**</span>. El bloque <span style="color: rgb(22, 145, 121);">**set timestamp hours**</span> añadirá el tiempo, expresado en horas, en las celdas de la primera columna del **log**. **<span style="color: rgb(22, 145, 121);">Set columns</span>** creará dos nuevas columnas en el **log**, una llamada **<span style="color: rgb(22, 145, 121);">Luminosidad</span>** y otra llamada <span style="color: rgb(22, 145, 121);">**Temperatura**</span>. Los botones **<span style="color: rgb(22, 145, 121);">+</span>** y <span style="color: rgb(22, 145, 121);">**-**</span> sirven, respectivamente, para añadir o quitar columnas de datos.

[![Data04.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data04.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data04.png)

Cada vez que se ejecute el evento <span style="color: rgb(45, 194, 107);">**cada...ms**</span> grabaremos una línea de datos en el **log**. El evento se ejecuta cada 60000 x 15 ms, es decir, cada 15 minutos. El bloque operador **<span style="color: rgb(132, 63, 161);">x</span>** se encuentra en el menú **<span style="color: rgb(132, 63, 161);">Matemática</span>**. Los valores que van a ser grabados en las celdas de las dos columnas son el <span style="color: rgb(185, 106, 217);">**nivel de luz**</span> y la **<span style="color: rgb(185, 106, 217);">temperatura (ºC)</span>**, del menú **<span style="color: rgb(185, 106, 217);">Entrada</span>**.

[![Data05.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data05.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data05.png)

Añadiremos un evento para parpadee una luz a modo de testigo o piloto de funcionamiento. Cada segundo, el <span style="color: rgb(224, 62, 45);">**LED**</span> central de la matriz alternará su estado entre encendido y apagado. El bloque <span style="color: rgb(132, 63, 161);">**invertir**</span> <span style="color: rgb(132, 63, 161);">**x...y...**</span> se encuentra en el menú **<span style="color: rgb(132, 63, 161);">LED</span>**.

[![Data06.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data06.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data06.png)

Una vez compuestos los tres bloques de código, el **simulador de Make Code** nos ofrece la posibilidad de asignar valores a las lecturas de la temperatura y del nivel de luz.

[![Data07.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data07.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data07.png)

Un botón en la parte inferior, etiquetado como **Show data Simulator**, da acceso a los datos simulados del registro.

![Data08.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data08.png)

En ocaciones resulta conveniente **iniciar y finalizar la captura de datos manualmente**, por ejemplo, pulsando un botón. Esta funcionalidad puede conseguirse creando una variable booleana, a la que vamos a llamar <span style="color: rgb(224, 62, 45);">**registrando**</span>. esta variable debe crearse desde el menú **<span style="color: rgb(224, 62, 45);">Variables</span>**.

[![Data15.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data15.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data15.png)

En primer lugar modificaremos el evento <span style="color: rgb(53, 152, 219);">**al iniciar**</span> para que asigne el valor <span style="color: rgb(35, 111, 161);">**falso**</span> a **<span style="color: rgb(224, 62, 45);">registrando</span>**, lo cual indicará que el registro de datos no debe estar activado cuando se encienda la placa. El menú lógica contiene la constante **<span style="color: rgb(35, 111, 161);">falso</span>**.

[![Data16.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data16.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data16.png)

Cada vez que se pulse el botón A, <span style="color: rgb(224, 62, 45);">**registrando**</span> cambiará de valor. Si tenía el valor **<span style="color: rgb(224, 62, 45);">falso</span>** cambiará a **<span style="color: rgb(224, 62, 45);">verdadero</span>** y vicerversa. El operador de negación **<span style="color: rgb(45, 194, 107);">no</span>**, del menú **<span style="color: rgb(45, 194, 107);">Lógica</span>**, lleva a cabo este cambio de valores. Además, haremos que micro:bit reproduzca un **breve sonido** como confirmación del cambio.

[![Data17.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data17.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data17.png)

Sólo cuando <span style="color: rgb(224, 62, 45);">**registrando**</span> sea **<span style="color: rgb(224, 62, 45);">verdadero</span>** guardaremos los datos.

[![Data19.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data19.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data19.png)

Por último, el piloto de funcionamiento del registrador debe apagar el <span style="color: rgb(224, 62, 45);">LED</span> central si es que **<span style="color: rgb(224, 62, 45);">registrando</span>** es **<span style="color: rgb(224, 62, 45);">falso</span>** y mantenerlo intermitente si es**<span style="color: rgb(224, 62, 45);"> verdadero</span>**<span style="color: rgb(224, 62, 45);"><span style="color: rgb(52, 73, 94);">.</span></span>

[![Data18.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/data18.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/data18.png)