22
EV3 ハンズオン資料 1 Mindstorms EV3 ハンズオン資料 (2014 3 月版) 瀬尾佳隆 (@seosoft) / 技術ひろば.net MVP for Visual C# (Jan 2009 - Dec 2014)

LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

Embed Size (px)

DESCRIPTION

LEGO Mindstorms ev3 のハンズオン資料 (2014年3月15日(土) 開催の組み込み勉強会で使用)

Citation preview

Page 1: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

1

Mindstorms EV3 ハンズオン資料 (2014 年 3 月版)

瀬尾佳隆 (@seosoft) / 技術ひろば.net

MVP for Visual C# (Jan 2009 - Dec 2014)

Page 2: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

2

目次

1 EV3 ソフトウェアの概要 ........................................................................................................................... 4

1.1 EV3 ソフトウェアの画面レイアウト ..................................................................................................... 4

1.2 プログラミングパレット ........................................................................................................................ 5

1.2.1 動作パレット ............................................................................................................................ 5

1.2.2 フローパレット ........................................................................................................................... 5

1.2.3 センサーパレット ....................................................................................................................... 5

1.2.4 データ操作パレット ................................................................................................................... 6

1.2.5 拡張パレット ............................................................................................................................ 6

1.2.6 マイブロックパレット ................................................................................................................... 6

2 EV3 ソフトウェアの基本的な操作方法 .................................................................................................... 7

2.1 プロジェクトの作成方法 ................................................................................................................... 7

2.2 プログラミングの基本的な流れ ......................................................................................................... 8

2.3 プログラミング時の操作の補足 ....................................................................................................... 11

2.3.1 不要なブロックを削除する方法 .............................................................................................. 11

2.3.2 ブロックを関連する処理単位に分けて表示する方法 ............................................................. 11

3 Mindstorms EV3 プログラミング ............................................................................................................. 13

3.1 モデルを走らせる(ブロック 1 個のもっとも簡単な例) ................................................................... 13

3.2 複数ブロックを順番に実行するプログラム ....................................................................................... 15

3.3 センサー値を受け取る ................................................................................................................... 16

3.4 複数の処理を同時に実行する...................................................................................................... 17

3.5 センサー値によって徐々に動作を変更する .................................................................................... 18

3.6 多数の処理を順番に実行していく ................................................................................................. 20

4 最後に ................................................................................................................................................. 22

Page 3: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

3

Page 4: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

4

1 EV3 ソフトウェアの概要

この章の目的:この章では EV3 プログラミングをするために必要な知識を身につけます。

1.1 EV3 ソフトウェアの画面レイアウト

LEGO Mindstorms EV3 (以下 EV3) ソフトウェアの画面は以下のようなレイアウトです。開発を始める前に画面

の構成要素を見ておきます。

プログラミングキャンバス・・・プログラムを作成する領域です。EV3 ソフトウェアでは上図のようにブロックを組

み合わせることでプログラミングを行います。ソースコードの記述は行いません。

プログラミングパレット・・・プログラムに使用するブロックが表示される領域です。ブロックの種類ごとにタブを

分けて表示されます。

ハードウェアページ・・・EV3 本体にプログラムを転送したり、EV3 に接続されている入出力モジュールの種類

およびそのセンサー値を表示したりする領域です。

コンテンツエディタ・・・プログラムに関係する文書やレポートなどを整理する領域です。今回のハンズオンで

は使用しないので、右上のアイコンをクリックして閉じておいてください。

Page 5: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

5

1.2 プログラミングパレット

プログラミングパレットにはプログラミングに使用できるアイコンが表示されます。ここからプログラミングキャンバスに

ブロックをドロップして、他のアイコンと接続することでプログラムの流れを記述します。

プログラミングパレットではブロックは種類ごとに 6 個のタブにまとめて表示されます。

1.2.1 動作パレット

モーターやスピーカーといった出力対象のブロックが表示されます。

1.2.2 フローパレット

プログラムの流れを制御するブロックが表示されます。他のプログラミング言語の if 文や while 文などの制御構

文に相当するものです。

1.2.3 センサーパレット

