🤖
エンジくん
コウモリは暗い洞窟でも超音波を使って障害物を避けるんだよ!同じ仕組みで距離を測るHC-SR04センサーを使って、自分だけのレーダーを作ろう!
1このレッスンで学ぶこと
- 📡 HC-SR04 — 超音波で距離を測るセンサー
- ⏱ pulseIn() — ピンがHIGHになっている時間を計る
- 🔢 距離計算 —
distance = duration × 0.034 ÷ 2 - 📊 delayMicroseconds() — マイクロ秒(1秒の100万分の1)単位で待つ
- 🎮 レーダーシミュレーター — スライダーで距離を再現!
2用意するもの
💡 HC-SR04はジャンパー線4本だけでArduinoにつながる!ブレッドボードも不要な場合が多いよ。
3HC-SR04超音波センサーのしくみ
📡 HC-SR04ってどんなセンサー?
VCC
5V電源
Trig(トリガー)
超音波を発射する命令を送る
Echo(エコー)
超音波が戻ってきた時間を知らせる
GND
マイナス(グランド)
⚡ 距離を測る流れ
1
Trigピンを10μsだけHIGHにする
「超音波を出せ!」という命令を送る。10マイクロ秒=0.00001秒!
↓
2
超音波が飛んでいく(音速:340m/s)
センサーから超音波パルスが発射される。前にある物体に当たると跳ね返ってくる!
↓
3
EchoピンがHIGHの時間を計る
pulseIn(ECHO, HIGH)で往復時間(マイクロ秒)を取得。
↓
4
距離に変換する
distance = duration × 0.034 ÷ 2
往復なので÷2して片道を求める!
🔢 距離計算の式
distance (cm) = duration (μs) × 0.034 ÷ 2
0.034 = 音速(1μsで進むcm数)
÷2 = 往復→片道に変換
例)duration = 1000μs → 1000 × 0.034 ÷ 2 = 17 cm
4コードを見てみよう
const int TRIG = 9; // Trigピン
const int ECHO = 10; // Echoピン
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
void loop() {
// ① Trigピンで超音波を発射
digitalWrite(TRIG, LOW);
delayMicroseconds(2); // 2μs待ってリセット
digitalWrite(TRIG, HIGH);
delayMicroseconds(10); // 10μsだけHIGHにする
digitalWrite(TRIG, LOW);
// ② 帰ってくるまでの時間を計る(マイクロ秒)
long duration = pulseIn(ECHO, HIGH);
// ③ 距離に変換(cm)
float distance = duration * 0.034 / 2.0;
// ④ シリアルモニターに表示
Serial.print("距離: ");
Serial.print(distance);
Serial.println(" cm");
delay(200);
}
⚠️ delayMicroseconds() は delay() よりずっと短い!
1マイクロ秒 = 0.000001秒(1秒の100万分の1)
💡 long型は int より大きな整数を扱える型。pulseIn()の戻り値は大きい数になることがあるのでlongを使おう!
5回路のつなぎ方
✅ HC-SR04は4本のジャンパー線だけでOK!抵抗も不要でシンプルな配線だよ。
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
超音波センサーの仕組み、ちゃんと覚えたかな?距離計算の式が大事だよ!
クイズを読み込み中…
8レーダーシミュレーター 📡
🤖
エンジくん
スライダーで物体との距離を変えてみよう!センサーがどう反応するか確認できるよ。
9まとめ
- ✅ HC-SR04はTrigピンで超音波を発射、Echoピンで帰ってくる時間を計る
- ✅
delayMicroseconds(10)でTrigを10μsだけHIGHにする - ✅
pulseIn(ECHO, HIGH)でEchoピンのHIGH時間(μs)を取得 - ✅
distance = duration × 0.034 ÷ 2で距離(cm)に変換 - ✅ 測定範囲は約2cm〜400cm。コウモリと同じ仕組み!