Skip to content

Atividade

Registrador de temperaturas máximas e mínimas

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

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
  • 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 de max;
  • min é variável que armazena a temperatura mínima, cujo valor é atualizado se a temperatura atual for mais baixa (<) que o valor atual de min.

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:

  • int() converte texto (também chamado de string) numa variável númerica (integer) 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 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.
Saiba mais sobre o armazenamento de dados em Python