登入
首頁
網站導覽
科展群傑廳
全國中小學科展
臺灣國際科展
科展回顧
科展學習區
生活科學廳
生活科學問與答
國外參考網站
科學研習月刊
生活科學補給站
教學資源廳
影音資源
優質教案
國外參考網站
趣味動畫學習區
i-show直播
分類查詢
全文檢索
科展群傑廳
科展資料
生活科學廳
問與答及補給站
教學資源廳
影音資源
作品名稱
作品摘要
指導老師
全文
資源名稱
全文
資源名稱
全文
名稱
講者
全文
首頁
生活科學廳
生活科學補給站
生活科技
分類查詢
全文檢索
科展群傑廳
科展資料
生活科學廳
問與答及補給站
教學資源廳
影音資源
作品名稱
作品摘要
指導老師
全文
資源名稱
全文
資源名稱
全文
名稱
講者
全文
生活科學補給站
化學
生物
健康教育
地球科學
數學
生活科技
物理
專題導言
STEAM
運用Arduino探究視覺暫留
瀏覽人次 3293
加入最愛
文/陸健榮、鄭依佩
在資訊與電子的時代,運用科技進行教學或探究與實作,可能會有兩難:程式難、電路難。所以在入門之初我們要謹記先哲「知難行易」的原則,老師或學生不需要完全理解程式或電路,然後才進行探究或實作;就像是享受哼唱歌曲或是把玩智慧手機,先從最簡易的著手,逐步熟悉擴充各種功能,愈玩愈大愈多交流。例如,眾所熟悉的WORD或EXCEL等應用軟體都有許多範例,套入範例就可以用WORD或EXCEL做好許多事情,進而發展出自己的特色。微控制器是近代科技的基礎,其原理與構造固然與手機的原理與構造一般,屬於專業領域;然而其應用於生活、娛樂或教學,卻也如手機般平易近人。尤其是開源的硬/軟體的應用,也有許多簡易好用的範例,方便新手入門,如能善加運用,則事半功倍。本文介紹如何從Arduino最基本的範例--Blink(閃爍)著手,進行探究與實作,並且逐步加入程式、數學、與電路等跨學科與跨領域的基本素養。
視覺暫留是生理與認知方面的有趣現象,古今中外已有應用於類似走馬燈、留影盤之類的娛樂或遊戲。現代應用方面,視覺暫留也是顯示科技、影片或動畫,以至於科學玩具……的基礎。本文中介紹如何運用新科技--開源微控制器,對於視覺暫留現象進行定量的探究與實作,同時訓練測量與分析以及程式與電路等跨領域的基本素養。
一、開源微控制器Arduino的硬體與軟體
「開源」顧名思義是開放的資源,既然是資源就值得循序漸進,慢慢探索開發。Arduino源起於2003年義大利的伊夫雷亞(Ivrea)國際設計學院的教授們所開發之經濟又容易使用的硬體與軟體,提供給新手或專家們用來設計創造互動裝置[1]。Arduino的軟體下載安裝以及硬體與電腦的連接,與其他3C產品類似,網路上與坊間參考資料很多,初入門可以從簡易的Arduino入門手冊之一著手[2]。
圖1是 Arduino入門款UNO的硬體構造簡圖。雖然是簡圖,看起來也頗為複雜。新手入門先只從圖中
橘黃色
的長方形LED小燈開始,以免見樹不見林。最右邊標示ON的LED小燈為電源顯示燈,亮了表示有通電。不同廠牌的ON-LED燈可能會是其他紅或綠的不同顏色。另外有一顆中央偏左上標示為L的
橘黃色
LED小燈,在初次接通新買的UNO之後,它會持續閃爍(Blink或眨眼)。這是因為硬體UNO之內已存有Blink的基本程式。
圖1. Arduino UNO簡圖,起初只使用
橘黃色
LED小燈
軟體方面,我們也從最基本的範例Blink開始。安裝好Arduino的軟體之後,其視窗如圖2所示,左半圖與右半圖分別是中文版面與英文版面,是不是和文書軟體WORD很類似? 最上方是所編輯的檔案名稱,剛開啟WORD之初,尚未選擇檔案之時,WORD視窗的最上方會自動給一個「文件一」的檔名。Arduino也會自動給一個「Sketch_月_日」的檔名,顯示於最上方。WORD視窗用於管理「文件」,Arduino視窗則是用於管理「Sketch」,也就是程式的「草稿(碼)」,玩家們常稱程式(碼)為programing(code)。因為程式總是會被擴充或改進,也就常以「Sketch(草稿)」來稱呼程式。
Arduino軟體的操作也與WORD類似,以滑鼠點擊左上的「檔案(File)」,會展開一系列有關於檔案管理的選單,如圖2所示。一開始先點選紅色虛線框標示的「範例(Examples)」,我們從中先挑一個最基本的範例來玩。進入範例視窗之後會展開一個分類視窗。
圖2. Arduino 軟體視窗功能選項
圖3顯示,分類視窗從01.基本類(01.Basic)開始,接著有02.數位類(02.Digital) ,03.類比類(03.Analog)……。不同時期的版本,下方的類別總數會有所不同,前幾項基本的類別倒是都一樣。選擇了01.Basic類別之後,再從中挑選Blink程式草案。Blink的中譯為眨眼或閃爍。在安裝好圖1的Arduino UNO硬體之後,通常的基本測試程序也是按照圖3,依序開啟視窗:Example → 01.Basic → Blink,進行硬體與軟體的溝通測試。Blink草案開啟之後,其程式的視窗如圖4所示。然後點擊其中的②編譯鍵,將英文程式編譯為機器語言,也就是硬體UNO板懂得的語言。編譯無誤之後,接著點擊③上傳鍵,將程式送往硬體UNO板,執行Blink程式。圖4程式之末有兩個紅色方框所標示的兩行相同指令 ” Delay 1000; ” 「延遲1000 ms (毫秒)」。第一個「延遲」發生在內建
橘黃色
LED發亮之後,第二個「延遲」發生在該LED變暗之後。因此內建LED會重複的亮1秒,暗一秒。學生可以調整延遲的毫秒數,例如將兩個” Delay
1000
; ”,都改為” Delay
2000
; ”,進行圖4之②、③兩步驟之後,則LED亮暗的延遲時間變長,可觀察到LED變為亮2秒,暗2秒。學生可以調整不同的毫秒數,進行「控制變因」與「觀察結果」的練習。
圖3. 進入Example視窗,選擇01.Basic類別,再從中挑選Blink程式草案
圖4. Blink 範例視窗與執行步驟說明(右方框)
二、 發現問題
如果將圖4的Blink程式中兩個紅線框的”Delay 1000;”,都改為”Delay 100;”,進行圖4之②、③兩步驟之後,則延遲時間變短,改為亮0.1秒,暗0.1秒;學生會發現LED仍然一閃一閃,但是閃得快多了。如果將”Delay 1000;”,都改為”Delay 10;”,進行圖4之②、③兩步驟之後,則延遲時間變得更短,改為亮0.01秒,暗0.01秒。有些學生會觀察到LED仍然是一閃一閃的,只是閃得非常快速;有些學生則會觀察到LED不閃了,而是持續地亮著。如果將”Delay 1000;”,都改為”Delay 1;”,進行②、③兩步驟之後,則延遲時間變得更短,改為亮0.001秒,暗0.001秒。所有學生都會認為LED不閃了,而是持續亮著。我們發現兩個有趣的問題值得探究:
2-1. 閃爍時間小於一個特定值之後,LED「看起來不再閃爍」,究竟這個特定時間是多久呢?
2-2. 不同的人對LED開始「看起來不閃爍」的特定閃爍時間是不相同的,究竟是如何的不同呢?
三、 視覺暫留探究與實作
光進入視覺系統之後會在視網膜上成像,經過認知系統產生視覺影像。當光消失之後,視覺影像仍然保留一段時間,稱為視覺暫留。通常的日光燈大約每秒閃爍百餘次,但是因為視覺暫留,所以我們察覺不到日光燈的閃爍。我國古代的走馬燈約是視覺暫留最早的應用,這一類的應用也是「知難行易」的最佳寫照。現代常見的應用是電影與動畫的拍攝和放映,視覺暫留使得一幅幅畫面得以連續動態呈現,早期畫面更新率(frame per second,簡稱fps)約是每秒6或8張,如今約是每秒120張。究竟我的視覺暫留時間是多少呢?是不是大家都一樣呢?如何不同?我們將運用Arduino的入門範例--Blink,著手定量地探究視覺暫留的時間。
3-1. 測量與數據
例如,將圖4的Blink範例之中兩紅線框的”Delay 1000;”,都改為”Delay 100;”,進行圖4之②、③兩步驟之後,則延遲時間變短,變為亮0.1秒,暗0.1秒;學生會發現內建LED仍然一閃一閃。持續減小”Delay” 的毫秒數,一直到眼睛看不出內建LED燈的閃爍,此時”Delay”的毫秒數即為視覺暫留時間。請班上學生將測得的視覺暫留時間,依照在電腦教室的座位,填入黑板的數據表,如表1所示。
表1. 全班座位以及視覺暫留時間數據(單位:毫秒)
圖5. 全班視覺暫留時間的統計長條圖與高斯分布
3-2. 數據分析與建構模型
全班的視覺暫留時間數據統計的結果,如表2所示。
表2. 全班視覺暫留時間數據統計(單位:毫秒)
依據表2的數據,可以繪製如圖5所示的長條圖,並且得知全班大多數學生的視覺暫留時間約是10毫秒,少數人較短或較長。我們可以粗略描繪全班視覺暫留的分布模型,類似於圖5的虛線,接近一個常態分佈。從圖形上我們也可以初步研判,最多數同學的視覺暫留時間約是10毫秒,或說全班視覺暫留時間的平均值約為
毫秒。大多數同學分布在9.5毫秒到11.5毫秒之間,或是說視覺暫留時間的分布寬度約是
毫秒。中央最多的人數約為
人。我們可以依據測量的數據,對此模型進行更確切的描繪與表達。
四、 改進與調整
4-1.數據分析與統計表達
隨著年級的增長或是職場的精密需求,我們在測量、分析與表達溝通方面的素養,永遠有更增進與更精進的空間。運用適當的軟體或工具,我們可以更精確地計算表1之中,全班視覺暫留時間的平均值為
毫秒,以及標準差為
毫秒。平均值
可以估計常態分布的中央值或最多數值,而標準差 則可以估計該常態分布的寬度。從數據的統計表2或圖5,也可以知道中央值的人數最多,約是10多人,故
。然後依據常態分布的標準函數 ,我們可以建構這次探究活動中,「全班學生視覺暫留」分布的函數模型為
,有如圖5中的虛線所示。透過曲線擬合 (curve fitting) 軟體或是
開源網頁
,將測量數據進行更切合的高斯分布擬合,可以得知全班視覺暫留時間分布的更精確模型為:
4-2.測量方法與不確定度
探索一個只知道會發生在一定範圍的未知事件,除了亂槍打鳥碰運氣之外,如何從大範圍逐步地有系統地朝向目標縮小範圍,是一個有趣而且有用的科學方法。例如圖6顯示如何用二分法有效的縮小範圍,探索方程式F(x)=0的根。首先將選定的大範圍「a1~b1」切半一分為二,並將中點命名為b2。如果方程式F(x)=0的根在左半範圍「a1~b2」之內,則F(a1) x F(b2)<0,如圖6所示;而且右半邊無根的範圍「a1~b2」則會符合F(b2) x F(b1)>0。
圖6.
二分法示意圖
(以方程式求根為例)
接著便可以將「尋根」範圍的右邊界從b1點收縮到b2點,繼續在此新的小範圍之內進行相同的切半二分與檢驗,一直繼續到新的小範圍縮小到可以接受而終止的小範圍
。這個終止範圍的中值
便是方程式F(x)=0之根的最佳估計值,而終止範圍的半寬度
,便是根的不確定度。
測量未知的視覺暫留時間,起初可能摸索來摸索去地調整亮與暗的延遲時間,一直調整到可以看見閃爍變為連續發亮的延遲時間為止,便可以記錄為視覺暫留時間的數據。雖然讀數可以精準地調整到毫秒,我們可否宣稱測量的不確定度就是毫秒了呢?如果將亮與暗的延遲時間從 0 毫秒開始,逐次遞增一毫秒,直到LED從閃爍變為連續發亮為止,我們雖可以確認遞增的不確定度約是1毫秒。可是這樣會不會太慢?萬一是從另一端1000毫秒開始,每次遞減毫秒來尋找,豈不是很漫長?
我們也可以採用類似方程式尋根的二分法,即使是從延遲時間的大範圍「0~1000」毫秒開始,在0端為持續亮,在1000端為閃爍。二分之後,在500毫秒仍為閃爍,則閃爍邊界縮至500毫秒。如此持續二分縮減,只要4次就到了閃爍邊界縮減至大約63毫秒,如圖7之右端所示。再經過3次二分之後的中點③為8毫秒,此時LED已變為連續發亮不閃爍;顯示應將連續發亮的左邊界縮至8毫秒。接著是圖中的第4次二分的中點④為12毫秒,此時LED又變為閃爍,此為新的閃爍邊界。再二分,新的閃爍邊界就到了為10毫秒,LED仍為閃爍,是為新閃爍邊界。如果就此停止,則可以採用最終範圍的中點 (8+10)/2=9毫秒,作為此次測量視覺暫留時間的最佳估計值,其不確定度為(10-8)/2=1毫秒。當然也可以此類推,繼續進行二分以求取更精密的測量值,直到所切分的區間小於應用或測量所要求的不確定度,即為所求。
圖7. 利用Arduino範例Blink,以二分法探究視覺暫留時間
以此次(圖7所示)的測量而言,其最終範圍之半即為B類不確定度uB=1.0毫秒。如果多進行幾次測量,也將會發現過度的追求精密,可能無濟於事。例如若是初步的進行了三次測量,分別是10、9、8毫秒,便可知道如圖7在進行更多更細緻的切半二分,並無太大的助益。倒是值得同法再重複測量幾次,以獲得確認的平均值。而且重複多做實驗的同時,也要控制其他的變因,確保是相同一致的重複測量。例如,可能需要在結束一次實驗之後,閉眼休息約30秒,再進行下一次實驗,以排除眼睛疲勞的因素。表3為一個學生認真的重複測量20次結果。
表3. 單一學生測量20次視覺暫留時間數據(單位:毫秒)
重複測量20次的平均值為
毫秒,統計的標準差為
毫秒。雖然重複20次測量,提高了統計上的精密度,測量的A類不確定度為
毫秒,比起B類不確定度 uB=1.0毫秒,要小了約10倍左右。不過,從組合不確定度為
毫秒 的觀點來看,重複三到五次確認即可。
參考資料
[1]
Massimo Banzi,Arduino 是如何打開想像力的,TED演講
[2]
鄭依佩,Arduino入門手冊,中等教育階段領域教學研究中心
陸健榮
國立臺灣師範大學物理系教授
鄭依佩
國立臺灣師範大學化學系研究助理