プロジェクト12:超音波測距センサー
このプロジェクトで学ぶこと: 超音波の往復時間から距離を計算する方法を学びます。物理の「速さ=距離÷時間」がそのままプログラムになる体験です。
完成イメージ
[手をかざした距離がシリアルモニタにcm単位で表示されているスクリーンショットを挿入]
必要な部品
| 部品名 | 数量 |
|---|---|
| Arduino Uno R3 | 1 |
| 超音波距離センサー(HC-SR04) | 1 |
| ブレッドボード | 1 |
| ジャンパー線 | 4本 |
回路図と配線
[回路図画像を挿入]
配線手順
- HC-SR04の VCC をArduinoの 5Vピン に接続する
- HC-SR04の GND をArduinoの GNDピン に接続する
- HC-SR04の TRIG をArduinoの 9番ピン に接続する
- HC-SR04の ECHO をArduinoの 8番ピン に接続する
Arduinoスケッチ(プログラム)
// 超音波センサーで距離計測
const int TRIG_PIN = 9;
const int ECHO_PIN = 8;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(9600);
}
void loop() {
// 超音波パルスを送信
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10); // 10マイクロ秒のパルスを送る
digitalWrite(TRIG_PIN, LOW);
// 反射波が返るまでの時間を計測(マイクロ秒)
long duration = pulseIn(ECHO_PIN, HIGH);
// 距離を計算(音速340m/s ≒ 0.034cm/μs、往復なので÷2)
float distance = duration * 0.034 / 2.0;
Serial.print("距離: ");
Serial.print(distance, 1);
Serial.println(" cm");
delay(200);
}
コードのポイント解説
pulseIn(ピン, HIGH) ECHOピンがHIGHになっている時間(マイクロ秒)を計測します。超音波が発射されてから反射波が返るまでの時間です。
距離の計算 音速は約340m/s=0.034cm/マイクロ秒。超音波は物体まで往復するので、時間を2で割ります。 距離(cm) = 計測時間(μs) × 0.034 ÷ 2
delayMicroseconds() delay()の1000分の1の精度。10マイクロ秒のような短いタイミング制御に使います。
動作確認
- スケッチをアップロードしてシリアルモニタを開く
- センサーの前に手をかざすと距離(cm)が表示されれば成功
- 2〜400cmの範囲で正確に計測できます
このプロジェクトで学んだこと
pulseIn(): パルスの長さを時間として計測する方法を習得しました- 物理量への変換: 計測時間を数式で距離に変換する考え方を学びました
- マイクロ秒制御:
delayMicroseconds()による高精度なタイミング制御を体験しました
次のプロジェクト「7セグ表示でストップウォッチ」では、複数の出力ピンを組み合わせてデジタル数字を表示します。
深掘り:技術の背景と社会への広がり
超音波技術の起源:タイタニック号の悲劇から
1912年のタイタニック号沈没事故を受け、「目に見えない障害物を検出する」技術開発が急加速しました。1915年にポール・ランジュバンがソナー(音響測深器)を開発し、水中で音波を使って潜水艦を探知する技術として第一次世界大戦で実用化されます。1940年代には民間への技術移転が進み、漁業用の魚群探知機が開発されました。現在のHC-SR04のような小型超音波センサーは、この軍事・産業技術の流れの末端に位置します。
自動車の安全から医療診断まで
超音波センサーの現代的応用は多岐にわたります。自動車の駐車アシストシステム(バックソナー)は超音波で障害物を検知し、ドライバーに音と表示で知らせます。医療分野では超音波エコー(超音波診断装置)が胎児のモニタリング・臓器検査に使われており、放射線を使わない安全な画像診断として世界中の病院で活躍しています。また近年ではAGV(無人搬送車)やドローンの障害物回避センサーとして、物流・農業・建設現場の自動化を支えています。
← プロジェクト11:ポテンショメーター | 全プロジェクト一覧 | 次のプロジェクト:7セグストップウォッチ →

