• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Arduino / Arduino基礎編 / ArduinoでSTEM教育​ 基礎編:超音波センサ

ArduinoでSTEM教育​ 基礎編:超音波センサ

2019年10月21日 by STEMSHIP 1 コメント

今回は、Arduinoと超音波センサで距離を測定し、距離に応じてLEDの明るさを変化させる方法を紹介します。LCDの使用方法については、以前の記事(ArduinoでSTEM教育​-基礎編:LCD)を参照してください。

目次

  • 使用する部品一覧
  • 超音波センサ(HC-SR04)の特徴や取り扱い方法
  • 超音波センサの測定原理
  • 回路図
  • 配線図
  • 組立完成写真
  • プログラム
  • 動かしてみよう
  • 今回学んだポイント
  • 改造してみよう

使用する部品一覧

使用する部品は図のとおりです。これらの部品は、すべて「ELEGOO Arduino用のMega2560スタータキット」に含まれています。

  • Arduino MEGA2560 R3 …1個​
  • 830穴 ブレッドボード …1個​
  • LCD1602モジュール …1個​
  • ポテンショメータ(10kΩ) …1個​
  • 超音波センサ(HC-SR04) …1個​
  • LED …1個​
  • 抵抗(220Ω) …1個​
  • ジャンパワイヤ(オス-メス) …4個​
  • ジャンパワイヤ(オス-オス) …18個

超音波センサ(HC-SR04)の特徴や取り扱い方法

超音波センサ(HC-SR04)は、測定可能距離が2cm~400cmのモジュールです。​​モジュールから超音波を送信し、物体にあたって跳ね返ってくるまでの時間を計測することで、距離を算出しています。​リードは、電源、GND、トリガ、エコーの4本あります。​

超音波センサの測定原理

超音波センサの測定原理について説明します。​トリガ端子にHighを10us以上入力すると、モジュールは40kHzの超音波を8回出力します。​その超音波が物体にあたって、反射波が帰ってくるまで、エコー端子はHighを出力します。​40kHzの反射波が帰ってくると、エコー端子はLowを出力します。​したがって、エラー端子のHigh期間の時間を計測することで、測定距離を計算できます。​音の速度は室温でおよそ340m/sなので、次の式で計算します。​

測定距離 = Highレベル時間×音速(340m/s)÷2​

回路図

超音波センサ(HC-SR04)の電源(VCC)端子は5Vに接続、グランド(GND)はGNDに接続、トリガ(Trig)端子はD2端子に接続、エコー(Echo)端子はD3端子に接続します。

​LEDのアノード(LED端子の長い方)はD6端子に接続し、カソード(LED端子の短い方)は電流制限抵抗(220Ω)と直列に接続してGNDに落とします。

配線図

ブレッドボードを使用した配線は図のとおりになります。

組立完成写真

実際に組み立てた写真です。同じようにできましたか?​

プログラム​​

最初に、超音波センサモジュール用のライブラリ(SR04.h)を#includeで読み込みます。​そして、SR04クラスを使用するために、SR04(ECHO_PIN, TRIG_PIN)で準備をします。​センサで測定した距離を格納する変数をdとして宣言しておきます。

メインループでは、sr04.Distance()で測定距離を得て、変数dに値を格納します。​LEDの輝度を設定するために、map(value, fromLow, fromHigh, toLow, toHigh)関数を使用して、測定距離0cm~200cmの範囲を0~255の値(PWMの範囲)に変換します。​最後に、LCDに測定距離を表示させるためのプログラムを記述します。

//www.stemship.com
//2019.10.14
#include <LiquidCrystal.h>
#include <SR04.h>
#define TRIG_PIN 2
#define ECHO_PIN 3
#define LED_PIN 6

SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long d; //センサ測定距離[cm]

//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.print("<Ultrasonic>");
}

void loop() {
  //センサ測定距離[cm]
  d = sr04.Distance();

  //LEDの輝度設定
  int intensity = map(d, 0, 200, 0, 255);
  analogWrite(LED_PIN, intensity);

  //LCD表示
  lcd.setCursor(0, 1);
  lcd.print("Distance=    cm");
  lcd.setCursor(10,1);
  lcd.print(d);

  //500ms待つ
  delay(100);
}

動かしてみよう

プログラムを書き込んで、実際に動かしてみてください。

今回学んだポイント

  1. 超音波センサは、超音波を送信して反射波が帰ってくるまでの時間を測定することで、距離を計算している。​
  2. 超音波センサモジュール用のライブラリ(SR04.h)を使用すれば、上記の計算後の値[cm]を得ることができる。​
  3. map()関数を使用することで、ある範囲から別の範囲に変換することができる。​

改造してみよう

もう少し理解を深めるために、自分で改造してみてください。​

  1. 測定距離が100cm以上のときは、LEDがOFFになるようにしてみよう。​
  2. さらに、測定距離が近づくにつれて、LEDが明るくなるようにしてみよう。

Filed Under: Arduino基礎編 関連タグ:超音波センサ

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM