超音波センサーによる距離測定プログラム ~レゴマインドストームEV3~ | そう備忘録

超音波センサーによる距離測定プログラム ~レゴマインドストームEV3~

超音波センサーでの距離測定

教育用レゴマインドストームEV3の超音波センサーを使って物体との距離を測定してリアルタイムにインテリジェントブロック(白い本体)のディスプレイに測定結果を表示するプログラムを作ってみる。

超音波センサーで距離の測定

プログラミングにあたって3種類のデータワイヤー(※)を使用する。

※データワイヤーはプログラム中のブロックとブロックをドラッグ&ドロップで結んだ時に表示される線(ワイヤー)の事。

伝搬されるデータの種類によってワイヤーの太さ、色が異なってくる。

今回は3種類のデータワイヤーを使ってプログラミングをする事にした。

データワイヤー ロジック

ロジック(緑)

条件に一致している(真)/していない(偽)などのロジックを伝搬するデータワイヤー

データワイヤー 数値

数値(黄)

数値を伝搬するデータワイヤー

データワイヤー テキスト

テキスト(オレンジ)

テキスト(文字列)を伝搬するデータワイヤー

データワイヤーは上記の他に更に2種類ある。

  • 数値配列(黄・太線)
  • ロジック配列(緑・太線)

配列については別記事で試してみる事にした。

使用するブロック

使用するブロックは以下の5種類。

ループブロック

ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。

ループ カウント

ループの条件は”ロジック”。

判定結果が”真”になるまでループを繰り返す。

超音波センサーの比較結果をデータワイヤーで受け取ってループの条件を判定する。

  • 番号:01
  • ループ:ロジック

超音波センサーブロック

超音波センサーで物体との距離を測定する。

超音波センサーブロック

物体との距離が5cm未満かどうかの比較結果と測定距離の2種類の情報をデータワイヤーを使って出力する。

  • 超音波センサー:比較、距離(cm)
  • 比較タイプ:4(~未満)
  • しきい値:5(cm)
  • 比較結果:5cm未満になった時に”真”になる
  • 距離(cm):数値

テキストブロック

テキスト(文字列)を結合して一つのテキストにする。

A、B、Cと最大3つの文字列を結合ができる。

尚、テキストブロックの詳細についてはこちらの記事を参照

テキストブロック

データワイヤーでAに入力された数値を文字列に変換してBの文字列(”cm”)と結合して結果に出力する。

  • テキスト:結合
  • A:データワイヤーより入力
  • B:”cm”
  • C:未設定
  • 結果:AとBの文字列を結合する

表示ブロック

インテリジェントブロック(本体)のディスプレイにテキスト、イメージなどを表示させる為のブロック。

今回は2種類の表示ブロックを使用した。

なお、表示ブロックの機能詳細についてはこちらの記事を参照

表示ブロック

データワイヤー経由で入力された物体との距離をインテリジェントブロックのディスプレイに表示する。

  • 表示:テキスト、グリッド
  • テキスト:データワイヤーで入力される
  • 画面消去:真(表示前に画面をクリアする)
  • 列:4(列目に表示)
  • 行:4(行目に表示)
  • 色:偽(黒)
  • フォント:2(大)
  • テキスト(右上):ワイヤーテキスト
表示ブロック Neutral

Neutralのイメージ(両目を開けた画像)をインテリジェントブロックのディスプレイに表示する。

  • 表示:イメージ
  • 画面消去:真(表示前に画面をクリアする)
  • X:0
  • Y:0
  • ファイル名:Neutral

待機ブロック

条件を満たすまで待機をするブロック。

待機ブロック

3秒間待機する

  • 待機:時間
  • 秒:3

ディスプレイにNeutralイメージが表示された後、待機させないと初期表示に戻ってしまうので待機ブロックを使って3秒間表示させる。

測定距離をディスプレイに表示するプログラム

超音波センサーで物体との距離を測定して結果を文字列に加工してディスプレイに表示するプログラム。

物体との距離が5cm未満になるとループを終了してNeutralイメージ(両目の画像)を表示してプログラムを終了する。

超音波センサーで距離を測定してディスプレイに表示するプログラム

プログラム開始

超音波センサーの比較結果が真(5cm未満)になるまで3~5を繰り返す。

比較結果は緑のデータワイヤーで伝搬される。

5cm未満になると6に制御を移す。

超音波センサーで物体との距離を測定する。

このブロックからは2種類の情報がデータワイヤーで他のブロックに伝えられている。

  1. 物体との距離が5cm未満かどうかの比較結果をロジックとして緑のデータワイヤーでループブロック(2)に伝搬する。
  2. 物体との距離を数値として黄色のデータワイヤーでテキストブロック(4)に伝搬する。

超音波センサーの測定した物体との距離の後ろに”cm”の文字列を付加してテキストとしてオレンジのデータワイヤーで表示ブロック(5)に伝搬する。

データワイヤーで伝えられたテキスト(オレンジ)を入力にして、物体との距離をインテリジェントブロックのディスプレイに表示する。

ディスプレイにNeutralイメージを表示する。

3秒間待機してイメージファイルを表示する。

実行結果

物体との距離を超音波センサーで測定してディスプレイに表示。

距離は10.7cm

物体との距離

5cm未満になったのでNeutralイメージをディスプレイに表示する。

5cm未満になった時

プログラミング動画

プログラミングと物体との距離を随時測定してインテリジェントブロックのディスプレイに表示する様子を動画にしている。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。