Skip to content

Gweithgaredd

Cofnodydd tymheredd uchafswm-isafswm

Uwch | Python | Botymau, Dangosydd LED, Pinnau, Synhwyrydd tymheredd | Mathau o ddata, Mewnbwn/allbwn, Newidynnau, Trafod data

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:bit
  • max yw'r tymheredd uchaf. Rhoddir gwerth newydd i hwn os yw'r tymheredd presennol yn uwch na (>) gwerth presennol max.
  • min yw'r tymheredd isaf. Rhoddir gwerth newydd i hwn os yw'r tymheredd presennol yn is na (<) gwerth presennol min.

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.
Dysgu mwy am gadw data yn Python
Ariennir gan Lywodraeth Cymru / Funded by Welsh Government

Translation generously supported by the Welsh Government.