Passo 1: Faz tu mesmo
O que é isto?
Converte o teu micro:bit numa máquina registadora independente que regista leituras de temperaturas máximas e mínimas, e grava-as de maneira a ficar com os dados guardados mesmo se fica sem pilhas ou se o desligas da eletricidade
É um programa em Python, mas não tens de saber nada de Python para o usar.
O que é que vais aprender
- Como usar Python para ler e escrever dados num armazenamento volátil que se mantem no teu micro:bit mesmo quando a energia é desligada
- Como gerir erros em programas Python
- Como converter variáveis numéricas em strings e vice-versa
Do que é que precisas
- Um micro:bit
- suporte de pilhas opcional
Como usá-lo
- Faz download do ficheiro .hex e descarrega-o no teu micro:bit.
- Se tiveres um suporte de pilhas, liga-o e deixa o micro:bit num sitio onde haja variações de temperatura. Podes testá-lo pondo-o por uns minutos do lado de fora ou mesmo dentro de um frigorífico.
- Abana-o para mostrar a temperatura atual.
- Carrega no botão A para mostrar a temperatura mínima registada.
- Carrega no botão B para mostrar a temperatura máxima registada.
- Carrega nos pins GND e 2 ao mesmo tempo com os teus dedos para reiniciar a leitura das temperaturas máxima e mínimas atuais.
Passo 2: Cria o teu código
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
Como é que funciona
Esta máquina registadora grava as leituras mesmo se a energia for desligada do teu micro:bit. Isto acontece porque as leituras são guardadas num armazenamento volátil. Esta é a memória do computador que guarda os conteúdo quando a energia é desligada, a mesma que o micro:bit usa quando guarda o programa que fica registado na última vez que o desligaste do computador.
Os dados ficam gravados no teu micro:bit em dois ficheiros de texto chamados min.txt
e max-txt
, que o programa Python consegue ler e atualizar.
O programa usa três variáveis para registar e comparar a temperatura:
currentTemp
é a leitura da temperatura atual do sensor de temperatura integrado do micro:bitmax
é a temperatura máxima. Um novo valor é atribuido se a temperatura atual foi maior que (>) o valor atual demax
.min
é a temperatura mínima. Atribui-se-lhe um novo valor se a temperatura atual for mais baixa que (<) o valor atual demin
.
Duas funções, get_nv_data
e set_nv_data
, ler e escrever dados para o ficheiros de texto não voláteis. Estas funções convertem números em texto e vice-versa:
int()
converte texto (também chamado string) numa variável númerica (integral) que podemos usar para comparar com a temperatura atual.str()
converte uma variável numérica, como a leitura de temperatura, num string de texto que pode ser guardado como ficheiro de texto.
As funções usam tentativa
e excepto
para detectar erros ao ler ou escrever ficheiros de dados. Se não existem ficheiros gravados com temperaturas mínimas e máximas, quando ligas pela primeira vez, por exemplo, ele estabelecer as variáveis max
e min
como temperatura atual.
A parte principal do programa corre dentro do loop while True:
(enquanto Verdadeiro). É equivalente ao bloco forever (para sempre) no MakeCode.
Passo 3: Melhora-o
- O sensor de temperatura encontra-se dentro do processador do micro:bit e costuma dar leituras de temperatura mais altas do que as do ar circundante. Usa um termómetro normal para ver a diferença de temeperaturas e compensa os valores subtraindo o valor da leitura
temperature()
- Converte o programa para registar diferentes tipos de dados, como a medida de força do acelerómetro.
- Usa a função rádio para enviar também dados para outro micro:bit noutra localização.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.