Skip to content

Aktivnost

Uređaj za bilježenje najviše i najniže temperature

Napredni | Python | Izvodi (pinovi), LED zaslon, Senzor temperature, Tipke | Rukovanje podacima, Tipovi podataka, Ulaz (Input)/izlaz (Output), Varijable

1. korak: Napravi

Što je to?

Od svog micro:bita napravi samostalni zapisivač podataka koji bilježi najviša i najniža očitanja temperature i sprema ih te tako čuva podatke čak i ako se potroše baterije ili isključi napajanje.

To je program u Pythonu, možeš se njime služiti bez ikakva znanja o Pythonu.

Što ćeš naučiti

  • Kako koristiti Python za učitavanje i upisivanje podataka u postojanu memoriju koja ostaje u micro:bitu čak i kad se prekine napajanje
  • Kako postupati s greškama programirajući u Pythonu
  • Kako pretvarati numeričke vrijednosti u nizove znakova i obratno

Što ti treba

  • micro:bit
  • baterije, prema potrebi

Kako koristiti

  • Preuzmi program u obliku .hex datoteke i flashaj ga u micro:bit.
  • Ako imaš baterije, pričvrsti ih na micro:bit i ostavi sve negdje gdje će se temperatura mijenjati. Možeš ga testirati tako da ga ostaviš vani ili u frižideru na nekoliko minuta.
  • Protresi ga da pokaže trenutnu temperaturu.
  • Pritisni tipku A da pokaže najnižu izmjerenu temperaturu.
  • Pritisni tipku B da pokaže najvišu izmjerenu temperaturu.
  • Pritisni istovremeno pinove GND i 2 kako bi poništio izmjereno i postavio na trenutnu temperaturu.

2. korak: Kodiraj

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)

Kako to radi

Ovaj uređaj za bilježenje podataka sprema podatke čak i kad je micro:bitu isključeno napajanje. To radi tako da pohranjuje podatke u postojanu memoriju. To je računalna memorija čiji sadržaj ostaje i kada se isključi napajanje, baš kao što program koji si preuzeo (flashao) u u micro:bit ostaje u njemu i kada ga odvojimo od računala.

Podaci se spremaju u micro:bit u dvije tekstualne datoteke nazvane min.txt i max.txt koje se mogu pročitati i ažurirati programom u Pythonu.

Za praćenje i usporedbu temperatura program koristi tri varijable:

  • TempSada je očitanje temperature sa senzora za temperaturu ugrađenog u micro:bit.
  • max je najviša temperatura. Ova varijabla dobiva novu vrijednost ako je trenutačna temperatura viša (>) od trenutačne vrijednosti max.
  • min je najniža temperatura. Ova varijabla dobiva novu vrijednost ako je trenutačna temperatura niža (<) od trenutačne vrijednosti min.

Dvije funkcije, get_nv_data i set_nv_data, čitaju i pišu numeričke podatke u neizbrisive tekstualne datoteke. Ove funkcije pretvaraju numeriku u tekst i obratno:

  • int() pretvara tekst (koji se zove i string) u numeričku (integer) varijablu koju možemo usporediti s trenutačnom temperaturom.
  • str() pretvara numeričku varijablu, poput očitanja temperature, u niz tekstualnih znakova koji se mogu pohraniti u tekstualnu datoteku.

Funkcije koriste probaj i izuzmi kako bi registrirale greške pri čitanju ili pisanju datoteka. Ako datoteka s najvišom i najnižom vrijjednosti temperature ne postoji, primjerice ako se mjerenje izvodi prvi put, tada se varijable max i min postavljaju na trenutačnu temperaturu.

Glavni dio programa odvija se unutar petlje while True:. Ponaša se poput beskonačnog bloka u MakeCodu.

3. korak: Unaprijedi

  • Micro:bitov senzor za temperaturu smješten je unutar procesora i njegova su očitanja najčešće viša od okoline teperature. Običnim termometrom izmjeri razliku u temperaturi pa u program uključi pomak koji se dobije kad se ta razlika odbije od očitanja temperature().
  • Promijeni program da bilježi različite podatke, primjerice sile izmjerene brzinomjerom.
  • Dodaj korištenje radija kako bi se podaci slali drugom micro:bitu na drugoj lokaciji.
Saznaj više o pohranjivanu podataka u Pythonu