Skip to content

Activité

Enregistreur de température Max-min

Avancé | Python | Boutons, Broches, Capteur de température, Écran LED | Entrée / Sortie, Gestion des données, Types de données, Variables

Étape 1 : Maîtrisez

Qu'est-ce que c'est ?

Transformez votre micro:bit en un enregistreur de données qui enregistre des relevés de température maximales et minimales, et les sauvegarde donc il garde les données même si les piles sont épuisées ou si vous déconnectez l'alimentation.

C'est un programme en Python, mais vous n'avez pas besoin de comprendre quoi que ce soit sur Python pour l'utiliser.

Ce que vous apprendrez

  • Comment utiliser Python pour lire et écrire des données sur stockage non volatile qui reste sur votre micro:bit même lorsque l'alimentation est interrompue
  • Comment gérer les erreurs dans les programmes Python
  • Comment convertir des variables numériques en chaînes de caractères et vice-versa

Ce dont vous aurez besoin

  • Un micro:bit
  • boîtier de piles optionnel

Comment l’utiliser 

  • Téléchargez le fichier .hex et flashez-le sur votre micro:bit.
  • Si vous avez un boîtier de piles, connectez-le et laissez le micro:bit quelque part où la température variera. Vous pouvez le tester en le mettant à l'extérieur ou dans un réfrigérateur pendant quelques minutes.
  • Secouez-le pour afficher la température actuelle.
  • Appuyez sur le bouton A pour afficher la température minimale enregistrée.
  • Appuyez sur le bouton B pour afficher la température maximale enregistrée.
  • Appuyez sur GND et sur la broche 2 en même temps avec vos doigts pour réinitialiser la température maximale et minimale à la température actuelle.

Étape 2 : Codez

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)

Comment ça marche

Cet enregistreur de données garde ses lectures même lorsque l'alimentation est déconnectée de votre micro:bit. Il le fait en sauvegardant les lectures dans le stockage non volatile. Il s'agit de la mémoire qui garde son contenu lorsque l'alimentation est éteinte tout comme votre micro:bit garde un programme que vous y avez chargé même après avoir débranché l’ordinateur.

Il stocke les données sur votre micro:bit dans deux fichiers textes appelésmin.txt et max.txt que le programme Python peut lire et mettre à jour.

Le programme utilise trois variables pour suivre et comparer la température :

  • currentTemp est le relevé de la température courante à partir du capteur de température
  • max est la température maximale. Cette variavle est assignée à une nouvelle valeur si la température actuelle est supérieure à (>) à la valeur actuelle de max.
  • min est la température minimale. Elle est assignée à une nouvelle valeur si la température actuelle est inférieure à (<) la valeur actuelle de min.

Deux fonctions, get_nv_data et set_nv_data, lisent et écrivent des données numériques dans les fichiers texte non-volatiles. Ces fonctions convertissent des nombres en texte et vice-versa :

  • int() convertit du texte (également appelé une chaîne de caractères) en une variable numérique (integer) que nous pouvons utiliser pour comparer avec le temperature courante.
  • str() convertit une variable numérique, comme une mesure de température, en une chaîne de caractères pour qu'elle puisse être enregistrée dans un fichier texte.

Les fonctions utilisent try et except pour attraper des erreurs lors de la lecture ou de l'écriture des fichiers de données. S'il n'y a pas de fichier texte enregistré avec les températures maximales et minimales, par exemple lorsque vous le lancez pour la première fois, il définit les variables max et min à la température actuelle.

La partie principale du programme s’exécute à l’intérieur de la boucle while True: Cela se comporte comme le bloc Pour toujours dans MakeCode.

Étape 3 : Améliorez

  • Le capteur de température du micro:bit est à l'intérieur du processeur et donne généralement des lectures de température plus élevées que celles de l'air ambiant. Mesurez la différence à l'aide d'un thermomètre normal et ajoutez un décalage au programme en soustrayant la différence de la température() lue
  • Convertissez le programme pour enregistrer autres types de données, telles que les forces mesurées par l'accéléromètre.
  • Ajoutez des fonctionnalités radio pour envoyer également des données à un autre micro:bit de trouvant à un autre endroit.
En savoir plus sur le stockage des données en Python