Skip to content

Latest commit

 

History

History
141 lines (87 loc) · 3.79 KB

File metadata and controls

141 lines (87 loc) · 3.79 KB

EV3RT::Motor - モータクラス

戻る

EV3のサーボモータを制御するクラスです。

メソッド一覧

メソッド 概要 シミュレータ対応 備考
new(port, type) 指定したポートのモータオブジェクトを生成します。
count モータの回転角度を取得します。
reset モータの回転角度を0°にリセットします。
pwm=n
power=n
モータのパワーをセットします。
rotate(degrees, speed, blocking) モータを指定した角度だけ回転させます。 ×
stop モータを停止します。

メソッド概要


EV3RT::Motor.new(port, type) => EV3RT::Motor

指定したポートのモータオブジェクトを生成します。

引数

引数 概要 備考
port EV3のモータポート番号 EV3RT::PORT_AEV3RT::PORT_D の範囲で指定します。
type EV3のモータ種別
  • EV3::NONE_MOTOR: モータ未接続
  • EV3::MEDIUM_MOTOR: サーボモータM
  • EV3::LARGE_MOTOR: サーボモータL
  • EV3::UNREGULATED_MOTOR: 未調整モータ
  • ETロボコン大会では EV3::LARGE_MOTOR を使用します。

    戻り値

    生成したモータオブジェクトを返します。


    EV3RT::Motor#count => Integer

    モータの回転角度を取得します。

    引数

    なし

    戻り値

    モータから取得した回転角度を返します。
    順方向の回転角度はプラスの値、逆方向の回転角度はマイナス値となります。


    EV3RT::Motor#reset => nil

    モータの回転角度を0°にリセットします。

    引数

    なし

    戻り値

    nil を返します。


    EV3RT::Motor.power=n

    EV3RT::Motor.pwn=n

    モータのパワーを -100100 の範囲で指定します。
    プラス値を指定した場合は順方向、マイナス値を指定した場合は逆方向に回転します。

    引数

    引数 概要 備考
    n モータのパワー値 (-100100)

    戻り値

    self (モータオブジェクト) を返します。


    EV3RT::Motor#rotate(degrees, speed, blocking) => self

    モータを指定した角度まで回転させます。

    注意

    このメソッドはETロボコンのシミュレータ環境では動作しません。

    引数

    引数 概要 備考
    degree 現在の回転角度を基準とした目標回転角度 順方向の回転角度はプラス値、逆方向の回転角度はマイナス値を指定します。
    speed モータのパワー値 (0100) 回転方向に化からわず絶対値で指定します。
    blocking 回転完了を待つかどうかを指定
  • true: 回転完了を待ってメソッドを終了します。
  • false: 回転完了を待たずにメソッドを終了します。
  • 戻り値

    self (モータオブジェクト) を返します。


    EV3RT::Motor#stop => self

    モータを停止します。

    引数

    なし

    戻り値

    self (モータオブジェクト) を返します。


    使用例

    # モータオブジェクト生成
    m_r = EV3RT::Motor.new(EV3RT::PORT_B, EV3RT::LARGE_MOTOR) # 右モータ:モータポートBを使用
    m_l = EV3RT::Motor.new(EV3RT::PORT_C, EV3RT::LARGE_MOTOR) # 左モータ:モータポートCを使用
    
    # モータパワーテーブル [r, l]
    powers = [[50, 50], [-50, -50], [40, 20], [-40, -20], [-20, -40], [20, 40]]
    
    loop {
      # モータパワーテーブルの内容を順にモータにセット
      powers.each {|pwr|
        m_r.power = pwr[0]  # 右モータを回転
        m_l.power = pwr[1]  # 左モータを回転
    
        EV3RT::Task.delay(1000) # 1秒待つ
      }
    }