本實驗需要一個Arduino開發(fā)板,一個超聲波傳感器元件,一臺安裝了 Flash cs3和Arduino軟件的計算機。
首先對Arduino開發(fā)板寫入一下程序:
......此處省略若干定義語句
void loop () { //主程序
上述寫在Arduino里的程序的功能主要是讀出超聲波傳感器發(fā)射超聲波到接受反射回來的波所經(jīng)過的時間差,然后將這個時間差發(fā)送出去,讓電腦接收。
寫入程序后,將超聲波傳感器的輸入輸出端連接到Arduino的端口4和端口5,電源輸入端連接到Arduino的高電平輸出端,接地端連接到Arduino的接地端。這樣超聲波傳感器與Arduino的連接就完成了。接下去開始寫計算機端的Flash程序。
Arduino與Flash并不能直接通信,必須通過一個服務器轉(zhuǎn)接,這里選擇Serproxy進行轉(zhuǎn)接。Serproxy的作用在于它會建立一個xml服務器,將來自Arduino的數(shù)據(jù)轉(zhuǎn)換為xml格式,儲存在它零時建立的虛擬服務器上。然后Flash便可以從serproxy建立的虛擬服務器中讀取xml格式的數(shù)據(jù)。Serproxy服務器從國外的網(wǎng)站www.arduino.cc上直接下載得到。下面編寫Flash端的程序,因為代碼過多,此處省去。
程序完成了將得到的從Arduino發(fā)送的時間間隔轉(zhuǎn)換為距離值,并且完成將距離值實時顯示出來,以及用屏幕上的物塊來實時模擬實際物體的移動。在按下記錄按鈕后能夠每5ms讀取一個數(shù)據(jù),然后對每四個數(shù)據(jù)取平均,以每20ms記錄一次將這些數(shù)據(jù)依次記錄到數(shù)組中,并依次顯示出來,同時畫出距離—時間圖像,同時還可以通過對圖像的選擇來保留選中的數(shù)據(jù)。
通過上訴程序,可以看到通過Arduino和Flash開發(fā)的這個課件具有實時的測量并記錄物體位移的功能。有了這個功能,可以完成很多物理實驗,例如研究物體加速度與力、質(zhì)量的關(guān)系,研究小球簡諧運動的圖像等等。當然,這個課件在數(shù)據(jù)處理上的功能可能并不強大,但是我們可以將課件中記錄下來的距離數(shù)據(jù)復制到excel中,利用excel強大的功能來進行數(shù)據(jù)的分析和處理,甚至計算出每個時刻物體的速度,畫出速度—時間圖像等等。