Skip to content

Activitat

Registrador de temperatura màxima mínima

Expert | Python | Botons, Pantalla LED, Pins, Sensor de temperatura | Entrada/sortida, Tipus de dades, Tractament de dades, Variables

Pas 1: Crea-ho

En què consisteix?

Converteix la micro:bit en un enregistrador de dades autònom que mesura les temperatures màxima i mínima i les guarda perquè conservi les dades fins i tot quan s'esgoten les bateries o es desconnecta l'alimentació.

És un programa en Python, però no cal saber Python per utilitzar-lo.

Què aprendràs

  • Com utilitzar Python per llegir i escriure dades a la memòria no volàtil perquè es conservin fins i tot quan es desconnecta l'alimentació.
  • Com gestionar els errors en programes de Python
  • Com convertir variables numèriques a cadenes de caràcters i a l'inrevés.

Què necessites

  • Una micro:bit
  • Piles opcionals

Instruccions

  • Transfereix l'arxiu del programa.hex a la teva micro:bit.
  • Si tens piles, connecta-les i deixa la micro:bit a un lloc on hi hagi canvis de temperatura. Pots comprovar-ne el funcionament deixant-la a l'exterior o posant-la a dins de la nevera uns minuts.
  • Sacseja-la per mostrar la temperatura.
  • Prem el botó A per mostrar la temperatura mínima enregistrada.
  • Prem el botó B per mostrar la temperatura màxima enregistrada.
  • Toca alhora GND i el pin 2 amb els dits per esborrar les temperatures màxima i mínima enregistrades i reiniciar-les a la temperatura actual.

Pas 2: Programa-ho

1from microbit import *
2
3# function to read data file:
4def get_nv_data(name):
5    try:
6        with open(name) as f:
7            v = int(f.read())
8    except OSError:
9        v = temperature()
10        try:
11            with open(name, 'w') as f:
12                f.write(str(v))
13        except OSError:
14            display.scroll('Cannot create file %s' % name)
15
16    except ValueError:
17        display.scroll('invalid data in file %s' % name)
18        v = temperature()
19
20    return v
21
22# function to write data file:
23def set_nv_data(name, value):
24    try:
25        with open(name, 'w') as f:
26            f.write(str(value))
27    except OSError:
28        display.scroll('Cannot write to file %s' % name)
29
30min = get_nv_data('min.txt')
31max = get_nv_data('max.txt')
32
33while True:
34    currentTemp = temperature()
35    if currentTemp < min:
36        min = currentTemp
37        set_nv_data('min.txt', min)
38    if currentTemp > max:
39        max = currentTemp
40        set_nv_data('max.txt', max)
41    if accelerometer.was_gesture('shake'):
42        display.scroll(currentTemp)
43    if button_a.was_pressed():
44        display.scroll(get_nv_data('min.txt'))
45    if button_b.was_pressed():
46        display.scroll(get_nv_data('max.txt'))
47    if pin2.is_touched():
48        display.scroll('clearing data')
49        set_nv_data('min.txt', currentTemp)
50        set_nv_data('max.txt', currentTemp)
51

Com funciona

Aquest enregistrador de dades desa les lectures fins i tot quant l'alimentació està desconnectada de la micro:bit. Ho fa desant les lectures en una memòria no volàtil. Aquest es la memòria d'ordinador que manté el seu contingut quan l'alimentació està apagada, igual que la teva micro:bit que manté un programa que l'hi has transferit quan el desendolles de l'ordinador.

Desa les dades en la teva micro:bit en dos arxius de text anomenats min.txt i max.txtque el Python pot llegir i actualitzar.

El programa fa servir tres variables per fer el seguiment i comparar la temperatura:

  • currentTemp és la lectura de la temperatura actual del sensor integrat de temperatura de la micro:bit
  • max és la temperatura màxima. L'hi és assignat un nou valor si la temperatura es més gran que (>) el valor actual de max.
  • min és la temperatura mínima. L'hi és assignat un nou valor si la temperatura actual is menor que (<) el valor actual de min.

Dues funcions, "get_nv_data" i "set_nv_data", llegeixen i escriuen dades numèriques als arxius de text no volàtils. Aquestes funcions converteixen nombres en text i al revés:

  • int() converteix text (també anomenada cadena) a una variable de nombre (enter) que podem fer servir per comparar amb la temperatura actual.
  • str() converteix una variable numèrica, com la lectura de la temperatura, a una cadena que pot ser per tant desada en un arxiu de text.

Les funcions utilitzen "try" i "except" per captar errors llegint o escrivint els arxius de dades. Si no hi ha un arxiu de text amb les temperatures màximes i mínimes, per exemple la primera vegada que executes el programa, estableix les variables max i min amb la temperatura actual.

La part principal del programa s'executa dins el bucle mentre Cert:. Aquest es comporta com el bloc per sempre en MakeCode.

Pas 3: Millora-ho

  • El sensor de temperatura de la micro:bit és a dins del processador i normalment dona una lectura de la temperatura més alta que l'aire del voltant. Mesura la diferència fent servir un termòmetre normal i afegeix una correcció al programa restant la diferència de la lectura de la "temperature()"
  • Converteix el programa per registrar diferents tipus de dades, com les forces mesurades per l'acceleròmetre.
  • Afegeix funcionalitat de ràdio també per enviar dades a una altra micro:bit d'un altre lloc.
Aprèn més sobre emmagatzemar dades a Python.