/** * 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. }