Skip to content

Latest commit

 

History

History
156 lines (144 loc) · 3.69 KB

Motor.md

File metadata and controls

156 lines (144 loc) · 3.69 KB

Motor

目次

CubeMX

あらかじめ2つの PWM を設定してください

コンストラクタ

Motor::Motor(PWM, PWM)
Motor(
    const PWM &positive,
    const PWM &negative
);

正転と逆転のPWMを設定します

//
Motor motor(posPwm, negPwm);
Motor::Motor(TIM_HandleTypeDef, uint32_t, TIM_HandleTypeDef, uint32_t)
Motor(
    TIM_HandleTypeDef *htimPos,
    uint32_t channelPos,
    TIM_HandleTypeDef *htimNeg,
    uint32_t channelNeg
);
Motor(
    TIM_HandleTypeDef &htimPos,
    uint32_t channelPos,
    TIM_HandleTypeDef &htimNeg,
    uint32_t channelNeg
);

正転と逆転のピンを設定します
内部的にはPWMクラスに変換されています

//
Motor motor(&htim2, TIM_CHANNEL_1, &htim3, TIM_CHANNEL_1);
Motor motor(htim2, TIM_CHANNEL_1, htim3, TIM_CHANNEL_1);

関数

Motor::start()
void start() noexcept;

PWM::start を実行します

//
motor.start();
Motor::stop()
void stop() noexcept;

PWM::stop を実行します

//
motor.stop();
Motor::setCompare(uint32_t, uint32_t)
void setCompare(
    uint32_t comparePos,
    uint32_t compareNeg
) noexcept;

PWM::setCompare を実行します

//
motor.setCompare(2000, 2000);
Motor::setSpeed(bool, uint32_t)
void setSpeed(
    bool forward,
    uint32_t compare
) noexcept;

正転・逆転 と compare を引数とします
true が 正転 / false が 逆転 です

//
motor.setSpeed(true, 400);
motor.setSpeed(false, 400);
Motor::setSpeed(bool, uint16_t, uint16_t)
void setSpeed(
    bool forward,
    uint16_t numerator,
    uint16_t denominator
) noexcept;

正転・逆転 と numerator: 分子, denominator: 分母 とした デューティ比 を引数とします
100% を超えている時は何もしません
true が 正転 / false が 逆転 です

//
motor.setSpeed(false, 97, 100);
motor.setSpeed(true, 1, 2);
Motor::setSpeed(int64_t)
void setSpeed(
    int64_t speed
) noexcept;

正の数は正転 / 負の数は逆転 として setSpeed(bool, uint32_t) を実行します
処理が多くなるので setSpeed(bool, uint32_t) を直接使うことを推奨します

//
motor.setSpeed(400);
motor.setSpeed(-400);
Motor::setSpeed(int16_t, int16_t)
void setSpeed(
    int16_t numerator,
    int16_t denominator
) noexcept;

正の数は正転 / 負の数は逆転 として setSpeed(bool, uint16_t, uint16_t) を実行します
処理が多くなるので setSpeed(bool, uint16_t, uint16_t) を直接使うことを推奨します

//
motor.setSpeed(-97, 100);
motor.setSpeed(97, -100);
motor.setSpeed(1, 2);
motor.setSpeed(-1, -2);

<< 戻る