今回は、前回整えたEV3の開発環境を利用して、サンプルプログラムを動かしてみます。
#サンプルプログラムをビルドする
##動的ローディング方式とスタンドアローン方式
サンプルプログラムを含め、開作成したプログラムはすべて、動的ローディング形式かスタンドアローン形式で実行することができます。
それぞれの特徴を以下にまとめます。
- 動的ローディング方式...OSとアプリケーションの実行ファイルを分け、OS実行中にダイナミックローディング機能を使ってアプリケーションの実行ファイルだけをロードして実行する。
- スタンドアローン方式...ダイナミックローディング機能を使用せず、OSとアプリケーションを1つの実行ファイルにして単独で実行する。
要はOSとアプリケーションファイルを分けるかどうか、という違いみたいですね。
私はどちらも試してみたのですが、スタンドアローン方式だとコンパイルに時間がかかってしまったで、今回は動的ローディング方式でビルドして実行していきたいと思います。
##動的ローディング方式の方法
まず、Cygwinを起動してEV3RTのルートディレクトリ(hrp2)に移動します。
移動が完了したら、ロードしたいアプリケーションのワークスペースに移動します。サンプルプログラムはEV3RTのパッケージにすでに入っていて、hrps/sdk/workspaceにいろいろと置いてあります。
今回は、ブロックを使って車体を組み立てる必要のない、"helloev3"をビルドして実行したいと思います。
$ make app=helloev3
とコマンドを入力し、実行します。
こんな感じで処理が行われます。エラーが出なければビルド成功になります。
ビルドが正常に終了すると、appというファイルが作成されます。lsコマンドで確認しましょう。
#SDカードにアプリケーションファイルを転送する
さて、実は今回作成したアプリケーションは、環境開発の際にダウンロードした、"ev3rt-beta6-3-release.zip"のなかに含まれています。
ev3rt-beta6-3-release.zipを解凍すると、ev3rt-beta6-3-release/sdcard/ev3rt/appsに、ビルド済みのhelloev3が入っています。ev3rt-beta6-3-release/sdcardにはデフォルトのアプリケーションローダのuImageも含まれているので、今回はev3rt-beta6-3-release/sdacardの中身(ev3rtというフォルダとuImage)をmicroSDカードのルートディレクトリにコピーします。
コピーが完了したら、コピー先のev3rt/appsフォルダ内に、生成したappをコピーします。
#helloev3の実行
コピーしたらmicroSDカードをPCから取り外し、ev3に差し込みます。
SDカードの差し込みが完了したら、本体の電源を入れます。中央の濃い灰色のボタンを押すことで起動します。
↑起動するとこんな画面になります。そのまま真ん中の濃い灰色のボタンを押して、プログラムの読み取り先一覧を表示させます。
真ん中の濃い灰色のボタンの上と下にあるボタンを押して、"SD card"にカーソルを合わせ、真ん中のボタンを押します。
すると、先ほどSDカードにコピーしたフォルダの中に入っていたアプリケーションが表示されます。カーソルを"helloev3"に合わせてエンターボタンを押すと実行です。
実行するとこんな感じの画面になります。"Connect device"を選択することで、モータやセンサーをev3に接続することができます。
接続が完了したら、"Test sensor"もしくは"Test motor"を選択、ポート番号を選択して、選択したポートに接続されているデバイスを選択することで、選択したデバイスの動作チェックができます。
画像のように、ケーブルを使って物理的につないだ後にプログラム内でソフト的につなぐ必要があります。ここで注意なのが、デバイスを接続するときは、モーターは本体上側面のA-Dのポートに、センサーは本体した側面の1-4のポートに接続してください。
ちなみにモーターやセンサーがなくてもサンプルプログラムは使えます。"Test brick"を選択すると、本体のLEDやボタンの動作のチェックができます。例えば、Test brickからTest LEDを選択すると、LEDの点灯色を選択できるようになっています。
通常LEDは緑色なのですが、"Orange"を選択したことにより、オレンジ色に光っていることがわかります。
ちなみにこのサンプルプログラム、本体正面の左上のボタンを押すと前の選択に戻ることができます。なので、いちいち本体を再起動させなくても左上のボタンさえ押せば、一度の起動でセンサー、モーター、本体デバイスのすべてをテストすることができます。