Cam 1: Gwneud
Beth yw e?
Troi eich micro:bit yn gofnodydd data hunangynhwysol sy'n cofnodi darlleniadau tymheredd uchaf ac isaf, ac yn eu cadw fel ei fod yn cadw'r data hyd yn oed os yw'r batrïau yn rhedeg allan neu os byddwch yn datgysylltu'r pŵer.
Rhaglen Python yw hi, ond nid oes angen i chi ddeall unrhyw beth am Python i'w defnyddio.
Beth fyddwch yn ei ddysgu
- Sut i ddefnyddio Python i ddarllen ac ysgrifennu data i storfa nad yw'n anweddol sy'n aros ar eich micro:bit hyd yn oed pan fydd y pŵer yn cael ei dynnu
- Sut i ddelio â gwallau mewn rhaglenni Python
- Sut i drosi newidynnau rhifyddol yn destun ac yn ôl eto
Beth sydd ei angen arnoch
- micro:bit
- pecyn batri opsiynol
Sut i'w ddefnyddio
- Lawrlwythwch ffeil .hex y rhaglen a'i fflachio ar eich micro:bit.
- Os oes gennych becyn batri, cysylltwch y pecyn a gadewch y micro:bit yn rhywle lle bydd y tymheredd yn amrywio. Gallech ei brofi trwy ei roi y tu allan neu mewn oergell a'i adael am ychydig funudau.
- Ysgwyd y micro:bit i ddangos y tymheredd presennol.
- Gwasgu botwm A i ddangos y tymheredd isaf a gofnodwyd.
- Gwasgu botwm B i ddangos y tymheredd uchaf a gofnodwyd.
- Gwasgu GND a phin 2 ar yr un pryd â'ch bysedd i ailosod y tymheredd uchaf ac isaf i'r tymheredd ar hyn o bryd.
Cam 2: Codio
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
Sut mae'n gweithio
Mae'r cofnodydd data hwn yn cadw ei ddarlleniadau hyd yn oed pan gaiff y pŵer ei ddatgysylltu o'ch micro:bit. Mae'n gwneud hyn wrth gadw'r darlleniadau mewn storfa nad yw'n anweddol. Mae hyn yn gof cyfrifiadur sy'n cadw ei gynnwys pan gaiff y pŵer ei ddiffodd, yn union fel mae eich micro:bit yn cadw rhaglen rydych wedi'i fflachio arno pan fyddwch yn ei ddad-blygio o'r cyfrifiadur.
Mae'n storio'r data ar eich micro:bit mewn dwy ffeil destun a elwir min.txt
a max.txt
y gall rhaglen Python ei ddarllen a'i ddiweddaru.
Mae'r rhaglen yn defnyddio tri newidyn i olrhain a chymharu'r tymheredd:
currentTemp
yw darlleniad y tymheredd presennol o synhwyrydd tymheredd parod y micro:bitmax
yw'r tymheredd uchaf. Rhoddir gwerth newydd i hwn os yw'r tymheredd presennol yn uwch na (>) gwerth presennolmax
.min
yw'r tymheredd isaf. Rhoddir gwerth newydd i hwn os yw'r tymheredd presennol yn is na (<) gwerth presennolmin
.
Mae dwy swyddogaeth, get_nv_data
a set_nv_data
, yn darllen ac ysgrifennu data rhifyddol i'r ffeiliau testun nad ydynt yn anweddol. Mae'r swyddogaethau hyn yn trosi rhifau yn destun ac yn ôl:
- Mae
int()
yn trosi testun (a elwir hefyd yn linyn testun) i newidyn rhifol (cyfanrif) y gallwn ei ddefnyddio i'w gymharu â'r tymheredd presennol. - Mae
str()
yn trosi newidyn rhifol, fel darlleniad tymheredd, yn linyn testun er mwyn ei gadw mewn ffeil destun.
Mae'r swyddogaethau'n defnyddio try
ac except
i ganfod gwallau wrth ddarllen neu ysgrifennu'r ffeiliau data. Os nad oes ffeil testun wedi'i chadw sy'n cynnwys y tymheredd uchaf ac isaf, er enghraifft pan fyddwch yn ei rhedeg am y tro cyntaf, bydd yn gosod y newidynnau max
a min
i fod y tymheredd presennol.
Mae prif ran y rhaglen yn rhedeg tu mewn y ddolen tra'n Wir:
. Mae hon yn ymddwyn fel y bloc am byth yn MakeCode.
Cam 3: Gwella
- Mae synhwyrydd tymheredd y micro:bit y tu mewn i'r prosesydd ac fel arfer mae'n rhoi darlleniadau tymheredd yn uwch na'r aer o'i amgylch. Mesur y gwahaniaeth gan ddefnyddio thermomedr arferol ac ychwanegu cilosodiad at y rhaglen drwy dynnu'r gwahaniaeth o ddarlleniad y
temperature()
- Trosi’r rhaglen i gofnodi gwahanol fathau o ddata, fel grymoedd a fesurir gan y mesurydd cyflymiad.
- Ychwanegu swyddogaeth radio i anfon data i micro:bit arall mewn lleoliad arall hefyd.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.
Translation generously supported by the Welsh Government.