EV3 に接続できるセンサー類のブロックが表示されます。入力対象のブロックです。

Page 6: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

6

1.2.4 データ操作パレット

変数や数学的な演算を行うブロックなど、内部でデータを扱うためのブロックが表示されます。

1.2.5 拡張パレット

Bluetooth 通信やデータロギングなどの拡張機能のブロックが表示されます。

1.2.6 マイブロックパレット

何度も利用するような処理、またはプログラム全体の見通しをよくするためにまとまった処理をマイブロックとして

登録することができます。このようなブロックが表示されるパレットです。他のプログラミング言語でのサブルーチンに

相当するものです。

※今回のハンズオンではマイブロックは使用しません。

Page 7: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

7

2 EV3 ソフトウェアの基本的な操作方法

2.1 プロジェクトの作成方法

EV3 の新規プロジェクトを作成するには以下のようにします。

1. 左側のメニューで [ファイル] を選択する

2. [新規プロジェクト] を選択する

3. [プログラム] を選択する

4. [開く] を選択する

5. キャンバスにスタートブロックだけが配置された画面に遷移する

以上で新規プロジェクトが作成されました。この後はキャンバスにブロックをドロップしてプログラムを作ります。

Page 8: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

8

2.2 プログラミングの基本的な流れ

EV3 ソフトウェアでプログラミングする際の基本的な流れは次の通りです。

1. パレットで使いたいブロックを選択する

2. ブロックを繋げる

すでに配置されているブロックの近くに新しいブロックをドラッグすることでブロック同士を繋げることができま

す。キャンバス上のブロックの近くに新しいブロックをドラッグするとグレーの影が表示されます。この位置でブ

ロックをドロップすると二つのブロックが繋がります。

Page 9: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

9

3. ブロックの動作を変更する

例えばモーターの場合には、オフ/オン/秒数(指定の秒数だけモーターを回す)/角度(指定の角

度だけモーターを回す)/回転数(指定の回転数だけモーターを回す)の変更が可能です。

さらに動作の秒数、時間、距離などの値を指定します。

4. ブロックを繋げる

希望の動作をするようにブロックを繋げていきます。プログラムは接続された左側のブロックから順に実行さ

れます。

例えば以下のプログラムは、3 秒間前進して停止した後に “Good job” と言うものです。

Page 10: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

10

5. プログラムを EV3 に転送する・・・USB ケーブル(または Bluetooth)で接続して、プログラムを EV3 に転送

します。

“ダウンロードして実行” では転送後にすぐに動作を始めます。USB ケーブルで接続している場合は EV3 が

急に動き出すことがあります。”ダウンロード” にするか、EV3 を持ち上げて転送するかすると安全です。

Page 11: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

11

2.3 プログラミング時の操作の補足

2.3.1 不要なブロックを削除する方法

間違えて配置したブロックや不要になったブロックを削除するには、対象のブロックを選択して Delete キーを押し

ます。

2.3.2 ブロックを関連する処理単位に分けて表示する方法

全てのブロックが繋がっているとプログラムが見づらくなることがあります。例えば以下の 2 つは全く同じプログラム

ですが、後者のほうが見やすいと思います。後者のようにブロックを離して配置して、接続線で繋ぐこともできま

す。

※他のプログラミング言語で適宜空行を入れてみやすくするのと同様です。

Page 12: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

12

離れたブロックを接続線で繋ぐには、左側のブロックの端子を右側のブロックにドロップします。

不要な接続線を削除するには右側のブロックの端子を選択して Delete キーを押します。

Page 13: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

13

3 MINDSTORMS EV3 プログラミング

3.1 モデルを走らせる(ブロック 1個のもっとも簡単な例)

このプログラムの目的:EV3 の最初のプログラムを作ります。もっとも簡単な例です。

もっとも簡単な例として、EV3 モデルを走らせるプログラムを作ります。3 秒間前進するものです。

モーターのパワー 50、秒数 3 秒程度に設定した場合は 1 メートル弱進みます。モデルの前方に障害物がない

ことを確認してから実行してください。

実行できたら、適宜設定値を変更して動作がどのように変わるかを確認してみてください。

Page 14: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

