Stap 1: Maak het
Wat is het?
Verander je micro:bit in een op zichzelf staande datalogger die maximale en minimale temperatuurmetingen registreert en opslaat zodat de gegevens worden bewaard, zelfs als de batterijen leeg raken of je de stroom loskoppelt.
Het is een Python programma, maar je hoeft niets te begrijpen over Python om het te gebruiken.
Wat je gaat leren
- Python gebruiken om gegevens te lezen en te schrijven naar niet-vluchtige opslag die op je micro:bit blijft, zelfs wanneer de stroom is verwijderd
- Hoe je kan omgaan met fouten in Python programma's
- Hoe numerieke variabelen naar strings en weer terug te converteren
Benodigdheden
- Een micro:bit
- optioneel batterijpakket
Hoe het te gebruiken
- Download het .hex programma bestand en flash het op je micro:bit.
- Als je een batterij pakket hebt, bevestig deze dan en laat de micro:bit ergens liggen waar de temperatuur kan variëren.
Je zou het kunnen testen door het buiten of in de koelkast te zetten en een paar minuten te laten staan. - Schud het om de huidige temperatuur weer te geven.
- Druk op knop A om de minimale opgenomen temperatuur weer te geven.
- Druk op knop B om de maximaal geregistreerde temperatuur weer te geven.
- Druk met uw vingers GND en pin 2 tegelijkertijd om de maximum- en minimumtemperatuur terug te zetten naar de huidige temperatuur.
Step 2: Codeer het
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
Zo werkt het
Deze datalogger slaat zijn meetwaarden op, zelfs wanneer de stroom is losgekoppeld van uw micro:bit. Het doet dit door de metingen op te slaan in niet-vluchtige opslag. Dit is computergeheugen dat de inhoud behoudt wanneer de stroom wordt uitgeschakeld, net zoals je micro:bit een programma bewaart dat je erop hebt geflashed wanneer je het loskoppelt van de computer.
Het slaat de gegevens op je micro:bit op in twee tekstbestanden genaamd min.txt
en max.txt
die het Python programma kan lezen en bijwerken.
Het programma gebruikt drie variabelen om de temperatuur te volgen en te vergelijken:
huidigeTemperatuur
is de huidige temperatuurmeting van de ingebouwde temperatuur sensor van de micro:bitmax
is de maximale temperatuur. Deze krijgt een nieuwe waarde toegewezen als de huidige temperatuur groter is dan (>) de huidige waarde vanmax
.min.
is de minimale temperatuur. Deze krijgt een nieuwe waarde toegewezen als de huidige temperatuur groter is dan (<) de huidige waarde vanmin
.
Twee functies, get_nv_data
en set_nv_data
, lezen en schrijven numerieke gegevens naar de niet vluchtige tekst bestanden. Deze functies zetten getallen om naar tekst en terug:
int()
converteert tekst (ook wel een string genoemd) naar een numerieke (integer) variabele die we kunnen gebruiken om te vergelijken met de huidige temperatuur.str()
converteert een numerieke variabele, zoals een temperatuurmeting, naar een tekstreeks zodat deze kan worden opgeslagen in een tekstbestand.
De functies gebruiken try
en except
om fouten op te vangen bij het lezen of schrijven van de gegevensbestanden. Als er geen tekstbestand is opgeslagen met de maximum- en minimumtemperaturen, bijvoorbeeld wanneer je het voor het eerst uitvoert, worden de max
en min
variabelen ingesteld op de huidige temperatuur.
Het grootste deel van het programma wordt uitgevoerd in de terwijl Waar:
lus. Dit gedraagt zich als het voor altijd blok in MakeCode.
Stap 3: Verbeter het
- De temperatuursensor van de micro:bit bevindt zich in de processor en geeft meestal temperatuurmetingen die hoger zijn dan de omringende lucht. Meet het verschil met een normale thermometer en voeg een compensatie toe aan het programma door het verschil af te trekken van de
temperatuur()
aflezing - Converteer het programma om verschillende soorten gegevens te loggen, zoals krachten gemeten door de acceleratiemeter.
- Radio functionaliteit toevoegen om gegevens ook te verzenden naar een andere micro:bit op een andere locatie.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.