アプリケーションの開発¶
Maven プロジェクトの作成 (Mac/Linux/Windows 環境で実施)¶
項目 | 入力内容 |
---|---|
プロジェクト名(N) | HelloDuke |
プロジェクトの場所(L) | 任意のディレクトリ |
グループID(A) | jp.etrobo.ev3.sample |
バージョン(V) | 1.0 |
パッケージ(P) | jp.etrobo.ev3.sample |
プロジェクトが正常に作成されるとプロジェクト・タブに下記のようなプロジェクトが作成されます。
プロジェクトを作成した後、プロジェクト・ファイル内の pom.xmlをクリックして開き,下記の内容を書き込んで(コピペで貼り付けて)ください。
以下は、実行されるファイル名です。
<mainClass>jp.etrobo.ev3.sample.HelloDuke</mainClass>
ただし、以下の EV3 に割り当てられている IP アドレス は、お使いの環境に合わせて、書き換えてください。
<url>scp://10.0.1.1/</url>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jp.etrobo.ev3.sample</groupId>
<artifactId>HelloDuke</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
<plugins>
<!--- MANIFEST ファイルを作成するプラグイン -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>jp.etrobo.ev3.sample.HelloDuke</mainClass>
</manifest>
<manifestEntries>
<Class-Path>/home/root/lejos/lib/ev3classes.jar /home/root/lejos/libjna/usr/share/java/jna.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!--- デスクトップからネット経由で jar ファイルをコピーするためのプラグイン -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>upload-jar</id>
<phase>package</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<!-- ~/.m2/settings.xml ファイルに記述したログインID、パスワードの参照 -->
<serverId>ev3-root</serverId>
<!-- EV3 に割り当てられている IP アドレス -->
<url>scp://10.0.1.1/</url>
<fromDir>${project.basedir}/target</fromDir>
<includes>*.jar</includes>
<excludes>*-sources.jar</excludes>
<!-- EV3 のコピー先ディレクトリ -->
<toDir>/home/lejos/programs</toDir>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- ローカル・レポジトリにインストールしたファイルへの参照
mvn install:install-file
-Dfile=ev3classes.jar
-DgroupId=ev3.classes
-DartifactId=ev3classes
-Dversion=0.9.1 -Dpackaging=jar
-->
<dependencies>
<dependency>
<groupId>ev3.classes</groupId>
<artifactId>ev3classes</artifactId>
<version>0.9.1</version>
</dependency>
<!-- ローカル・レポジトリにインストールしたファイルへの参照
mvn install:install-file
-Dfile=dbusjava.jar
-DgroupId=ev3.dbus
-DartifactId=dbusjava
-Dversion=0.9.1
-Dpackaging=jar
-->
<dependency>
<groupId>ev3.dbus</groupId>
<artifactId>dbusjava</artifactId>
<version>0.9.1</version>
</dependency>
</dependencies>
</project>
ID | root |
---|---|
パスワード | なし |
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>ev3-root</id>
<!-- EV3 の root ログイン ID -->
<username>root</username>
<!-- EV3 の root ログイン パスワード -->
<password>password</password>
</server>
</servers>
</settings>
このpom.xml ファイルを設定、保存後に wagon のライブラリが存在しないため、下記のようにHelloDukeプロジェクトは「ロード不可能」と表示されます。
この場合、プロジェクトを右クリックし、「プロジェクトの問題を解決…」を選択してください(Maven のセントラルレポジトリよりライブラリを入手)。
以下のようなエラーが表示されるので、[閉じる]を押してください。
依存性の修正¶
これを解消するために、ev3classes-0.9.1.jarを右クリックして、アーティファクトを手動インストールしてください。
入力画面が表示されるので、以下のファイル名を入力して、[ローカルにインストール]をクリックしてください。
C:\Program Files\leJOS EV3\lib\ev3\ev3classes.jar
実行用プログラムの作成¶
- プロジェクトのソース・パッケージ jp.etrobo.ev3.sample を選択して右ボタンをクリックし、「新規-Javaクラス」を選んでください。
- 新規Java アプリケーションのウィンドウが開くので、以下の内容を入力し、[終了(F)]を押してください。
項目 | 入力内容 |
---|---|
クラス名(N) | HelloDuke |
パッケージ(P) | jp.etrobo.ev3.sample |
以下のコードをjp.etrobo.ev3.sample.HelloDuke に書き込んで(コピペで貼り付けて)ください。
package jp.etrobo.ev3.sample; import lejos.hardware.Battery; import lejos.hardware.Button; import lejos.hardware.lcd.LCD; import lejos.hardware.Sound; import lejos.utility.Delay; public class HelloDuke { public static void main(String[] args) { int v = Battery.getVoltageMilliVolt(); // 電源電圧の取得し、液晶に表示 LCD.drawString("Voltage:" + v + " mV", 0, 2); LCD.drawString("Hello duke!", 0, 4); // "Hello duke!"を液晶に表示 Button.LEDPattern(5); // 赤色LEDを点滅させる。 Sound.playTone(440, 100); // 440Hzの音を 900ms再生 Delay.msDelay(900); // 900m秒待つ Sound.playTone(440, 100); // 440Hzの音を 900ms再生 Delay.msDelay(900); // 900m秒待つ Sound.playTone(440, 100); // 440Hzの音を 900ms再生 Delay.msDelay(900); // 900m秒待つ Sound.playTone(880, 3000); // 880Hzの音を3000ms再生 Button.LEDPattern(0); // 赤色LEDの点滅を停止する。 } }
- コードのビルド
メニューから「実行(R)-プロジェクト(HelloDuke)をビルド F11」を選び、ビルドを開始してください。
ビルドの途中に、Netbeans右下のコンソールに以下のようなEV3との接続の許可を求めるメッセージが表示されるので、yesを入力しEnterで次に進んで下さい。
Netbeans右下のコンソールに「BUILD SUCCESS」のメッセージが表示されれば、ビルドは完了です。
BUILD SUCCESS Total time: 0.905s Finished at: Fri Jan 23 12:10:07 JST 2015 Final Memory: 5M/15M
この時点で、実行プログラムは、EV3 の/home/lejos/programsディレクトリにアップロードされています。
本章は、著者の了解を得て、以下の資料を元に作成しました。
LEGO Mindstorms with Java leJOS ハンズオン・ラボ Version 1.0
http://www.slideshare.net/OracleMiddleJP/lego-mindstormslejos-hands-on-lab
@author Yoshio Terada, Java Evangelist http://yoshio3.com