14

最初のプログラムなので、念のため手順を紹介します。

1. ステアリングブロックをキャンバスにドロップします。

2. ドロップしたブロックのモードを “秒数” に、秒の設定を “3” に変更します。

3. プログラムを転送して、EV3 モデルを動作させてみます。

ここまでは簡単に実行できると思います。モーターのパワー、秒数を適宜変更して動作を確認してみてください。

またステアリングとブレーキ方法も変更してみてください。実行時には前方の障害物には注意してください。

Page 15: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

15

3.2 複数ブロックを順番に実行するプログラム

このプログラムの目的:複数ブロックが順に実行されることを理解します。

複数のブロックを順に実行してみます。

音を鳴らしてから 3 秒前進、最後に別の音を鳴らすプログラムです。

Page 16: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

16

3.3 センサー値を受け取る

このプログラムの目的:センサー値を受け取ってプログラムで利用する方法を理解します。

これまでは決まった時間だけ前進するプログラムでした。障害物に近づいたら停止するプログラムを作ってみま

す。

障害物まで 15cm まで近づいたら停止するようにしてみます。赤外線センサーの待機ブロックはパレットの 2 番

目のセンサーパレットからドロップします。

障害物までの距離を変えたりブレーキ方法を変えたりして、動作を確認してみてください。

Page 17: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

17

3.4 複数の処理を同時に実行する

このプログラムの目的:複数の処理を同時に実行できることを理解します。

EV3 はマルチスレッド(複数の処理の同時実行)にも対応しています。

この後のプログラムのためにも、前のプログラムを変更して 1) 前進する処理 と 2) 障害物までの距離を調べる処

理 とを別のスレッドで実行してみます。前のプログラムと同様に障害物の 15cm 前で停止するものです。

図の下側のスレッドは、障害物まで 15cm 未満になるとループ中断ブロックを実行します。中断されるブロックは

上側のスレッドの “01” スレッド(無限ループ)です。 “01” ループが中断されるため、結果として次のモーター停

止のブロックが実行されます。

Page 18: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

18

3.5 センサー値によって徐々に動作を変更する

このプログラムの目的:センサーの入力値とモーターの出力とを連携する方法を理解します。

ここまではモーターの出力は固定の値でした。センサー値を使ってモーターのパワーを変更することができます。

以下のプログラムは、障害物まで 50cm 以上の時はモーターパワー 50 で前進し、50cm 未満になると障害物ま

での距離に応じて徐々にモーターのパワーを減らす、つまり減速します。ただし障害物まで 15cm 未満になるとモ

ーターを停止してプログラムを終了します。

センサーブロックの端子をモーターブロックのパワー端子にドロップすることで実現できます。

Page 19: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

19

Page 20: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

20

3.6 多数の処理を順番に実行していく

このプログラムの目的:これまでの復習としてもっと多くの処理を組み合わせます。

本書の最後に、ここまでのプログラム手順を複数組み合わせたプログラムを作ります。

以下のように動作します。

1. クラクションを鳴らします

2. 障害物まで 50cm になるまで等速で前進します

3. 障害物まで 50cm 未満になったら徐々に減速します

4. 障害物まで 10cm 未満になったら停止します

5. ブレーキ音を鳴らします

6. ゆっくり車輪半回転分だけ後進します(この後の処理のために広い場所に戻ります)

7. ゆっくり反転します

8. 前進します(元の場所に向かって進みます)

9. 障害物まで 10cm 未満になったら停止します

10. ブレーキ音と “Good job” を再生します

完成したら、他にも自由に処理を変更したり組み合わせたりしてみてください。

Page 21: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

21

Page 22: LEGO Mindstorms ev3 ハンズオン資料 (2014年3月版)

EV3 ハンズオン資料

22

4 最後に

LEGO Mindstorms EV3 はハンズオンのようなプログラミングだけでも楽しく役に立つ教材でありツールです。

しかしモデルを考えたり実際に組み立てたりするのも非常に楽しいものです。また C# や Java を使って、よりきめ

細かいプログラミングも可能です。

これを機に、ぜひ EV3 開発を本格的に楽しんでください。

以上