更多

    製作 Arduino 測斜儀(下)

    《 GT 》神還原 Assoluto Racing

    日前 Sony 發表新一代 PlayStation 5 ,瞬間成為機迷熱話, Sony 在發布會上,更預告多款新作,當中包括《 Gran Turismo 7 》,更細緻的畫面,令人眼界大開。雖然《 Gran Turismo 》未有推出手機版本,不過這個名為《 Assoluto Racing 》的賽車遊戲,卻與《 Gran Turismo 》十分相似,由賽車到改車,甚至各大車廠的戰車及賽道,都一一忠實呈現。

    【#1402 PCM】電競曲芒升級醒買術

    今期《PCM》就為大家搜羅市場上多款曲面電競屏幕,剖析一下這類屏幕的優缺點。

    【#1402 Biz.IT】海底光纜連接能力 支持數據樞杻地位

    為應付興日俱增的網絡流量,網絡商和大型科技企業興建跨地域海底光纖電纜,以 Tbps 速度計擴充容量。香港本是亞太區內海底光纜的樞杻,但近日美國否決啟用兩地互連的 PLCN,或會打擊香港多年來建立的地位。

    與過往兩次製作一樣,第一部分是動手製作,第二部分是程式介紹。上期運用了 Arudino UNO 、激光發射器、三軸加速度計感測器、數字按鍵鍵盤及 LCD 液晶顯示器製作測斜儀,今期會講解程式撰寫的部分。
    測斜儀的正面主要是用作顯示及控制,為了方便接線及使用,因此我們加入了 L 型的木板及有孔支架方便組裝,此方面的工具大家可以自行發揮。至於背後的接線,也可因應設計要有不同走位,只是要留意激光發射器要能射出光束。

    Arduino 程式

    最後的階段是在 Arduino IDE 編寫程式,讓整個設計運作。使用者可以按照下面的步驟進行量度。首先用家需要輸入水平距離,例如 40 米,然後將激光發射器發出的光束,指著物件的最高點,跟著便要按下鍵盤的按鈕「*」, 物件的高度便會計算並顯示出來。有關的程式碼可見下面程式。當中的一些重點解釋如下:
    [row][double_paragraph]
    1261kid04p21 [/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]
    1261kid04p22 [/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]
    LCD 顯示出結果。
    LCD 顯示出結果。

    [/double_paragraph] [/row]

    相關文章