Skip to content

Actividad

Registrador de temperatura Max-min

Avanzado | Python | Botones, Pantalla LED, Pines, Sensor de temperatura | Entrada/salida, Manejo de datos, Tipos de datos, Variables

Paso 1: Hazlo

¿Qué es?

Convierte tu micro:bit en un registrador de datos autocontenido que registra las lecturas de temperatura máxima y mínima, y las almacena para que mantenga los datos incluso si las pilas se agotan o se desconecta la energía.

Es un programa de Python, pero no necesitas entender nada de Python para usarlo.

Qué aprenderás

  • Cómo usar Python para leer y escribir datos a almacenamiento no volátil que se mantiene en tu micro:bit incluso cuando se quita la energía
  • Cómo manejar los errores en programas Python
  • Cómo convertir variables numéricas a cadenas y viceversa

Qué necesitas

  • Un micro:bit
  • pilas (opcionales)

Cómo usarlo

  • Descargue el archivo de programa .hex y escribe en tu micro:bit.
  • Si tienes pilas, conéctalas y deja tu micro:bit en algún sitio donde la temperatura cambie notablemente. Puedes probarlo dejándolo en el exterior, o metiéndolo unos minutos a la nevera.
  • Agítalo para que muestre la temperatura actual.
  • Pulsa el botón A para que muestre la temperatura mínima registrada.
  • Pulsa el botón B para que muestre la temperatura máxima registrada.
  • Toca GND y el pin 2 a la vez con tus dedos para reiniciar la temperatura máxima y mínima y ponerlas a la temperatura actual.

Paso 2: Prográmalo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from microbit import *

# function to read data file:
def get_nv_data(name):
    try:
        with open(name) as f:
            v = int(f.read())
    except OSError:
        v = temperature()
        try:
            with open(name, 'w') as f:
               f.write(str(v))
        except OSError:
            display.scroll('Cannot create file %s' % name)

    except ValueError:
        display.scroll('invalid data in file %s' % name)
        v = temperature()

    return v

# function to write data file:
def set_nv_data(name, value):
    try:
        with open(name, 'w') as f:
            f.write(str(value))
    except OSError:
        display.scroll('Cannot write to file %s' % name)

min = get_nv_data('min.txt')
max = get_nv_data('max.txt')

while True:
    currentTemp = temperature()
    if currentTemp < min:
        min = currentTemp
        set_nv_data('min.txt', min)
    if currentTemp > max:
        max = currentTemp
        set_nv_data('max.txt', max)
    if accelerometer.was_gesture('shake'):
        display.scroll(currentTemp)
    if button_a.was_pressed():
        display.scroll(get_nv_data('min.txt'))
    if button_b.was_pressed():
        display.scroll(get_nv_data('max.txt'))
    if pin2.is_touched():
        display.scroll('clearing data')
        set_nv_data('min.txt', currentTemp)
        set_nv_data('max.txt', currentTemp)

Cómo funciona

Este registrador de datos almacena sus lecturas incluso cuando la energía se desconecta de tu micro:bit. Lo hace almacenando las lecturas en almacenamiento no volátil. Esta es la memoria del ordenador que guarda su contenido cuando se apaga, al igual que tu micro:bit guarda un programa que usted ha escrito cuando lo desenchufa del ordenador.

Almacena los datos en tu micro:bit en dos ficheros de texto llamados min.txt y max.txt que el programa Python puede leer y actualizar.

El programa utiliza tres variables para rastrear y comparar la temperatura:

  • currentTemp es la lectura de la temperatura actual del micro:bit incorporado sensor de temperatura
  • max es la temperatura máxima. Se le asigna un nuevo valor si la temperatura actual es mayor que (>) el valor actual de max.
  • min es la temperatura mínima. Se le asigna un nuevo valor si la temperatura actual es menor que (<) el valor actual de min.

Dos funciones, get_nv_data y set_nv_data, leer y escribir datos numéricos en los archivos de texto no volátiles. Estas funciones convierten los números a texto y viceversa:

  • int() convierte el texto (también llamado cadena) en una variable numérica (número entero) que podemos usar para comparar con la temperatura actual.
  • str() convierte una variable numérica, como una lectura de temperatura, en una cadena de texto para que pueda ser guardada en un archivo de texto.

Las funciones utilizan intento y excepto para detectar errores al leer o escribir los archivos de datos. Si no hay un archivo de texto guardado con las temperaturas máximas y mínimas, por ejemplo cuando lo ejecutas por primera vez, establece las variables max y min como la temperatura actual.

La parte principal del programa se ejecuta dentro del bucle mientras que True:. Esto se comporta como el bloque para siempre en MakeCode.

Paso 3: Mejóralo

  • El sensor de temperatura del micro:bit está dentro del procesador y suele dar lecturas de temperatura más altas que las del aire circundante. Mida la diferencia usando un termómetro normal y añada una compensación al programa restando la diferencia de la temperatura() lectura
  • Convierte el programa para registrar diferentes tipos de datos, como las fuerzas medidas por el acelerómetro.
  • Añadir la funcionalidad de radio para también enviar datos a otro micro:bit en otra ubicación
Aprenda más sobre el almacenamiento de datos en Python