あらかじめ2つの PWM を設定してください
Motor( const PWM &positive, const PWM &negative );正転と逆転のPWMを設定します
// 例 Motor motor(posPwm, negPwm);
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);
void start() noexcept;
PWM::start
を実行します// 例 motor.start();
void stop() noexcept;
PWM::stop
を実行します// 例 motor.stop();
void setCompare( uint32_t comparePos, uint32_t compareNeg ) noexcept;
PWM::setCompare
を実行します// 例 motor.setCompare(2000, 2000);
void setSpeed( bool forward, uint32_t compare ) noexcept;正転・逆転 と compare を引数とします
true が 正転 / false が 逆転 です// 例 motor.setSpeed(true, 400); motor.setSpeed(false, 400);
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);
void setSpeed( int64_t speed ) noexcept;正の数は正転 / 負の数は逆転 として
setSpeed(bool, uint32_t)
を実行します
処理が多くなるのでsetSpeed(bool, uint32_t)
を直接使うことを推奨します// 例 motor.setSpeed(400); motor.setSpeed(-400);
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);