LoginSignup
1
1

More than 5 years have passed since last update.

【leJOS】JavaでEV3のモーターをリモートコントロールしよう

Last updated at Posted at 2017-03-13

はじめに

この記事はleJOSの開発環境が整っていることが前提にしています。
詳しくはこちらの記事を参考にして下さい。

【leJOS】mindstorm-EV3をJavaでプログラミングしよう【環境構築前編】

【leJOS】mindstorm-EV3をJavaでプログラミングしよう【環境構築後編】

概要

leJOSでは、PC側で作成したプログラムをEV3本体にデプロイして実行するという開発方法が一般的ですが、実はWiFi経由でプログラムをデプロイすることなくリモートコントロールすることが可能です。
ちなみにPythonからev3devをリモートコントロールする方法も前に解説しています。

【ev3dev】RPyCプロトコルでPythonによる遠隔操作プログラムを作ろう

今回はleJOSを使ってJavaでこれを実現します。

サンプルプログラム

モーターをリモートコントロール

IMG_8638.JPG

LモーターをEV3本体のAポートに接続し、下記のプログラムをPC側で実行させて下さい。
デプロイする必要はありません。IPアドレスはそれぞれの環境に合わせて下さい。
ビープ音を鳴らしLモーターを180度回転させるプログラムです。

RemoteEv3.java
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import lejos.hardware.Sound;
import lejos.remote.ev3.RMIRegulatedMotor;
import lejos.remote.ev3.RemoteEV3;

public class RemoteEv3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        RemoteEV3 ev3 = null;
        RMIRegulatedMotor m = null;

        try {
            //EV3に接続、引数にEV3のIPアドレス
            ev3 = new RemoteEV3("192.168.2.91");
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NotBoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //初期化
        ev3.setDefault();
        //モーターのインスタンス作成(ポートAにLargeモーターを接続する)
        m = ev3.createRegulatedMotor("A",'L');
        //ビープ音を鳴らす
        Sound.beep();
        //モーターを180度回転
        try {
            m.rotate(180);
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

解説

リモートコントロールにはRemoteEV3クラスを作ります。
引数にEV3のIPアドレスを渡してインスタンスを生成します。

ev3 = new RemoteEV3("192.168.2.91");

モーターにアクセスするにはcreateRegulatedMotorメソッドを利用します。
第一引数にString型で接続ポート、第二引数にchar型でモーターの種類('L'もしくは'M')を指定します。

m = ev3.createRegulatedMotor("A",'L');

Lモーター

Mモーター

参考

http://www.lejos.org/ev3/docs/lejos/remote/ev3/RMIEV3.html

https://yoshio3.com/tag/lejos/

まとめ

EV3を簡単にリモートコントロール出来ることが分かりました。
JavaFXなどと組み合わせたらGUIツールを開発することもできそうですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1