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.txt
que 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.