Arduinoで超音波センサーを使って衝突回避を行いたい。
超音波センサーの仕組みを知りたい。
プログラムってどのように書いたらいいの?

こんな人達に、Arduinoのスタートキットを使って、初心者や子供にもわかる回路構成とプログラミング内容について紹介します。
ELEGOO社製のArduino互換品は非常に安価で製品も多数入っているため、初心者が最初に学ぶ際には非常におすすめです。

Arduinoで超音波センサを使用するために必要な部品を紹介します。
今回使用する部品はこちらになります。
・Arduino UNO
・超音波センサ(HC-SR04)
・ブレッドボード
・ジャンパ線
・LEDまたは電子ブザー

Arduinoで動く超音波センサ回路を作ってみる。
ではArduinoと超音波センサをつないでいきましょう。
今回は、距離に応じてLEDを点灯または電子ブザーを鳴らす回路を作っていきます。
まず、超音波センサをブレッドボードに取り付けます。

超音波センサには、Vcc、Trig、Echo、GNDの4つのピンが取り付けられています。まず、Vcc、GNDのピンをArduinoの5VとGNDに接続します。(今回はブレッドボードを通じて接続します)

Trigピンと12ピン、Echoピンと11ピンを接続します。


これで超音波センサの回路は完成です。次に、LEDまたは、電子ブザーの取り付けを行います。距離に応じてLEDが点灯する回路を作っていきたいと思います。
まずLEDのアノード(+極)と5ピン、カソード(-極)とGNDを接続します。


以上で回路完成です。LEDを電子ブザーと変えても動作する回路になります。距離に応じて音を出したい場合、LEDを電子ブザーに変えてください。
Arduinoの超音波センサプログラムを作成してみる
ではプログラムを作成してきましょう。プログラムの内容はこちらになります。
超音波センサを使用する場合は、下記のSR04.hのライブラリをインクルードしてください。上部のスケッチのライブラリを管理で、検索欄にSR04とうつと、出てきますので、インストールしてください。似たようなものもありますが、私はこちらをインストールしました。(どれでも行けると思います)


#include "SR04.h"
#define TRIG_PIN 12
#define ECHO_PIN 11
#define LED 5
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
void setup() {
Serial.begin(9600);
delay(1000);
pinMode(LED,OUTPUT);
}
void loop() {
a=sr04.Distance();
Serial.print(a);
Serial.println("cm");
delay(10);
if(a<10){
digitalWrite(LED,HIGH);
}else{
digitalWrite(LED,LOW);
}
}
今回使用する関数はこちらになります。
sr04.Distance()
ライブラリの中に上記の関数が定義されており、こちらで、cm単位で距離を測定しています。超音波センサの原理は、Trigピンから出したパルスがEchoピンに帰ってくるまでの時間を2で割り、音速(340m/s)をかけることで測定しています。
SR04(ECHO_PIN,TRIG_PIN)
ECHOピンとTRIGピンの初期設定を行っています。
今回は回路で接続した11ピンと12ピンを使用します。
以上でプログラムは完成です。
この内容で実際に動かしてみましょう。
Arduinoと超音波センサで距離に応じてLEDを点灯する
実際にArduinoにコンパイルし、動かしてみると超音波センサに物体を近づける(今回は10cm以下)LEDが点灯します。

次にLEDの代わりに電子ブザーを取り付けます。電子ブザーにも極性があるので、+極、-極に注意してください。そうすると、物体を近づけると音が鳴る回路になります。

こんな感じで距離に応じてLEDを点灯したり音を鳴らしたりする回路を作ることができました。これで、物体が近づいたときに音で知らせたりすることができるようになると思います。
詳しくは、こちらの動画をご覧ください。