目的
由於HC-SR04超音波模組是利用聲音反射來計算距離,在物體距離較遠時ECHO Pin 會回傳一個較長的訊號,Arduino等待訊號電位變化時需要較長的時間,這會導致執行效率變差,本篇希望能改善超音波距離檢測之效率。
問題
根據HC-SR04的官方文件來讀取ECHO Pin的電位變化就能取得超音波資訊,我們可以利用 pulseIn() 函數來取得回傳訊號高電位的時間。
根據Arduino官方文件指出 pulseIn() 有三個參數 pin、value、timeout ,我們可以利用第二個參數value來設定我們要計時的電位,例如LOW或HIGH;利用第三個參數timeout來設定時間限制(非必要),預設為1秒,也就是說如果HC-SR04感測不到物體時,Arduino可能會停住等待 pulseIn() 整整1秒才會繼續下一個指令。
改進
最直覺的改進方式就是將pulseIn() 的timeout 設定的小一點,例如100ms,不過這會縮小HC-SR04能夠檢測的距離,不是一個最好的方法。