surga Lab

営業部でも開発したい!!

Arduinoで超音波距離センサを使ってみました

何かの距離を測りたいって時、あると思います。

Arduinoでは簡単に距離センサも利用できると聞いたので試してみました。

購入したのはHC-SR04、一般的な超音波距離センサです。

f:id:hisurga:20161029233734j:plain

回路

データシートによるとtriggerを10μs HIGHにすることで超音波が放出され、反射して戻るまでechoがHIGHになるみたいですね。
そのechoの時間を利用して距離を計測します。
データシート

f:id:hisurga:20161030002242p:plain

それをもとにするとこんな感じになりました。
どうすればかっこよく書けるんでしょうかね。

f:id:hisurga:20161031000848p:plain:w400

写真だとこちら。

f:id:hisurga:20161029233735j:plain

コード

上述したセンサの仕様からコーディングします。

#define ECHO 8
#define TRIG 13

void setup()
{
  pinMode(ECHO, INPUT);
  pinMode(TRIG, OUTPUT);
  Serial.begin( 9600 );
}
void loop()
{
  double Interval = 0; //受信間隔
  double Distance = 0; //距離
 
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  //ECHOピンがLOWになるまでの時間を取得
  //タイムアウトで0が返る
  Interval = pulseIn(ECHO, HIGH);

  if (Interval != 0)
  {
    //片道
    Interval = Interval / 2;
    //距離を計算(音速:340m/s)
    Distance = Interval * 340 * 0.0001;
    Serial.print(Distance);
    Serial.println("cm");
  }
  delay(1000);
}

完成

結果をシリアルで出力しているため、
ツール > シリアルモニタ で確認します。

f:id:hisurga:20161029232913p:plain

予想より容易に実装できましたね。
今後定番の自走カーを作る時などに利用したいです。
音速には温度が影響するため、そちらも考慮するとより精度が上がると思います。