覚え書きブログ

読者です 読者をやめる 読者になる 読者になる

子供の夏休みの自由研究(ソナーセンサ編)

前回は、2つのモータを制御するロボットカーを製作するところまで進んだので、
今回は、ソナーセンサーHC-SR04で距離を計ってみる。hirotaka-hachiya.hatenablog.com

HC-SR04とArduino UNOとを次のように配線した。
f:id:hirotaka_hachiya:20150814074629p:plain
具体的には、HC-SR04のVcc、Trig、Echo、およびGNDピンを、それぞれArduino UNOの5V出力、D5、D4、およびGNDと接続している。

そして、スイッチサイエンスのHC-SR04のページを参考にして、HC-SR04で距離を計測し、シリアル通信でPC側に送るプログラムを作成した。

//Trig、EchoをD4、D5ピンに設定
int Trig = 4;
int Echo = 5;
int Duration;
float Distance;

void setup() {
  //シリアル通信のボーレートを9600Hzに設定
  Serial.begin(9600);

  //TrigとEchoを出力モードに設定
  pinMode(Trig,OUTPUT);
  pinMode(Echo,INPUT);
}

void loop() {
  //TrigにLow, High, Lowを出力
  digitalWrite(Trig,LOW);
  delayMicroseconds(1);
  digitalWrite(Trig,HIGH);
  delayMicroseconds(1);
  digitalWrite(Trig,LOW);

  //EchoがLOWからHighになってから再びLOWに戻るまでの時間(us)を計測
  Duration = pulseIn(Echo,HIGH);
  
  if (Duration>0) {
    //行と帰りがあるので、2で割る    
    Distance = Duration/2;

    //超音波の速度は、340m/sなので、0.034cm/usを、Durationにかけて、距離(cm)に変換
    Distance = Distance*340*100/1000000;

    //DurationとDistanceをシリアル通信で出力
    Serial.print(Duration);
    Serial.print(" us ");
    Serial.print(Distance);
    Serial.println(" cm");
  }
  delay(500);
}

Arduino UNOにプログラムを書き込んだ後、Arduino UNOとPC間をUSBケーブルで接続したままにし、
Arduino IDEの「ツール」->「シリアルモニター」を選択すると、次のようにシリアル通信でArduino UNOから送られてきた距離情報を表示することができる。f:id:hirotaka_hachiya:20150814075940p:plain