EV3RT上のmrubyで超音波センサーを使用するサンプルを試す


ETロボコン中四国地区夏の独自勉強会で使用した、超初心者向けのサンプルコード(detection-system)の使い方です。
超音波センサーから30cm以内に障害物を検知している間、本体のLEDが緑色で光ります。

ハードの準備

EV3本体の「Port2」に超音波センサーを接続してください。(他は何もいりません。ETロボコンプライマリークラスの走行体をそのまま使うこともできます)

使い方

GitHubから detection-systemプロジェクトをcloneします

git clone https://github.com/yamanekko/detection-system.git

SDカードにローダー(uImage)をコピーする

EV3RTの動的ローディングで使用しているuImageが入っていればそのまま使ってください。
(sample_c4が動く状態であれば、新たにuImageをコピーする必要はありません)

EV3RTに同梱されているuImageを使います。
ev3rt/sdcard フォルダの中にあるev3rtフォルダとuImageファイルをSDカードにコピーします。

detection-system をコピーする

コピーしたev3rtフォルダの中のappsフォルダにdetection-appとmain_task.rbをコピーします。

実行する

SDカードをEV3にさして電源を入れてください
起動したら、真ん中の少し濃いグレーのボタンを押します。
SD cardを選択、detection-appを選択すると、画面に小さく「detection system」と表示されます。超音波センサーが光ったらプログラムは動作しています。超音波センサーの前に手をかざしてみてください。(このプログラムは超音波センサーから30cm以内で検出するように設定されています)

左上ボタンを長押しすると終了します。

実行するRubyコードを変更する

main_task.rbの中身を自由に書き換えて実行することもできます。
変更したmain_task.rbをSDカードのappsフォルダにコピーし直すだけでOK
(ビルド等は必要ありません)
※ 起動するファイル名をdetection-app内で指定しているため、このサンプルプログラムではmain_task.rbという名前のRubyコードのみ実行できます。

(参考)detection-appについて

本サンプルコードではこの部分を変更する必要はありませんが、改造して使うことはできますので、簡単に解説しておきます。
main_task.rbを実行するような設定になっているEV3RT用のアプリケーションです。
C/C++と同様、ビルドはworkspaceフォルダで行います。
ご自身でビルドしてみる場合は、Makefile.incの以下の場所を書き換えてください。

APPL_LIBS += /(mrubyがあるディレクトリ)/mruby/build/EV3RT/lib/libmruby.a -lm
INCLUDES += -I/(mrubyがあるディレクトリ)/mruby/include

書き換えたら、コマンドでworkspaceフォルダに移動します。

cd ~/ev3rt/hrp2/sdk/workspace

サンプルプログラムをビルドします。

make app=detection-system

生成されたappの名前をdetection-appにリネームしたものが同梱されているdetection-appです。

(参考)開発環境の作り方

detection-appを変更してみたい場合はmruby用の開発環境が必要になります。

mruby用の開発環境をまだ作っていない場合は以下を参考に作成してください。

EV3RTのC/C++用の環境がある人向け

C/C++用のEV3RT環境構築にmruby環境を追加する方法

EV3RT用環境構築がまだの方向け

TOPPERSの環境構築ガイド
Mac用にちょっと詳しいやつ