電子工作 part3 ~超音波センサ~

もう6月も下旬ですね。

ワールドカップも決勝トーナメント進出を決めたチームも出てきてますます過熱してますね。

さて、今回は超音波センサを使って、一定の距離より近づくと光る仕組みを作ります。

前回のCdSセルと組み合わせれば、暗くなった時間帯に何かが近づいてきたら、振る舞いを行えるようになります。

超音波センサとは?

 超音波センサには4つの端子を持っています。Vcc、Trig、Echo、GNDの4つです。

超音波センサはTrigより超音波を発信し、Echoで受信を行います。この発信と受信の時間から距離を測定することが出来ます。

使う材料

Arduino uno
ブレッドボード
LED:2コ
抵抗330Ω:2コ
超音波センサ:1コ
ジャンプワイヤ(オスオス):数本
一定の距離より近づいた際にLEDが切り替わるようにします。Vccは5Vと接続、Trigは8ピンと接続、Echoは9ピンと接続、LEDには12と13ピンを使います。

以下はコードになります。

// 送信側のピン番号
const int TRIGPIN = 8;

// 受信側のピン番号
const int ECHOPIN = 9;

// HIGHの時間(μ秒)
const int CTM = 10;

// 青LED
const int LED_BLUE = 12;

// 赤LED
const int LED_RED = 13;

// 時間差(μ秒)
int dur;

// 距離(cm)
float dis;

void setup() {

// シリアル通信の宣言
Serial.begin (9600);

// 超音波距離センサ
pinMode(TRIGPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);

// LED
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_RED, OUTPUT);

}

void loop() {

digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(CTM);
digitalWrite(TRIGPIN, LOW);

// 超音波が物体にあたり跳ね返ってくるまでの時間を測定
dur = pulseIn(ECHOPIN, HIGH);

// 物体までの距離に変換
dis = (float) dur * 0.017;

// シリアルモニタへ出力
Serial.print(dis);
Serial.println(" cm");

// 距離が50cm以上なら青LEDを光らせる
if(dis < 50) {
digitalWrite(LED_BLUE,HIGH);
digitalWrite(LED_RED,LOW);

// 50cm未満なら赤LEDを光らせる
}else{
digitalWrite(LED_BLUE,LOW);
digitalWrite(LED_RED,HIGH);

}

delay(500);

}

以下実際の動作です。

ちょっとわかりづらいですが、白い紙を近づけた後に赤いLEDが光ってます。

youtu.be