Primeiro passo: o projeto
O que é?
Transforme seu micro:bit em um registrador de dados autônomo que registra as leituras de temperatura máxima e mínima, as quais são mantidas mesmo se as baterias acabarem ou se você desconectá-lo da energia.
É um programaPython , mas você não precisa entender nada sobre o Python para usá-lo.
O que você aprenderá:
- Como usar o Python para ler e gravar dados em dispositivos de armazenamento não volátil, isto é, que permanecem em seu micro:bit mesmo quando este é desconectado da energia;
- Como lidar com erros em programas Python;
- Como converter variáveis numéricas em strings e vice-versa.
Itens necessários:
- Um micro:bit;
- Conjunto de baterias (opcional).
Como usá-lo:
- Baixe o arquivo de programa .hex e o transfira para seu micro:bit;
- Se você tiver um conjunto de baterias (pilhas), conecte-o ao micro:bit e deixe-o em algum lugar onde haja variações de temperatura. Você pode fazer testes colocando o micro:bit fora da geladeira ou dentro dela por alguns minutos;
- Agite-o para mostrar a temperatura atual;
- Pressione o botão A para exibir a temperatura mínima registrada;
- Pressione o botão B para exibir a temperatura máxima registrada;
- Com os dedos, pressione os pinos GND e 2, ao mesmo tempo, e redefina a temperatura máxima e mínima para a temperatura atual.
Segundo passo: é hora de programar
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 funciona:
Este registrador de dados mantém suas leituras armazenadas mesmo quando a energia é desconectada do seu micro:bit. Isso acontece em razão do armazenamento não volátil das leituras. São as memórias de armazenamento não volátil do computador que armazenam seu conteúdo quando a energia é desligada. É assim que seu micro:bit mantém um programa na memória, mesmo quando você o desconecta do computador.
O programa armazena os dados no seu micro:bit em dois arquivos de texto chamados min.txt
e max.txt
, que o programa Python pode ler e atualizar.
O programa usa três variáveis para registrar e comparar a temperatura:
currentTemp
é a leitura atual da temperatura do sensor de temperatura integrado do micro:bit;max
é a variável que armazena a temperatura máxima. É atribuído um novo valor a ela se a temperatura atual for maior (>) que o valor atual demax
;min
é variável que armazena a temperatura mínima, cujo valor é atualizado se a temperatura atual for mais baixa (<) que o valor atual demin
.
Duas funções, a get_nv_data
e a set_nv_data
, leem e gravam dados numéricos nos arquivos de texto não voláteis. Essas funções convertem números em texto e vice-versa:
- A função
int()
converte texto (também chamado de string) numa variável númerica (integer) que podemos usar para comparar com a temperatura atual; - A função
str()
converte uma variável numérica, como uma leitura de temperatura, em uma sequência de texto para poder ser salva em um arquivo de texto.
As funções usam try (tratamento)
e except (exceções)
para detectar erros ao ler ou gravar os arquivos de dados. Se não houver um arquivo de texto salvo com as temperaturas máxima e mínima ao executar o programa pela primeira vez, ele define as variáveis max
e min
com a temperatura atual.
A parte principal do programa é executada dentro da estrutura de repetição (loop) while True (enquanto verdadeiro)
, a qual se comporta como o bloco forever (para sempre) do MakeCode.
Terceiro passo: vamos deixar o código ainda melhor
- 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. Meça a diferença usando um termômetro normal e adicione um ajuste ao programa que subtraia a diferença da leitura da
temperature()
; - Converta o programa para registrar diferentes tipos de dados, como as forças medidas pelo acelerômetro;
- Adicione funcionalidade de rádio para também enviar dados para outro micro:bit em outro local.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.