カラーセンサーの反射光の調整 ~レゴマインドストームEV3~
Contents
カラーセンサーの反射光の調整
教育用レゴマインドストームのカラーセンサーの反射光の強さの”最小値”、”最大値”を調整するプログラムを作成する。
カラーセンサーは主に以下の3種類のことができる。
- 色の判別
 - 反射光の強さの測定
 - 周囲の光の強さの測定(明るさ)
 
今回は2つ目の反射光の強さを測定する機能を使用する。
反射光の強さの測定は物体に光を当てて反射する光の強さを測定する。
黒い物体は光を吸収するので反射光も弱くなる。
一方、白い物体は光を反射するので反射光も強くなる。
この機能を利用してカラーセンサーで白いシート上の黒いライン等を判別する事ができる。
その際に例えば白い紙上の反射光の強さが80%だった時にその値を最大値の100%として扱うようにカラーセンサーの最大値を調整する事ができる(最小値も同様に調整可能)
カラーセンサーの最大値、最小値を調整するプログラムを作成する。
プログラムの概要
プログラムは上半分はカラーセンサーの測定値をディスプレイに表示する、下半分はカラーセンサーの最小値、最大値を調整するプログラム。
2つは並列で動作する。
尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい。
使用するブロック
使用するブロックは以下の6種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
反射光の強さをインテリジェントブロックのディスプレイに表示する為に使用する。
![]()  | 無条件に繰り返し
  | 
カラーセンサーブロック
「色の判別」「反射光の強さの測定」「周囲の光の強さの測定」ができる。
今回は反射光の強さを測定すると共にその値を最小値、最大値としてカラーセンサーに設定をする。
テキストブロック
複数の文字列を結合するブロック。
最大3つの文字列を結合することができる。
![]()  | カラーセンサーで測定した反射光の強さ(数値)の後ろに”%”の文字列を結合する 
  | 
表示ブロック
インテリジェントブロックのディスプレイにテキスト、図形、イメージを表示する為のブロック。
![]()  | カラーセンサーの反射光の強さを文字列に変換してテキストで画面中央に表示する 
  | 
待機ブロック
条件に一致するまで待機をするブロック。
![]()  | インテリジェントブロックの右ボタンを押されるまで待機する このブロックを挟むことによりプログラムは一旦停止する 
  | 
音ブロック
ファイルの再生、トーン周波数、音符の再生ができるブロック。
![]()  | クリック音を再生する プログラム的には必須では無いがインテリジェントブロックの右ボタンを押したことが分かるように配置した 
  | 
プログラム全体
プログラム全体とそれぞれの処理内容は以下の通り
1  | プログラム開始  | 
2  | 3~5を繰り返す  | 
3  | 反射光の強さを測定する  | 
4  | 測定値と”%”を結合する  | 
5  | 反射光の強さをディスプレイに表示する  | 
6  | プログラム開始 1~6のプログラムと同時並行で動作する  | 
7  | 右ボタンが押されるまで待機する  | 
8  | 反射光の強さを測定する  | 
9  | 8の結果を最小値としてカラーセンサーに設定する  | 
10  | クリック音  | 
11  | 右ボタンが押されるまで待機する  | 
12  | 反射光の強さを測定する  | 
13  | 12の結果を最大値としてカラーセンサーに設定する  | 
14  | クリック音  | 
15  | 右ボタンが押されるまで待機する  | 
16  | カラーセンサーの最小値、最大値設定をリセットする  | 
17  | クリック音  | 
調整前の測定結果
上記のプログラムの6~7の時の測定結果
調整前の反射光の強さ 緑:20%  | ![]()  | 
調整前の反射光の強さ 黒:11%  | ![]()  | 
調整前の反射光の強さ 白:90%  | ![]()  | 
調整後の測定結果
上記のプログラムの8~14の時の測定結果
緑を測定している時に最小値設定(9の処理)、白を測定している時に最大値設定(13の処理)を実行した。
16が実行させると設定値は元に戻る。
調整後の反射光の強さ 緑:0% と認識される  | ![]()  | 
調整後の反射光の強さ 黒:0% 緑よりも反射光が弱い黒も0%と認識される  | ![]()  | 
調整後の反射光の強さ 白:100% と認識される様に調整した  | ![]()  | 
実際に動かしてみた動画
プログラミングの様子とカラーセンサーで反射光の強さを読み取って最小値、最大値を設定する様子を動画にしている。



















最近のコメント