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)
51Com 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:bitmaxés la temperatura màxima. L'hi és assignat un nou valor si la temperatura es més gran que (>) el valor actual demax.minés la temperatura mínima. L'hi és assignat un nou valor si la temperatura actual is menor que (<) el valor actual demin.
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.
 
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.


