02_Distance

距離を測定する

超音波距離センサーで物体までの距離をセンチメートルで測ります。

距離センサーモジュール
1

準備する

CherryIoTとモジュールを接続する

CherryIoTの指定コネクタに以下のモジュールを接続し、CherryIoTをPCのUSB-A挿入口に接続します。

距離センサーモジュール

距離センサーモジュール

接続先:A

2

サンプルコード

GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。

02_Distance.ino
GitHubで開く
GitHubからコードを読み込んでいます...
3

プログラムを書き込む

上のサンプルコードをコピーし、Arduino IDEに貼りつけます。

ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。

初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。

4

動作確認

Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

Arduino IDEでシリアルモニターを表示する場所

センサーの前で物体を動かすと、シリアルモニターに表示される距離が変化するなら成功です。

5

コードの解説

超音波の往復時間をpulseInで読み取り、音速を使って距離へ換算します。

02_Distance.ino
GitHubで開く
GitHubからコードを読み込んでいます...

const int trigPin = 3;コネクタAの距離センサーの超音波送信端子に対応するGPIO3を、定数trigPinへ保存します。

const int echoPin = 1;コネクタAの距離センサーの超音波受信端子に対応するGPIO1を、定数echoPinへ保存します。

float Duration = 0;超音波が往復する時間を保存するため、小数を扱えるfloat型の変数Durationを用意し、初期値を0にします。

float Distance = 0;計算した距離を保存するため、float型の変数Distanceを用意し、初期値を0にします。

void setup() {setup関数は電源を入れたときやリセットしたときに1回だけ実行されます。ここでシリアル通信と距離センサーの端子を設定します。

Serial.begin(115200);距離センサーで測定した結果をPCへ表示するため、115200bpsでシリアル通信を開始します。

pinMode(echoPin,INPUT);距離センサーから戻ってくる信号を読み取れるように、echoPinをINPUT(入力)に設定します。

pinMode(trigPin,OUTPUT);距離センサーへ超音波を出すための信号を送れるように、trigPinをOUTPUT(出力)に設定します。

void loop() {loop関数は繰り返し実行されます。超音波を送信し、反射して戻るまでの時間から物体までの距離を計算します。

digitalWrite(trigPin, LOW);測定を始める前にtrigPinをLOWにし、送信信号をいったん停止状態にします。正しい長さの信号を作るために必要です。

delayMicroseconds(2);2マイクロ秒待ちます。マイクロ秒は100万分の1秒です。

digitalWrite(trigPin, HIGH);trigPinをHIGHにし、距離センサーへ超音波を送信するための信号を出します。

delayMicroseconds(10);10マイクロ秒待ちます。

digitalWrite(trigPin, LOW);trigPinをLOWへ戻し、送信信号を終了します。

Duration = pulseIn(echoPin, HIGH);pulseInでechoPinがHIGHになっている時間をマイクロ秒単位で測り、Durationへ保存します。この時間は、超音波が物体に当たって戻るまでの往復時間です。

Duration = Duration/2;Durationを2で割り、超音波の往復時間をセンサーから物体までの片道時間へ直します。

Distance = Duration*340*100/1000000;片道時間に音速340m/sを掛け、単位をセンチメートルへ換算してDistanceへ保存します。

Serial.print("Distance:");測定値の前に「Distance:」と表示します。

Serial.print(Distance);計算した距離を表示します。

Serial.println("cm");距離の単位「cm」を表示して改行します。

delay(500);0.5秒待ちます。