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現在)
