カラーソーターの組み立てとプログラミング ~レゴマインドストームEV3~
Contents
カラーソーターとは
教育用レゴマインドストームEV3でカラーソーターを組み立ててみる。
カラーソーターはカラーセンサーでブロックの色を読み取り、色別にそれぞれの位置にコンベアでソート(並び替え)を行う装置の事。
下記の動画を見ればカラーソーターのおよそのイメージは掴める。
駆動部の説明
ブロックの色を読み取るカラーセンサー、カラーブロックをMモーターで排出する機構、ソーター部をLモーター駆動のベルトコンベアで左右に移動させる機構がある。
カラーソーターの組み立て
カラーソーターの組み立ての様子
プログラム概要
プログラムの全体の概要
一つ一つのブロックの解説は後述する。
初期処理の後、カラーセンサーでブロックの色を連続して読み込んで変数(数値配列)に保存する。
その後、数値配列より読み取った色を順番に呼び出して色別にソーターの位置を移動してストッパーを操作してブロックを排出する。
尚、数値配列の詳細についてはこちらの記事を参照。
また記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい。
プログラム全体
カラーセンサーで読み取ったブロックをソーターで色別にそれぞれの位置に排出するプログラム
プログラムが大きいので3枚の画像にしている
1 | プログラム開始 |
2 | 3~39を繰り返す |
3 | カムを一番下に持ってくる |
4 | カムを一番上に持ってくる(ストッパーを上げる) |
5 | ソーターを左に移動(6まで) |
6 | タッチセンサーが押されるまで待機する |
7 | ソーターを停止する(ソーターが左端に移動される) |
8 | 1秒間待機する |
9 | モーターをリセットする |
10 | 数値配列を空にする |
11 | 12~20を8回繰り返す |
12 | 13、14の条件が真になるまで繰り返す |
13 | インテリジェントブロックの中央ボタンがおされる |
14 | カラーセンサーで2(青)、3(緑)、4(黄)、5(赤)のいずれかの色が読み取られる |
15 | 13、14が真の時に真をデータワイヤーで12の終了条件に引き渡す |
16 | 実行音をならす |
17 | 数値配列を読み込む |
18 | 色情報を数値で配列に引き渡す |
19 | 色情報を配列に書き込む |
20 | 2秒間待機する |
21 | Ready音を再生する |
22 | ディスプレイに”EV3”を表示する |
23 | 24~40を8回繰り返す |
24 | 1秒間待機する |
25 | ソーターを左に移動(26まで) |
26 | タッチセンサーが押されるまで待機する |
27 | ソーターを停止する(ソーターが左端に移動される) |
28 | 数値配列を読み込む |
29 | 読み込んだ数値配列のインデックス・ループ番目に格納されている色情報(数値)を取り出して30に渡す |
30 | 色情報により処理を4つに振り分ける |
31 | Blue音声を再生する |
32 | ソーターを左端に移動する |
33 | Green音声を再生する |
34 | ソーターを左から二番目の位置に移動する |
35 | Yellow音声を再生する |
36 | ソーターを左から三番目の位置に移動する |
37 | Red音声を再生する |
38 | ソーターを一番右まで移動する |
39 | カムを下げてストッパーを下げる(カラーブロックが下に移動する) |
40 | カムを上げてストッパーを上げる(カラーブロックが排出される) |
使用したブロック
今回使用したブロックは以下の13種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
Mモーターブロック
軽いものを素早く動かすのが得意なモーター
今回はストッパーを上下させる事によりカラーブロックを排出する為に使用する。
Lモーターブロック
重いものをゆっくり動かすのが得意なモーター
今回はベルトコンベアを使ってソーターを左右に移動させる
待機ブロック
指定した条件になるまで待機する
タッチセンサーが押されるまで待機する ソーターを左端に寄せるため使用する
| |
1秒間待機する
※2秒間待機のブロックも使用している |
モーター回転ブロック
モーター回転をリセットする ※今回の動作には直接関係は無い。モーターの回転数等を測定する時に備えて初期処理でモーターの測定値をリセットした
|
変数ブロック
テキスト、数値、ロジック、数値配列、ロジック配列を格納(書き込み)、読み込みする事ができる。
インテリジェントブロック ボタン
正面の 5 つのボタン(上下左右、中央)からデータを取得する。
どのボタンが押されたのか数値出力すると同時にボタンのうちの一つが押された、離れた、またはバンプの結果を比較結果としてロジック(真 or 偽)で出力する。
カラーセンサーで色を読み取っている時にインテリジェントブロックボタンの中央のボタンを押す。 そのタイミングで色の情報を数値配列に格納する
|
カラーセンサーブロック
「色の判別」「反射光の強さの測定」「周囲の光の強さの測定」ができる。
カラーセンサーブロックの色を読み取る
|
ロジック操作ブロック
論理和、論理積、排他的論理和、否定を判定する為のブロック。
音ブロック
様々な音を再生する為のブロック。
表示ブロック
インテリジェントブロックのディスプレイにテキスト、図形、イメージを表示するブロック。
ディスプレイ”EV3”と表示する
|
配列操作ブロック
配列の操作を行うためのブロック。
尚、配列操作ブロックの機能詳細についてはこちらの記事を参照。
読み取った色(数値)を配列に追加格納する 数値配列についてはこちらの記事を参照
| |
数値配列に格納されている色情報をインデックスで順番に呼び出す
|
スイッチブロック
条件によって処理を分岐することができるブロック。
色別(青、緑、黄、赤)に処理を分岐する。
※色の読み上げとLモーターでのソータ移動を行う |
実際に動かしてみた動画
カラーセンサーにブロックの色を読み取らせる所からソーターがカラーブロックをそれぞれの位置に配置するまでのプログラムを動画で説明している。
最近のコメント