距離センサーを使ってみる光センサーの値を音にするという訳の分からない仕組みを作り、すっかりセンサーが楽しくなってしまった私。次なるセンサーと選んだのは「距離センサー」。その名の通り距離を測定するセンサーです。世に距離センサーは沢山ありますが、手に入れたのは簡易距離センサーである「HC-SR04」。40kHzという高い周波数の超音波を出して、それが反射して戻って来るまでの時間から距離を計測するセンサーです。このセンサーを使って実際に距離を測るまでをやってみたいと思います。HC-SR042つの突起が特徴的な距離センサー。カタログ(PDF)はこちら。説明書などが無く上の基盤だけが届きました。男気溢れてます(笑)。ちなみにお値段は500円位でした(Amazonで買って送料無料)。使い方がわからないのでWebであれこれ調べて見ると、どうやら次のように使用するようです。写真にある4つのピンを拡大してみます:左のVccが電源入力で定格は直流5Vだそうです。これはArduinoの電源の電圧そのものなので有りがたい限りです。左がら2番目の「Trig」というのはトリガー(Trigger)です。ここにパルス的に電圧を掛けます。時間は10μ秒以上との事。いう感じですね(^-^;。すると2つのスピーカーから40kHzという超音波が非常に短い間で8回放たれます。放出した超音波は対象物に当たりセンサー側に戻ってきます。戻ってきたら、右から2番目の「Echo」というピンにそのかかった時間分電圧が出力されます(HIGH状態)。よって、EchoがHIGHになっている時間と音波が空気中を伝わる速さから、その距離が計算できる。そんな仕組みのようです。次は動作を与えるプログラムを考えてみます。)とスイッチONにします。その後10μ秒以上待ちます。これはdelayMicrosecond関数というμ秒単位でウェイト出来る関数を用いると良いと思います。)でトリガーパルスを切ります。この切った瞬間に距離センサーは大変に短い40kHzの超音波を8回放出します。)とプログラムを進めます。pulseIn関数は呼ばれた段階から指定のピンを監視し、電圧がHIGHになって再びLOWに戻るまでの時間を測定して返してくれます。このセンサーの為にあるかのような便利関数です(^-^)。いつまでも待ってはくれなくて、デフォルトでは1秒経つと関数が戻ってきます。戻り値のパルス時間(μ秒単位)から距離を計算します。音は1秒間で空気中をおよそ340m位伝わります。この速度は温度など周りの環境で随分と変わってしまいます。詳しくはWikipedia(音速)で。春先のやや肌寒い15度くらいだと340mですが、夏の暑い30度だと349mと9mも変わってしまいます。正確に距離を計るには温度をファクターとして入れた方が良いのですが、今は340mで測ってみます。超音波が放出して反射して戻って来るまでの時間をtμ秒とすると、1000000μ秒=1秒で340m伝わるのですから、tμ秒だと、340m×t/1000000で往復の距離(m)、その半分で反射した物までの距離が計算できます。