2017年5月17日
- EV3技術情報
- Java
- TETRIX技術情報
- ソフトウェア
- ソフトウェア
TETRIXをJava(leJOS)で動かすには-180度サーボモータを動かす
Java(leJOS)で作成したプログラムで、TETRIXの180度サーボモータを制御する方法を紹介します。
なお、DCモータの制御方法はこちらを、 エンコーダー付きDCモータの制御方法はこちらをご覧ください。
※ここでは、TETRIXをEV3と接続して制御する方法を紹介します。
※EV3のJava言語プログラミング環境については、「教育版EV3 Javaプログラミングガイド」をご参照ください。
※ここで紹介する内容は、leJOS EV3 バージョン 0.9.1-betaを用いて動作を確認したものです。
※ここで紹介する内容は、仕様変更前のサーボモーターコントローラー(商品型番:PI-W34302)を使用したものです。
仕様変更後のTETRIX MAX Servo Motor Expansion Controller(商品型番:PI-W44355)では動作しませんのでご注意ください。
仕様変更前後の製品についてはこちらをご覧ください。
◆ロボット
・サーボモーターコントローラーはEV3のセンサーポート1に接続します。
・サーボモーターコントローラーのChan.1に180度サーボモータを接続します。
◆サンプルプログラム
このプログラムは、サーボモータを指定した位置まで回転させます。
1 | import lejos.hardware.Button; |
---|---|
2 | import lejos.hardware.device.tetrix.TetrixControllerFactory; |
3 | import lejos.hardware.device.tetrix.TetrixServo; |
4 | import lejos.hardware.device.tetrix.TetrixServoController; |
5 | import lejos.hardware.lcd.LCD; |
6 | import lejos.hardware.port.SensorPort; |
7 | import lejos.utility.Delay; |
8 | |
9 | public class ServoMotor { |
10 | |
11 | public static void main(String[] args) { |
12 | // Servo Motor Controller |
13 | TetrixControllerFactory cf = new TetrixControllerFactory(SensorPort.S1); |
14 | TetrixServoController sc = cf.newServoController(); |
15 | |
16 | // Servo Motor |
17 | TetrixServo srv = sc.getServo(TetrixServoController.SERVO_1); |
18 | |
19 | // 0度の位置まで回転 |
20 | srv.setAngle(0); |
21 | Delay.msDelay(1000); |
22 | |
23 | // 180度の位置まで回転 |
24 | srv.setAngle(180); |
25 | Delay.msDelay(1000); |
26 | |
27 | // 現在位置(角度)を表示 |
28 | LCD.clear(); |
29 | LCD.drawString("angle = " + srv.getAngle(), 0, 5); |
30 | Button.waitForAnyPress(); |
31 | LCD.clear(); |
32 | LCD.refresh(); |
33 | |
34 | } |
35 | } |
まずはTetrixControllerFactoryを生成します。(13行目)引数にはサーボモーターコントローラーが接続されているEV3のセンサーポートを指定します。 次にサーボモーターコントローラーを定義します。(14行目) 続いてサーボモータを定義します。(17行目)引数にはサーボモータが接続されているサーボモーターコントローラーのチャンネルを指定します。
setAngleメソッドでサーボモータを指定した位置まで回転させます。(20・24行目) setAngleメソッドはサーボモータの回転が完了する前に次の処理へ移るため、回転の完了を待つ処理が必要です。(21・25行目) 最後にサーボモータの位置(角度)をEV3の液晶画面に表示します。(29行目)
※サンプルプログラムは一例として紹介しています。誤り等が含まれていた場合はご了承ください。
◆メソッド・コンストラクタ サンプルプログラムの中で使用している主なTETRIX関連のメソッド・コンストラクタは以下のとおりです。
コンストラクタ:
public TetrixControllerFactory(Port port) |
TetrixControllerFactoryを生成する。 |
メソッド:
public TetrixServoController newServoController() |
サーボモーターコントローラーを定義する。 |
public TetrixServo getServo(int servoID) |
サーボモータを定義する。 |
public void setAngle(float angle) |
指定した位置までサーボモータを回転させる。 |
public float getAngle() |
サーボモータの現在位置(度)を取得する。 |
詳しくは以下のページをご覧ください。
http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixControllerFactory.html
http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixServoController.html
http://www.lejos.org/ev3/docs/lejos/hardware/device/tetrix/TetrixServo.html
(2017/05/09現在)