Skip to content

活動

最高-最低溫度記錄器

進階 | Python | LED 螢幕, 引腳, 按鈕, 溫度感應器 | 數據處理, 變數, 資料類型, 輸入輸出

步驟1:製作

這是什麼?

將您的micro:bit變成一個獨立的data logger,該記錄器記錄最高和最低溫度讀數,並儲存它們,以便保持數據,即使電池沒電了或您斷開了電源。

這是 Python程式,但是您無需了解任何有關Python的知識即可使用它。

您將學到什麼

  • 如何使用Python讀取數據並將數據寫入non-volatile storage,即使關閉電源,該儲存器仍位於micro:bit上
  • 如何處理錯誤在Python程式中
  • 如何將數字變數轉換為字串並再次返回

你需要的東西

  • 一個micro:bit
  • 選配式電池組

如何使用它

  • 下載.hex程式文件,並將其刷新到您的micro:bit
  • 如果您有電池組,請裝上電池並將micro:bit放在溫度會變化的地方。 您可以將其放在外面或放在冰箱中放置幾分鐘,然後進行測試。
  • 搖動以顯示當前溫度。
  • 按下按鈕A以顯示最低記錄溫度。
  • 按下按鈕B以顯示最高記錄溫度。
  • 用手指同時按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上的兩個文本文件中,分別稱為 min.txt max.txt,Python程式可以讀取和更新。

該程式使用三個變來追蹤和比較溫度:

  • currentTemp是從micro:bit內建的temperature sensor讀取的當前溫度。
  • max 是最高溫度。 如果目前的溫度高於(>)目前的最大值,便會指配一個新值。
  • 最小值是最低溫度。 如果目前的溫度低於(<)目前的最小值,便會指配一個新值。

兩個函數 get_nv_data set_nv_data 讀取和寫入數值數據到non-volatile文本文件。 這些函數將數字轉換為文字並返回:

  • intl()可將文字(也稱為字串)轉換為數字(整數)變數,我們便可將該變數與目前的溫度做比較。
  • str() 將數字變數(如溫度讀數)轉換為文本字串,以便將其保存在文本文件中。

函數使用 try except來獲得讀取或寫入數據文件的錯誤。 如果沒有保存具有最高和最低溫度的文字檔案,例如當您首次運作此程式時,它將把 max min 變數設為目前的溫度。

程式的主要部分在 while True:loop中運行。 這就像 Makecode 中的永久區塊的功能。

步驟3:進階

  • micro:bit 的溫度感測器位於處理器的內部,因此它提供的溫度讀數通常會高於周圍的氣溫。 使用一般的溫度計測量差異,並且透過從 temperature() 讀數中減去差值來計算差值。
  • 轉換程式以記錄各種數據,例如加速度計測得的力。
  • 添加廣播功能,還可以將數據發送到另一個位置的另一個micro:bit。
了解有關更多儲存在Python中數據的信息