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
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
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 vrijednostimax
.min
je najniža temperatura. Ova varijabla dobiva novu vrijednost ako je trenutačna temperatura niža (<) od trenutačne vrijednostimin
.
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 okolne 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.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.