與過往兩次製作一樣,第一部分是動手製作,第二部分是程式介紹。上期運用了 Arudino UNO 、激光發射器、三軸加速度計感測器、數字按鍵鍵盤及 LCD 液晶顯示器製作測斜儀,今期會講解程式撰寫的部分。
測斜儀的正面主要是用作顯示及控制,為了方便接線及使用,因此我們加入了 L 型的木板及有孔支架方便組裝,此方面的工具大家可以自行發揮。至於背後的接線,也可因應設計要有不同走位,只是要留意激光發射器要能射出光束。
Arduino 程式
最後的階段是在 Arduino IDE 編寫程式,讓整個設計運作。使用者可以按照下面的步驟進行量度。首先用家需要輸入水平距離,例如 40 米,然後將激光發射器發出的光束,指著物件的最高點,跟著便要按下鍵盤的按鈕「*」, 物件的高度便會計算並顯示出來。有關的程式碼可見下面程式。當中的一些重點解釋如下:
[row][double_paragraph]
[/double_paragraph][double_paragraph] 行數1-4:載入有關 LCD 液晶顯示器的 Library ,及指示 I2C 的 Bus Address (0x3F) 。
行數5-8:宣告各個變數,包括仰角、物件高度、水平距離及常數π的數值。
行數9:激光發射器接口 (Pin11) 。
行數10-18:載入 4×4 鍵盤的 Library ,及有關的設定。
行數20-29:Arduino 程式中「設定」的部分,這部分只會運行一次。
行數21-23:啟動 LCD 液晶顯示器及顯示器的背光,讓字元能夠顯示清楚。
行數24-26:程式啟動後,會顯示測斜儀的名字「 Inclinometer 」,
並會維持一秒鐘,之後便會清除畫面上所有的字元。
行數27-29:將光標設置到第一行的第一個位置,並列印字元「 Hor.
Distance= 」。[/double_paragraph] [/row]
[row][double_paragraph]
[/double_paragraph][double_paragraph] 行數30-54: Arduino 程式中「循環」的部分,這部分會不斷重複運行。
行數31:這行可使重複部分的運作速度減慢,否則顯示器的數字會不斷跳動。
行數32:宣告變數 sensorValue ,讀入三軸加速度計感測器的數值。
行數33:將 0° 至 90° 傾斜角度作校準步驟。在這一行中,模擬數值 279 及 345 會映射 0° 至 90° ,將數據儲存到degree 變量中。
行數34-37:將光標設置到第二行的第一個位置, 並列印字元「 Ang.= 」及仰角。
行數38:啟動激光發射器。
行數39:輸入水平距離。讀取鍵盤的輸入,將字元儲存到 key 變量中。
行數41-45:當輸入的字元是 0 至 9 時,便會將字元轉化為數字類型,並列印出來。注意這裏只可以輸入最多兩位數字。
行數46-52:當輸入的字元是「 * 」時,便會利用公式計算出物件的高度,並列印出來。[/double_paragraph] [/row]
老師製作心得分享
Arduino 測斜儀的製作中,最重要的地方是要為三軸加速度計感測器 ADXL335 作校準的工作,否則量度出來的物件高度會有很大的誤差。當中涉及的技術並不複雜,非常適合初中同學製作。
[row][double_paragraph]
[/double_paragraph][double_paragraph]
[/double_paragraph] [/row]