カラーセンサーの反射光の調整 ~レゴマインドストームEV3~ | そう備忘録

カラーセンサーの反射光の調整 ~レゴマインドストームEV3~

カラーセンサーの反射光の調整

教育用レゴマインドストームのカラーセンサーの反射光の強さの”最小値”、”最大値”を調整するプログラムを作成する。

カラーセンサーは主に以下の3種類のことができる。

  1. 色の判別
  2. 反射光の強さの測定
  3. 周囲の光の強さの測定(明るさ)

今回は2つ目の反射光の強さを測定する機能を使用する。

反射光の強さの測定は物体に光を当てて反射する光の強さを測定する。

黒い物体は光を吸収するので反射光も弱くなる。

一方、白い物体は光を反射するので反射光も強くなる。

この機能を利用してカラーセンサーで白いシート上の黒いライン等を判別する事ができる。

その際に例えば白い紙上の反射光の強さが80%だった時にその値を最大値の100%として扱うようにカラーセンサーの最大値を調整する事ができる(最小値も同様に調整可能)

カラーセンサーの最大値、最小値を調整するプログラムを作成する。

プログラムの概要

プログラムは上半分はカラーセンサーの測定値をディスプレイに表示する、下半分はカラーセンサーの最小値、最大値を調整するプログラム。

2つは並列で動作する。

尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい

反射光の強さの最大値、最小値を変更するプログラム

使用するブロック

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

ループブロック

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

反射光の強さをインテリジェントブロックのディスプレイに表示する為に使用する。

ループブロック無条件に繰り返し

  • 番号:01
  • ループ:無限

カラーセンサーブロック

「色の判別」「反射光の強さの測定」「周囲の光の強さの測定」ができる。

今回は反射光の強さを測定すると共にその値を最小値、最大値としてカラーセンサーに設定をする。

カラーセンサー 反射光の強さの測定

カラーセンサーで反射光の強さを測定して数値化(%)する

  • カラーセンサー:測定、反射光の強さ
  • 照明:測定結果(%)をデータワイヤーで出力する
反射光の強さ、最小値の設定

値にセットされている数値でカラーセンサーの最小値を調整する。

  • カラーセンサー:調整、反射光の強さ、最小
  • 値:最小値に調整する数値をセットする

例)

値に10(%)がセットされている時はこの処理を実行するとリセットされるまで10(%)が最小値の0(%)として扱われる様になる

10(%)以下の反射光は全て0(%)として扱われるようになる

反射光の強さ、最大値の設定

値にセットされている数値でカラーセンサーの最大値を調整する。

  • カラーセンサー:調整、反射光の強さ、最大
  • 値:最大値に調整する数値をセットする
反射光の強さ、リセット

調整した反射光の強さの最小値、最大値を元に戻す。

  • カラーセンサー:調整、反射光の強さ、リセット

テキストブロック

複数の文字列を結合するブロック。

最大3つの文字列を結合することができる。

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

テキストブロック 結合

カラーセンサーで測定した反射光の強さ(数値)の後ろに”%”の文字列を結合する

  • テキスト:結合
  • A:カラーセンサーの反射光の強さ(数値)でデータワイヤーで受け取る
  • B:”%”の文字列
  • C:未使用
  • 結果:A+”%”の文字列が出力されるのでデータワイヤーで表示ブロックに出力する

表示ブロック

インテリジェントブロックのディスプレイにテキスト、図形、イメージを表示する為のブロック。

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

表示ブロック

カラーセンサーの反射光の強さを文字列に変換してテキストで画面中央に表示する

  • 表示:テキスト、グリッド
  • テキスト:データワイヤーでテキストブロックの出力結果を受け取る
  • 画面消去:真(表示前に画面消去を行う)
  • 列:5(列目)
  • 行:5(行目)
  • 色:黒
  • フォント:2(大)

待機ブロック

条件に一致するまで待機をするブロック。

インテリジェントブロックのボタンを押されるまで待機

インテリジェントブロックの右ボタンを押されるまで待機する

このブロックを挟むことによりプログラムは一旦停止する

  • 待機:インテリジェントブロックボタン、比較、インテリジェントブロックボタン
  • インテリジェントブロックボタンIDのセット:3(右ボタン)
  • 状態:2(バンプ)
  • ボタンID:押されたボタンのIDが出力される(今回は未使用)

音ブロック

ファイルの再生、トーン周波数、音符の再生ができるブロック。

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

音ブロック クリック音の再生

クリック音を再生する

プログラム的には必須では無いがインテリジェントブロックの右ボタンを押したことが分かるように配置した

  • 音:ファイルの再生
  • ボリューム:100(最大値)
  • 再生タイプ:0(完了待ち)
  • ファイル名:Click

プログラム全体

プログラム全体とそれぞれの処理内容は以下の通り

反射光の強さの最小・大値を調整するプログラム

プログラム開始

3~5を繰り返す

反射光の強さを測定する

測定値と”%”を結合する

反射光の強さをディスプレイに表示する

プログラム開始

1~6のプログラムと同時並行で動作する

右ボタンが押されるまで待機する

反射光の強さを測定する

8の結果を最小値としてカラーセンサーに設定する

10

クリック音

11

右ボタンが押されるまで待機する

12

反射光の強さを測定する

13

12の結果を最大値としてカラーセンサーに設定する

14

クリック音

15

右ボタンが押されるまで待機する

16

カラーセンサーの最小値、最大値設定をリセットする

17

クリック音

調整前の測定結果

上記のプログラムの6~7の時の測定結果

調整前の反射光の強さ

緑:20%

調整前 緑

調整前の反射光の強さ

黒:11%

調整前 黒

調整前の反射光の強さ

白:90%

調整前 白

調整後の測定結果

上記のプログラムの8~14の時の測定結果

緑を測定している時に最小値設定(9の処理)、白を測定している時に最大値設定(13の処理)を実行した。

16が実行させると設定値は元に戻る。

調整後の反射光の強さ

緑:0%

と認識される

調整後 緑

調整後の反射光の強さ

黒:0%

緑よりも反射光が弱い黒も0%と認識される

調整後 黒

調整後の反射光の強さ

白:100%

と認識される様に調整した

調整後 白

実際に動かしてみた動画

プログラミングの様子とカラーセンサーで反射光の強さを読み取って最小値、最大値を設定する様子を動画にしている。

souichirou

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

おすすめ

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

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