FRC Paradigm Shift #1259
Documentation for the 2021 Robot
PIDLoaderFalcon.cpp
Go to the documentation of this file.
2 
3 
4 PIDLoaderFalcon::PIDLoaderFalcon(string name, bool adjustable, double p, double i, double d, double ff)
5  : m_name(name)
6  , m_adjustable(adjustable)
7  , m_p(p)
8  , m_i(i)
9  , m_d(d)
10  , m_ff(ff) {}
11 
12 PIDLoaderFalcon::PIDLoaderFalcon(string name, bool adjustable, double p, double i, double d, double ff, double max, double min)
13  : m_name(name)
14  , m_adjustable(adjustable)
15  , m_p(p)
16  , m_i(i)
17  , m_d(d)
18  , m_ff(ff)
19  , m_max(max)
20  , m_min(min) {}
21 
22 void PIDLoaderFalcon::Load(TalonFX& driveMotor)
23 {
24  driveMotor.Config_kP(0, m_p);
25  driveMotor.Config_kD(0, m_d);
26  driveMotor.Config_kF(0, m_ff);
27  driveMotor.ConfigPeakOutputForward(m_max);
28  driveMotor.ConfigPeakOutputReverse(m_min);
29 
30  if (m_adjustable)
31  {
32  SmartDashboard::PutNumber("T_" + m_name + "_DP", m_p);
33  SmartDashboard::PutNumber("T_" + m_name + "_DI", m_i);
34  SmartDashboard::PutNumber("T_" + m_name + "_DD", m_d);
35  SmartDashboard::PutNumber("T_" + m_name + "_DFF", m_ff);
36  SmartDashboard::PutNumber("T_" + m_name + "_DMax", m_max);
37  SmartDashboard::PutNumber("T_" + m_name + "_DMin", m_min);
38  }
39 }
40 
41 void PIDLoaderFalcon::LoadFromNetworkTable(TalonFX& driveMotor)
42 {
43  if (!m_adjustable)
44  return;
45 
46  double p = SmartDashboard::GetNumber("T_" + m_name + "_DP", m_p);
47  double i = SmartDashboard::GetNumber("T_" + m_name + "_DI", m_i);
48  double d = SmartDashboard::GetNumber("T_" + m_name + "_DD", m_d);
49  double ff = SmartDashboard::GetNumber("T_" + m_name + "_DFF", m_ff);
50  double max = SmartDashboard::GetNumber("T_" + m_name + "_DMax", m_max);
51  double min = SmartDashboard::GetNumber("T_" + m_name + "_DMin", m_min);
52 
54  if ((p != m_p)) { driveMotor.Config_kP(0, p); m_p = p; }
55  if ((i != m_i)) { driveMotor.Config_kI(0, i); m_i = i; }
56  if ((d != m_d)) { driveMotor.Config_kD(0, d); m_d = d; }
57  if ((ff != m_ff)) { driveMotor.Config_kF(0, ff); m_ff = ff; }
58 
59  if ((max != m_max) || (min != m_min))
60  {
61  driveMotor.ConfigPeakOutputForward(m_max);
62  driveMotor.ConfigPeakOutputReverse(m_min);
63  m_min = min;
64  m_max = max;
65  }
66 }
void LoadFromNetworkTable(TalonFX &driveMotor)
PIDLoaderFalcon(string name, bool adjustable, double p, double i, double d, double ff)
void Load(TalonFX &driveMotor)