mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-06 03:31:43 +00:00
CANJaguar is the only motor controller using sync groups, so that feature doesn't belong in an interface used by all motor controllers. If teams want to use sync groups, they should cast to the appropriate motor controller type themselves.
70 lines
2.2 KiB
C++
70 lines
2.2 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) FIRST 2008-2016. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#include "PWMSpeedController.h"
|
|
|
|
/**
|
|
* Constructor for a PWM Speed Controller connected via PWM.
|
|
*
|
|
* @param channel The PWM channel that the controller is attached to. 0-9 are
|
|
* on-board, 10-19 are on the MXP port
|
|
*/
|
|
PWMSpeedController::PWMSpeedController(uint32_t channel) : SafePWM(channel) {}
|
|
|
|
/**
|
|
* Set the PWM value.
|
|
*
|
|
* The PWM value is set using a range of -1.0 to 1.0, appropriately
|
|
* scaling the value for the FPGA.
|
|
*
|
|
* @param speed The speed value between -1.0 and 1.0 to set.
|
|
*/
|
|
void PWMSpeedController::Set(float speed) {
|
|
SetSpeed(m_isInverted ? -speed : speed);
|
|
}
|
|
|
|
/**
|
|
* Get the recently set value of the PWM.
|
|
*
|
|
* @return The most recently set value for the PWM between -1.0 and 1.0.
|
|
*/
|
|
float PWMSpeedController::Get() const { return GetSpeed(); }
|
|
|
|
/**
|
|
* Common interface for disabling a motor.
|
|
*/
|
|
void PWMSpeedController::Disable() { SetRaw(kPwmDisabled); }
|
|
|
|
/**
|
|
* Common interface for inverting direction of a speed controller.
|
|
*
|
|
* @param isInverted The state of inversion, true is inverted.
|
|
*/
|
|
void PWMSpeedController::SetInverted(bool isInverted) {
|
|
m_isInverted = isInverted;
|
|
}
|
|
|
|
/**
|
|
* Common interface for the inverting direction of a speed controller.
|
|
*
|
|
* @return isInverted The state of inversion, true is inverted.
|
|
*
|
|
*/
|
|
bool PWMSpeedController::GetInverted() const { return m_isInverted; }
|
|
|
|
/**
|
|
* Write out the PID value as seen in the PIDOutput base object.
|
|
*
|
|
* @param output Write out the PWM value as was found in the PIDController
|
|
*/
|
|
void PWMSpeedController::PIDWrite(float output) { Set(output); }
|
|
|
|
/**
|
|
* Common interface to stop the motor until Set is called again.
|
|
*/
|
|
void PWMSpeedController::StopMotor() { this->SafePWM::StopMotor(); }
|