Skip to main content

Bucles y eventos de tiempo: un termómetro

El siguiente programa proporcionará el valor numérico de la temperatura ambiente en grados Celsius cada vez que se pulse el botón A. La variable temperatura (ºC) se encuentra disponible en el menú Entrada.

Termómetro de pulsador.png

El evento al iniciar comienza encendiendo un punto de la matriz de LED a modo de piloto de funcionamiento. El brillo se ajusta a un valor bajo para conseguir un bajo consumo de energía. Cada vez que ocurre un evento del tipo al presionarse el botón A se sube el brillo de la pantalla, se muestra la temperatura mediante una cadena de texto deslizante y se vueve a encender el piloto de funcionamiento con un brillo bajo.

La temperatura mostrada será algo superior a la ambiental. Esto ocurre porque el sensor de temperatura se encuentra en el microprocesador y éste se calienta ligeramente cuando la placa está en funcionamiento. Martínez de Carvajal (2019) establece el error medio en 3ºC, por lo que habrá que restarse 3 al valor mostrado en pantalla para obtener la temperatura real. La manipulación de la placa con los dedos también contribuir al calentamiento y al error en la medida de la temperatura.

Podemos añadir un evento de tiempo para que el termómetro muestre la temperatura cada cierto tiempo. Para ello debemos usar el evento cada...ms, dentro del menú Bucles.

Evento de tiempo temperatura.png

Ahora, cada 30000 ms o 30 segundos el programa subirá el brillo de pantalla y mostrará la tenperatura aunque no hayamos pulsado el botón A.

Podemos mejorar un poco más el programa mostrando la temperatura tres veces cada 30 segundos. Podríamos repetir sin más la sentencia mostrar cadena temperatura (ºC) tres veces, pero en su lugar vamos a usar un bucle del tipo repetir...veces , que también se encuentra en el menú Bucles.

Anidamiento temperatura.png

Nótese que el programa ejecuta un bucle cada 30 segundos, y que dentro de ese bucle se ejecuta otro bucle tres veces. Al hecho de introducir un bucle dentro de otro se le llama anidar bucles.