Skip to content

Atividade

Registador de temperaturas máximas e mínimas

Avançado | Python | Botões, Pinos, Sensor de temperatura, Tela de LED | Entrada/saída, Manipulação de dados, Tipos de dados, Variáveis

Passo 1:Projeto

O que é?

Transforme seu micro:bit em um registrador de dados autônomo que registra leituras de temperatura máxima e mínima e as armazena para manter os dados mesmo que as baterias acabem ou que você desconecte a 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 armazenamento não volátil que permanece no seu micro:bit mesmo quando a energia é removida
  • Como lidar com erros em programas Python
  • Comoconverter variáveis ​​numéricas em strings e vice-versa

O que você precisa

  • Um micro:bit
  • bateria opcional

Como usá-lo

  • Baixe o arquivo de programa .hex e atualize-o no seu micro:bit.
  • Se você tiver uma bateria, conecte-a e deixe o micro:bit em algum lugar onde a temperatura varie. Você pode testá-lo colocando-o fora ou na geladeira e deixando-o por alguns minutos.
  • Agite para mostrar a temperatura atual.
  • Pressione o botão A para mostrar a temperatura mínima registrada.
  • Pressione o botão B para mostrar a temperatura máxima registrada.
  • Pressione GND e pino 2 ao mesmo tempo com os dedos para redefinir a temperatura máxima e mínima para a temperatura atual.

Passo 2: É 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 armazena suas leituras mesmo quando a energia é desconectada do seu micro:bit. Isso é feito armazenando as leituras no armazenamento não volátil. Esta é a memória do computador que mantém seu conteúdo quando a energia é desligada, assim como o seu micro:bit mantém um programa em que você atualizou ao desconectá-lo do computador.

Ele 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 rastrear e comparar a temperatura:

  • currentTemp é a leitura atual da temperatura do sensor de temperatura
  • max é a temperatura máxima. É atribuído um novo valor se a temperatura atual for maior que (>) o valor atual de max.
  • min é a temperatura mínima. Atribui-se-lhe um novo valor se a temperatura atual for mais baixa que (<) o valor atual de min.

Duas funções, get_nv_data e 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:

  • 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 uma leitura de temperatura, em uma sequência de texto para que possa ser salva em um arquivo de texto.

As funções usam try e except 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, por exemplo, quando você o executa pela primeira vez, ele define as variáveis max e min como a temperatura atual.

A parte principal do programa é executada dentro dowhile True: loop. Se comporta como o bloco infinito do MakeCode.

Passo 3: Vamos melhorar

  • 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 deslocamento ao programa subtraindo a diferença da leitura de temperature().
  • Converta o programa para registrar diferentes tipos de dados, como forças medidas pelo acelerômetro.
  • Adicione funcionalidade de rádio para também enviar dados para outro micro:bit em outro local.
Saiba mais sobre o armazenamento de dados em Python