/** * Setup all of the configuration parameters. */ public int SetupConfig() { /* binary OR all the return values so we can make a quick decision if our init was successful */ int status = 0; /* specify sensor characteristics */ _talon.SetFeedbackDevice(CTRE.TalonSrx.FeedbackDevice.CtreMagEncoder_Relative); _talon.SetSensorDirection(false); /* make sure positive motor output means sensor moves in position direction */ // call ConfigEncoderCodesPerRev or ConfigPotentiometerTurns for Quadrature or Analog sensor types. /* brake or coast during neutral */ status |= _talon.ConfigNeutralMode(CTRE.TalonSrx.NeutralMode.Brake); /* closed-loop and motion-magic parameters */ status |= _talon.SetF(kSlotIdx, 0.1153f, kTimeoutMs); // 1300RPM (8874 native sensor units per 100ms) at full motor output (+1023) status |= _talon.SetP(kSlotIdx, 2.00f, kTimeoutMs); status |= _talon.SetI(kSlotIdx, 0f, kTimeoutMs); status |= _talon.SetD(kSlotIdx, 20f, kTimeoutMs); status |= _talon.SetIzone(kSlotIdx, 0, kTimeoutMs); status |= _talon.SelectProfileSlot(kSlotIdx); /* select this slot */ status |= _talon.ConfigNominalOutputVoltage(0f, 0f, kTimeoutMs); status |= _talon.ConfigPeakOutputVoltage(+12f, -12f, kTimeoutMs); status |= _talon.SetMotionMagicCruiseVelocity(1000f, kTimeoutMs); // 1000 RPM status |= _talon.SetMotionMagicAcceleration(2000f, kTimeoutMs); // 2000 RPM per sec, (0.5s to reach cruise velocity). /* Home the relative sensor, * alternatively you can throttle until limit switch, * use an absolute signal like CtreMagEncoder_Absolute or analog sensor. */ status |= _talon.SetPosition(0, kTimeoutMs); return(status); }