前回は、2つのモータを制御するロボットカーを製作するところまで進んだので、
今回は、ソナーセンサーHC-SR04で距離を計ってみる。hirotaka-hachiya.hatenablog.com
HC-SR04とArduino UNOとを次のように配線した。
具体的には、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から送られてきた距離情報を表示することができる。