Пример #1
0
/**
 * Initialize the gyro.  Calibration is handled by Calibrate().
 */
void AnalogGyro::InitGyro() {
    if (StatusIsFatal()) return;

    if (!m_analog->IsAccumulatorChannel()) {
        wpi_setWPIErrorWithContext(ParameterOutOfRange,
                                   " channel (must be accumulator channel)");
        m_analog = nullptr;
        return;
    }

    m_voltsPerDegreePerSecond = kDefaultVoltsPerDegreePerSecond;
    m_analog->SetAverageBits(kAverageBits);
    m_analog->SetOversampleBits(kOversampleBits);
    float sampleRate =
        kSamplesPerSecond * (1 << (kAverageBits + kOversampleBits));
    m_analog->SetSampleRate(sampleRate);
    Wait(0.1);

    SetDeadband(0.0f);

    SetPIDSourceType(PIDSourceType::kDisplacement);

    HALReport(HALUsageReporting::kResourceType_Gyro, m_analog->GetChannel());
    LiveWindow::GetInstance()->AddSensor("AnalogGyro", m_analog->GetChannel(), this);
}
SlavedLauncherPID::SlavedLauncherPID(std::string side, MotorPin motorPin, MotorPin motorPin2, DIOPin encoderPin) :
		PIDSubsystem(side + "SlavedLauncherPID", 4.5, 0.167, .0),
		pidMotor(motorPin),
		pidMotor2(motorPin2),

		pidEncoder(encoderPin),
		reverseMultiplier(1)
{
	LiveWindow::GetInstance()->AddActuator(side + "LauncherPID2", side + "PIDController", GetPIDController());
	LiveWindow::GetInstance()->AddActuator(side + "LauncherPID2", side + "OutputMotor", pidMotor);
	LiveWindow::GetInstance()->AddActuator(side + "LauncherPID2", side + "OutputMotor2", pidMotor2);
	LiveWindow::GetInstance()->AddSensor(side + "LauncherPID2", side + "Encoder", pidEncoder);
//	SmartDashboard::PutData(side+"LauncherPidController", GetPIDController().get());
	GetPIDController()->SetOutputRange(0,1);
	SetAbsoluteTolerance(.05);
	SetPIDSourceType(PIDSourceType::kDisplacement);
	pidEncoder.SetSamplesToAverage(1);
	// Use these to get going:
	// SetSetpoint() -  Sets where the PID controller should move the system
	//                  to
	// Enable() - Enables the PID controller.
}