2017年5月17日
- EV3技術情報
- Java
- TETRIX技術情報
- ソフトウェア
- ソフトウェア
TETRIXをJava(leJOS)で動かすには-DCモータを動かす
Java(leJOS)で作成したプログラムで、TETRIXのDCモータを制御する方法を紹介します。
※ここでは、TETRIXをEV3と接続して制御する方法を紹介します。
※EV3のJava言語プログラミング環境については、「教育版EV3 Javaプログラミングガイド」をご参照ください。
※ここで紹介する内容は、leJOS EV3 バージョン 0.9.1-betaを用いて動作を確認したものです。
※ここで紹介する内容は、仕様変更前のDCモーターコントローラー(商品型番:PI-W34303)とDCギアモーター(商品型番:PI-W39530)を使用したものです。仕様変更後のTETRIX MAX DC Motor Expansion Controller(商品型番:PI-W44354)とTETRIX TorqueNADOモーター(商品型番:PI-W44260)では動作しませんのでご注意ください。
仕様変更前後の製品についてはこちらをご覧ください。
◆ロボット
・ロボットは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を生成する。 |
メソッド:
public TetrixMotorController newMotorController() |
DCモーターコントローラーを定義する。 |
public TetrixMotor getBasicMotor(int motorID) |
DCモータを定義する。 |
public void setReverse(boolean reverse) |
DCモータの回転方向のプラスマイナスを逆に設定する。 |
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現在)