人気ブログランキング |

アマチュア無線やバイク,釣りの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

【Arduino】超音波距離センサ HC-SR04 を使ってみる

仕事で Arduino を使うことになったので,自分でも練習しなくてはと思い,秋月でこんなのを買ってみました.
d0106518_12481197.jpg
超音波距離センサ HC-SR04 です.これの何がよいかというと SIP で I/O が出ていることです.ブレッドボードすら使わず,こんな風にできますからね.
d0106518_12485694.jpg
後ろから見るとこんな感じ
d0106518_12490777.jpg
接続はこうなっています.
d0106518_12492275.jpg
HC-SR04 : Arduino
Gnd : GND
Echo : D13
Trig : D12
Vcc : D11
要するにD11ピンをセンサの電源にするわけです.

スケッチはこんな感じ
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT); //VCC
pinMode(12, OUTPUT); //Trig
pinMode(13, INPUT); //Echo
digitalWrite(11, HIGH); //power on
delay(1);
}

void loop() {
int duration;
float distance;
digitalWrite(12, HIGH); //trigger on
delayMicroseconds(11); //wait 11us cuz of sensor spec
digitalWrite(12, LOW); //trigger off
duration = pulseIn(13, HIGH); //get pulse width (us)
if (duration > 0) {
distance = (float)duration * 0.0174703;
// roundtrip duration[us]*349.41[m/s]@30 deg Celsius /2
Serial.print(distance);
Serial.println(" cm");
}
delay(500); //wait 500ms
}

シリアルでモニタするとこんな風に出てきます.
d0106518_12504231.jpg

普段から AVR は使いますが,Arduino は使わないので,多くの関数は自分で組みます.しかしこのくらいのことなら Arduino の方が格段に簡単にかけますね.たとえば距離は Echo 端子に出てくる信号の High になっている時間幅から得られるのですが,Arduino だと pulseIn なんていう関数が用意されてて,一行でかけちゃうわけです.

もちろん小回りはきかないので,AVR でやることがなんでも Arduino で済ませられるとは思いませんが,要は使い方ですね.車でいえば,今まで MT しか乗ってなかったけど,AT も乗るようになった感じでしょうか.笑

名前
URL
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by jq1ocr | 2018-07-25 21:30 | マイコン・電子工作 | Comments(0)