Skip to content

Atividade

Registrador de temperatura máxima e mínima

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from microbit import *

# function to read data file:
def get_nv_data(name):
    try:
        with open(name) as f:
            v = int(f.read())
    except OSError:
        v = temperature()
        try:
            with open(name, 'w') as f:
               f.write(str(v))
        except OSError:
            display.scroll('Cannot create file %s' % name)

    except ValueError:
        display.scroll('invalid data in file %s' % name)
        v = temperature()

    return v

# function to write data file:
def set_nv_data(name, value):
    try:
        with open(name, 'w') as f:
            f.write(str(value))
    except OSError:
        display.scroll('Cannot write to file %s' % name)

min = get_nv_data('min.txt')
max = get_nv_data('max.txt')

while True:
    currentTemp = temperature()
    if currentTemp < min:
        min = currentTemp
        set_nv_data('min.txt', min)
    if currentTemp > max:
        max = currentTemp
        set_nv_data('max.txt', max)
    if accelerometer.was_gesture('shake'):
        display.scroll(currentTemp)
    if button_a.was_pressed():
        display.scroll(get_nv_data('min.txt'))
    if button_b.was_pressed():
        display.scroll(get_nv_data('max.txt'))
    if pin2.is_touched():
        display.scroll('clearing data')
        set_nv_data('min.txt', currentTemp)
        set_nv_data('max.txt', currentTemp)

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. Recebe um novo valor se a temperatura atual for menor 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 de string) em uma variável numérica (número inteiro) 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 do micro:bit está dentro do processador e geralmente fornece leituras de temperatura mais altas que o ar a sua volta. 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