ここでは,超音波センサーを用いて距離を計測する方法について述べます。
超音波センサーとして,HC-SR04を用います。
HC-SR04は,超音波の反射時間を利用して非接触で距離を測定できるセンサーです。
接続の仕方は,下の写真のようになります。


配線は,たった4本で終わりです。意外と簡単ですね。
HC-SR04には4本の足があります。これらの足は,電源関連(VccとGND)および出力関連(EchoとTrig)に分かれます。
まず,電源関連の足は,VccをArduinoの5Vピンへ,GNDをArduinoのGNDに接続します。
次に,出力関連の足は,Echoを2番ピンに,Trigを3番ピンに接続します。
回路図は右図のようになります。
さて早速,プログラムを入力しましょう。下のリストのように入力してください。


さて,このプログラムを読んでいきましょう。
1行目:TrigピンをArduinoの3番に接続します
2行目:EchoピンをArduinoの2番に接続します
4行目:超音波が片道移動するのに要した時間を変数durationに格納します。ここでは,初期値として0を代入しています
5行目:durationと音速から算出される距離を変数distanceに格納します。ここでは,初期値として0を代入しています
6行目:気温25℃における音速を変数speed_of_soundに代入します
9行目:シリアル通信の速度を9600bpsに設定します。このコマンドによりシリアルモニターに数値などを出力することができるようになります
10行目:ECHO,すなわち2番ピンを入力モードにします
11行目:TRIG,すなわち3番ピンを出力モードにします
15~19行目:超音波センサーの送信部から超音波を送信します。送信の仕方は仕様で決まっています
20行目:超音波が往復にかかった時間をdurationに代入します。pulseIn関数はパルスがHIGHになっている時間を取得します。単位は μsec です
22~28行目:durationが正,すなわち反射波をセンサーが検知したときの動作を記しています。
23行目:durationを2で割ることにより片道の時間を算出しています
24行目:距離を算出しています。時間×速度で求められますね。ただし,speed_of_soundに格納されている音速の単位はm/secですので,単位をそろえるために 100/1,000,000 を掛けています。距離は cm で求められます
25~27行目:シリアルモニター(画面)上に距離を cm で表示します
30行目:200msec = 0.2sec だけ待機してから次の動作に移ります。
動作している様子を映した動画です!
まず,はじめは超音波センサーの前に名にもさえぎるものがない状態にしています。このとき,距離はだいたい180cm程度になっています。
次に,超音波センサーの前に手をかざしました。すると,距離が数cm 程度になり,障害物(この場合は手)までの距離がちゃんと計測されていることがわかります!(動画は拡大して見てください)


コメント