str/ev3-api/library/libcpp-ev3/include/Motor.h (37 lines of code) (raw):

// // Motor.h // // Copyright (c) 2015-2016 Embedded Technology Software Design Robot Contest // #ifndef EV3CPPAPI_MOTOR_H_ #define EV3CPPAPI_MOTOR_H_ #include "Port.h" #include "ev3api.h" namespace ev3api { /** * EV3 モータクラス */ class Motor { public: friend class Steering; /** * PWM最大値 */ static const int PWM_MAX = 100; /** * PWM最小値 */ static const int PWM_MIN = -100; /** * コンストラクタ * @param port モータポート番号 * @param brake true:ブレーキモード/false:フロートモード * @param type モータタイプ * @return - */ explicit Motor(ePortM port, bool brake = true, motor_type_t type = LARGE_MOTOR); /** * デストラクタ<br> * モータを停止する * @param - * @return - */ ~Motor(void); /** * モータリセット<br> * モータ停止および角位置の0リセット、オフセット初期化を行う * @param - * @return - */ inline void reset(void) { ev3_motor_stop(mPort, true); // need to set brake to stop the motor immidiately ev3_motor_reset_counts(mPort); mOffset = 0; } /** * オフセット付き角位置取得 * @param - * @return モータ角位置 [deg] */ inline int32_t getCount(void) const { return ev3_motor_get_counts(mPort) - mOffset; } /** * 角位置設定<br> * 現在のモータ角位置と設定角位置との差分をオフセットとして設定する * @param count モータ角位置 [deg] * @return - */ inline void setCount(int32_t count) { mOffset = ev3_motor_get_counts(mPort) - count; } /** * モータPWM値設定<br> * ブレーキモードでPWM値が0の場合、モータを停止する * @param pwm PWM値 (-100 - 100) * @return - */ void setPWM(int pwm); /** * ブレーキモード設定 * @param brake true:ブレーキモード/false:フロートモード * @return - */ void setBrake(bool brake); /** * 停止する。 * @param - * @return - */ inline void stop() { (void)ev3_motor_stop(mPort, mBrake); } protected: /** * モータ接続ポート取得 * @param - * @return モータ接続ポート */ inline motor_port_t getPort(void) const { return mPort; } /** * ブレーキ設定取得 * @param - * @retval true ブレーキモード * @retval false フロートモード */ inline bool getBrake(void) const { return mBrake; } /** * PWM設定値取得 * @param - * @return PWM設定値 */ inline int getPWM(void) const { return mPWM; } private: motor_port_t mPort; bool mBrake; motor_type_t mType; int mPWM; int32_t mOffset; }; // class Motor } // namespace ev3api #endif // ! EV3CPPAPI_MOTOR_H_