Skip to content

活動

光能計時器

進階 | MakeCode, Python | LED 螢幕, 光感應器, 按鈕 | 13 氣候, 布爾邏輯, 感應器, 變數, 輸入輸出

步驟1:製作

它是什麼?

記錄您的燈開了多長時間來追蹤您的能源使用狀況。 您可以在氣象站項目中來追蹤的日照時間。

這個項目是一個系列的一部分,提供解決問題和原型設計的活動來探索作為可持續發展的全球目標的解決方案。

您將學到什麼

  • 如何使用感測器和程式碼來監測真實世界中的事件
  • 放置數據記錄器來記錄可靠的數據
  • 收集和整理一段時間內的數據,來發現能源使用的模式
  • 解釋和分析數據以便改變行為
  • 用戶如何在使用前改變變數來設定系統

如何使用它

  • 首先使用光能測量儀項目來測量開燈和關燈的讀數。 請確保在即將放置監測 micro:bit 的同一地點以及相同照明條件下進行這項操作,並確保日光不會觸發開燈的錯誤讀數。
  • 將您的燈光讀數加入到設定 LIGHT 變數的程式碼中。 我們已給您一個數字 100,但是您可能在將程式碼燒錄到 micro:bit 之前需要先變更這個數字。
  • 裝上電池組,將 micro:bit 放置在您想監測的電燈下。 當電燈關閉時,您應該會看到螢幕上有一個點,當您的燈打開時,螢幕就會亮起來。 如果這沒有預期運作,可以考慮再次使用燈光計項目來找到燈亮時的光照水準,或者移動 micro:bit。
  • micro:bit 將保持繼續計時,當你按下按鍵 B 時,它會顯示燈被打開了多長時間,以分鐘為單位。

運作方式

  • 該程式使用名為 timing 的布爾變數來控制該項目。 布爾變數只能有兩個值:真或偽。
  • 如果光感測器的讀數高於您設定的水準級別,它就會啓動計時器並點亮 LED 螢幕。 如果它低於這個水準級別,它就會停止計時,並在螢幕上顯示一個點。
  • 該項目使用磁滯現象來確保計時器不會在當亮度值在門檻值略微上下起伏時不會過於頻繁地開關。 它在門檻值附近建立了更大的區間,當變化幅度超出該區間時才會觸發計時器開啓或關閉。
  • 磁滯現象在感測器控制系統中很常見,例如在有自動調溫的供熱系統中。 如果您把恆溫器設定為特定溫度,您不會希望當溫度在您設定的數字上下徘徊時而造成暖氣反覆地開關。 磁滯現象可以防止這種情況的發生。

你需要的東西

  • micro:bit
  • MakeCode 或, Python 編輯器
  • 電池組(推薦)

步驟2:編碼

1from microbit import *
2display.show('L')
3
4LIGHT = 100  # <<< Enter your 'measured' reading here
5
6HYSTERESIS = 8
7LIGHT -= (HYSTERESIS/2)
8DARK = LIGHT - HYSTERESIS
9ON_IMAGE = Image('99999:99999:99999:99999:99999')
10OFF_IMAGE = Image('00000:00000:00900:00000:00000')
11timing = False
12start_time = 0
13total_time = 0
14reading = display.read_light_level()
15sleep(1000)
16
17def show_number(n):
18    # Make number display the same as MakeCode
19    if len(str(n)) == 1:
20        display.show(n)
21    else:
22        display.scroll(n)
23
24while True:
25    reading = display.read_light_level()
26    if reading < DARK:
27        if timing:
28            # it has just gone dark, update timer for 'on' time
29            end_time = running_time()
30            total_time += (end_time - start_time)
31            timing = False
32        
33    elif reading >= LIGHT:
34        if not timing:
35            # it has just gone light, start the timer
36            start_time = running_time()
37            timing = True
38        
39    if button_b.was_pressed():
40        # calculate and display cumulative time in minutes
41        minutes = total_time / 60000
42        if timing:
43            # adjust live for current ON time
44            minutes += (running_time() - start_time) / 60000
45        display.clear()
46        show_number(round(minutes))  # whole numbers only
47        sleep(500)
48
49    # update the display with the ON/OFF state
50    if timing:
51        display.show(ON_IMAGE)
52    else:
53        display.show(OFF_IMAGE)
54    sleep(1000)
55
56        

步驟3:進階

  • 更改 LED 螢幕上顯示的模式來讓電池維持更長的時間或調暗螢幕。
  • 使用記錄下的時間來計算您使用的電量和成本。 更多資訊請參閱我們的能源成本計算項目
  • 使用同一個程式碼來測量日照時長。 使用光線計項目來計算陽光照射在 micro:bit 上和陰天時的光照值。 您可能需要用一個半透明的蓋子來減弱光照,並保護 micro:bit 淋到雨。 例如,一個舊的塑膠食品盒子。