テクノロジー

img_technologyTop01

製品をもっと詳しく知りたい方へ
技術研究所

TETRIXをJava(leJOS)で動かすには-DCモータを動かす

Java(leJOS)で作成したプログラムで、TETRIXのDCモータを制御する方法を紹介します。

 

なお、180度サーボモータの制御方法はこちらを、
エンコーダー付きDCモータの制御方法はこちらをご覧ください。

 

※ここでは、TETRIXをEV3と接続して制御する方法を紹介します。
※EV3のJava言語プログラミング環境については、「教育版EV3 Javaプログラミングガイド」をご参照ください。
※ここで紹介する内容は、leJOS EV3 バージョン 0.9.1-betaを用いて動作を確認したものです。

 

◆ロボット
・ロボットはDCモータを2つ用いた車型とします。
・DCモーターコントローラーはEV3のセンサーポート1に接続します。
・DCモーターコントローラーのMotor1には右タイヤのDCモータを、Motor2には左タイヤのDCモータを接続します。

 

◆サンプルプログラム
このプログラムは、パワー20で2秒間前進した後、パワー10で2秒後退します。

1 import lejos.hardware.device.tetrix.TetrixControllerFactory;
2 import lejos.hardware.device.tetrix.TetrixMotor;
3 import lejos.hardware.device.tetrix.TetrixMotorController;
4 import lejos.hardware.port.SensorPort;
5 import lejos.utility.Delay;
6
7 public class DcMotor {
8
9   public static void main(String[] args) {
10     // DC Motor Controller
11     TetrixControllerFactory cf = new TetrixControllerFactory(SensorPort.S1);
12     TetrixMotorController mc = cf.newMotorController();
13
14     // DC Motor
15     TetrixMotor mot1 = mc.getBasicMotor(TetrixMotorController.MOTOR_1); // right
16     TetrixMotor mot2 = mc.getBasicMotor(TetrixMotorController.MOTOR_2); // left
17
18     // MOTOR2の回転方向を反転
19     mot2.setReverse(true);
20
21     // Set Power
22     mot1.setPower(20);
23     mot2.setPower(20);
24
25     // 前進
26     mot1.forward();
27     mot2.forward();
28     Delay.msDelay(2000);
29
30     // 停止
31     mot1.stop();
32     mot2.stop();
33
34     // Set Power
35     mot1.setPower(10);
36     mot2.setPower(10);
37
38     // 後退
39     mot1.backward();
40     mot2.backward();
41     Delay.msDelay(2000);
42
43     // 停止
44     mot1.stop();
45     mot2.stop();
46   }
47 }

 

まずはTetrixControllerFactoryを生成します。(11行目)引数にはDCモーターコントローラーが接続されているEV3のセンサーポートを指定します。
次にDCモーターコントローラーを定義します。(12行目)
続いてDCモータを定義します。(15・16行目)引数にはDCモータが接続されているDCモーターコントローラーのチャンネルを指定します。
左タイヤのDCモータは、回転方向のプラスマイナスを逆に設定します。(19行目)
こうすることによって、forwardメソッドでDCモータをプラス方向に回転させた際、左タイヤのDCモータは通常のプラス方向と反対方向に回転し、ロボットは前進します。(27行目)

 

※サンプルプログラムは一例として紹介しています。誤り等が含まれていた場合はご了承ください。

 

◆メソッド・コンストラクタ
サンプルプログラムの中で使用している主なTETRIX関連のメソッド・コンストラクタは以下のとおりです。

 

コンストラクタ:

public TetrixControllerFactory(Port port)

TetrixControllerFactoryを生成する。
引数にはDCモーターコントローラーまたはサーボモーターコントローラーが接続されているインテリジェントブロックEV3のセンサーポートを指定する。

 

メソッド:

public TetrixMotorController newMotorController()

DCモーターコントローラーを定義する。

public TetrixMotor getBasicMotor(int motorID)

DCモータを定義する。
引数にはDCモータが接続されているDCモーターコントローラーのチャンネルを指定する。

public void setReverse(boolean reverse)

DCモータの回転方向のプラスマイナスを逆に設定する。
引数がtrueの場合、回転方向のプラスマイナスが本来と逆方向に設定される。

public void setPower(int power)

DCモータのパワーを設定する。パワーの範囲は0~100。

public void forward()

DCモータをプラス方向に回転させる。

public void backward()

DCモータをマイナス方向に回転させる。

public void stop()

DCモータの回転を停止させる。

 

詳しくは以下のページをご覧ください。

http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixControllerFactory.html
http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixMotorController.html
http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixMotor.html

(2017/05/09現在)

お問い合わせ

CONTACT

株式会社アフレル

本社/カスタマーセンター

〒918-8231 福井市問屋町3-111
TEL.0776-25-0303 FAX.0776-25-0309 info@afrel.co.jp
カスタマーセンター電話受付  9:30-17:30 (土日・祝日・年末年始を除く) MAP

東京支社

〒103-0001
東京都中央区日本橋小伝馬町2-8 新小伝馬町ビル5F
TEL.03-6661-9251 FAX.03-3249-3741 MAP
  • 正規代理店

    LEGO education logo

  • PITSCO logo

  • NI logo

  • virtual robotics toolkit logo

資料内容の無断転載、複製を禁じます。
製作・著作 株式会社アフレル

Copyright 2017 Afrel Co.,Ltd. All Rights Reserved.

© LEGO, the LEGO logo, MINDSTORMS and the MINDSTROMS logo are trademarks of the LEGO Group.
© 2017 The LEGO Group.
レゴ、レゴのロゴマーク、レゴ マインドストームは、 レゴグループの登録商標です。