Skip to content

Активност

Записивање максималне или минималне температуре

Напредно | Python | Лед екран, Пинови, Сензор температуре, Тастери | Променљиве, Руковање подацима, Типови података, Улаз/излаз

Корак 1: Уради

Шта је ово?

Претвори свој micro:bit уређај у уређај за самостално бележење података који чува највећу и најмање очитану вредност температуре и те податке чува чак и када се батерија потроши или када се искључи напајање микробита струјом.

Ово је програм уPython-у, који можете да користите без икаквог познавања програмског језика Python.

Шта сте научили

  • Како да користите Python за учитавање и уписивање података у трајну меморију који ће остати у micro:bit-у чак и када се прекине његово напајање струјом
  • Како поступати са грешкама у Python-у програмима
  • Како претворити нумеричке вредности у ниске и обратно

Шта вам је потребно

  • micro:bit
  • опционално паковање батерија

Како употребљавати

  • Преузмите програм у облику .hex датотеке и пребаците га на ваш micro:bit уређај.
  • Ако имате батерије, прикачите их на ваш micro:bit и оставите га негде где ће се температура мењати. Можете да тестирате тако што ћете микробит уређај оставити напољу или у фрижидеру на неколико минута.
  • Протресите га како бисте приказали тренутну температуру.
  • Притисните тастер А како бисте видели најнижу забележену температуру.
  • Притисните тастер Б како бисте видели највишу забележену температуру.
  • Истовремено притисните пинове GND и 2, како бисте поништили измерену максималну и минималну температуру и поставили на тренутно измерену вредност температуре.

Корак 2: Програмирај

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

Како то ради

Овај уређај за бележење података чува те податке чак и када је на micro:bit уређају искључено напајање. То се ради тако да се подаци чувају у трајној меморији. То је рачунарска меморија чији садржај остаје и када се искључи напајање, баш као што и micro:bit уређај чува програм који је преузет на њега и када га искључимо са рачунара.

Подаци се на micro:bit уређају чувају у две текстуалне датотеке које се називајумин.txt и макс.txt које се могу у Python програм прочитати и ажурирати.

Овај програм користи променљиве за праћење и упоређивање температуре:

  • ТренутнаТемп је вредност тренутно очитане температуре са сензора за температуру на micro:bit уређају.
  • максимум је вредност највише температуре. Ова променљива добија нову вредност када је тренутно измерена температура већа од (>) тренутне вредности максимума.
  • минимум је вредност најмање температуре. Ова променљива добија нову вредност уколико је тренутна температура мања од (>) тренутне вредности мин.

Две функције,узми_нв_податке i постави_нв_податке, читају и уписују нумеричке податке у трајним текстуалним датотекама. Ова функција претвара бројеве у текст и обратно:

  • int() претвара текст (који се назива стринг) у нумеричку (цео број) променљиву, коју можемо да користимо за поређење са тренутно измереном температуром.
  • str() претвара нумеричку променљиву, попут очитавања температуре, у текст који се може чувати у текстуалној датотеци.

Функција користи блокове пробај и изузетак како бисте забележили грешке које настају приликом читања или уписивања у датотеци. Ако не постоји сачувана текстуална датотека са максималном и минималном температуром, када први пут покренете програм, он поставља да вредности променљиве максимум и минимум буду тренутно измерене вредности температуре.

Главни део програма се дешава унутар бесконачне петље док тачно:. Она се понаша као блок покрени заувек у MakeCod-у.

Корак 3: Унапреди

  • Сензор за температуру на micro:bit-у смештен је унутар процесора и његово очитавање обично даје температуре веће од оних из околине. Измерите разлику у температурама помоћу обичног термометра, па у програму додајте одступање које се добија када се та разлика одузме од очитане температуре () .
  • Промените програм тако да бележи различите податке, као на пример као силе мерене акцелерометром.
  • Додајте радио функцију да бисте податке слали на други micro:bit који се налази на некој другој локацији.
Сазнајте више о чувању података у Python-у