近來有學校朋友問我一個問題,是關於用micro:bit製作一個手指陀螺速度計。因為他們的學生常爭論誰的轉得較快,所以想教他們做一個手指陀螺速度計來作一個STEM 活動。其實這是很簡單的,你只需固定要micro:bit 和以下教大家寫的程式就可以了。
首先我們要知道什麼是每分鐘轉速。這是指每分鐘轉動的次數,如果你有買電腦的散熱風扇,你應該會留意到一個叫每分鐘轉動的次數 Revolutions Per Minute(RPM),我們這次就是要量度這個RPM 了。誰的陀螺RPM 較高,那就代表他的陀螺轉得較快。那怎樣量度呀?
其實micro:bit 內建了一個光線感測的感應器,只要你在micro:bit 編程器上找輸入,便可找到一個“光測感應值”。那就是它了。首先我們可以用以下的程序來看看現在micro:bit “光測感應值” 的平均數(適合小學六年級)。這個程序是當你按下A 時,程式會倒數5秒,然後就累加100次的光線平均值。然後在序列中列印出來。
使用Chrome 接駁USB 和 micro:bit 再用 WebUSB mode 就可看到下圖 “顯示系統監控 裝置” 來看看100次光測感應值累加和100次光測感應值平均數。
我們首先測試一手指陀螺的一支臂阻擋光線到micro:bit上。例如,在我的測試中阻擋光線的100次值是30、累加100次光測感應值是3000。我們再按A一下,來測試多一組數據來找誤差範圍值。在我的測試中是 45,我們便可將沒有被阻擋光線的範圍,設置到 30 – 45之間。
找出兩個數值後,我們便可寫另一個程序來計算RPM 。首先我們來認識RPM 是怎樣計算的。手指陀螺有3個臂,如果第一支臂從未阻擋光線到可阻擋光線的時間叫 T1, 第二支臂叫T2, 之後就是要找T1-T2 間距時間就是T2-T1 = T3。3支臂阻擋光線時間就是T3 x3 = T4 。那麼一分鐘內轉速就是 60,000/T4 (1 分鐘= 60,000 微秒)。程序如下:
可看到我把one minute in milliseconds 的變數設成 60,000,原因是1 分鐘= 60,000 微秒。然後把min light value
設為30 ,max light value設為45。之後用重複判斷來不斷執行程序。把光線感測值設到current light reading,然後用如果判斷來判斷光線感測是否被阻擋。你會看到如果 current light reading = min light value 且 has hit min light level = false, 如果付合條件,那我們即可去計RPM。calCurrentRPM 就是那函式。這函式就是60,000/T4了。
運行此程序,我們便可找到手指陀螺的RPM 了!這次我們用micro:bit 內置的光感測器,如果大家想要更準確的數值,可用外置光敏感測器呀!