テクノロジー

img_technologyTop01

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

TETRIXをJava(leJOS)で動かすには-180度サーボモータを動かす

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

 

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

 

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

 

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

 

メソッド:

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

お問い合わせ

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.
レゴ、レゴのロゴマーク、レゴ マインドストームは、 レゴグループの登録商標です。