22
33import static frc .robot .Constants .NEO_CURRENT_LIMIT ;
44
5+ import com .fasterxml .jackson .databind .ser .std .StdKeySerializers .Default ;
56import com .revrobotics .RelativeEncoder ;
67import com .revrobotics .servohub .ServoHub .ResetMode ;
78import com .revrobotics .spark .SparkBase .PersistMode ;
8- import com .revrobotics .spark .SparkFlex ;
99import com .revrobotics .spark .SparkLowLevel .MotorType ;
10- import com .revrobotics .spark .config .SparkFlexConfig ;
10+ import com .revrobotics .spark .config .SparkMaxConfig ;
1111import com .revrobotics .spark .config .SparkBaseConfig .IdleMode ;
12-
12+ import com .revrobotics .spark .SparkMax ;
13+ import edu .wpi .first .math .controller .PIDController ;
1314import edu .wpi .first .math .controller .ProfiledPIDController ;
15+ import edu .wpi .first .math .trajectory .TrapezoidProfile ;
1416import edu .wpi .first .math .util .Units ;
1517import edu .wpi .first .units .measure .Angle ;
1618
1719public class DropperIOSparkMax implements DropperIO {
1820
1921 private ProfiledPIDController controller = new ProfiledPIDController (0 , 0 , 0 , new TrapezoidProfile (-12 , 12 ));
20- private SparkFlex rightMotor ;
22+ private SparkMax rightMotor ; //changed from spark flex to can spark max cuz
2123 private RelativeEncoder rightEncoder ;
22- private SparkFlex leftMotor ;
24+ private SparkMax leftMotor ;
2325 private RelativeEncoder leftEncoder ;
26+ private final ProfiledPIDController pidController ;
27+ private double pi = DropperConstants .PI ;
2428
2529 public DropperIOSparkMax () {
2630 //motors
27- leftMotor = new SparkFlex (DropperConstants .blank , MotorType .kBrushless );//make a constant for motor id and ask the type of motor
28- rightMotor = new SparkFlex (DropperConstants .blankmotorid , MotorType .kBrushless );
31+ leftMotor = new SparkMax (DropperConstants .LEFT_DROPPER_MOTOR_ID , MotorType .kBrushless );//ask the type of motor
32+ rightMotor = new SparkMax (DropperConstants .RIGHT_DROPPER_MOTOR_ID , MotorType .kBrushless );
33+
34+ rightMotor .follow (leftMotor , false );
2935
3036 leftEncoder = leftMotor .getEncoder ();
3137 rightEncoder = rightMotor .getEncoder ();
3238
33- SparkFlexConfig configLeft = new SparkFlexConfig ();
39+ SparkMaxConfig configLeft = new SparkMaxConfig ();
3440 configLeft
3541 .idleMode (IdleMode .kBrake )
3642 .voltageCompensation (12 )
3743 .smartCurrentLimit (NEO_CURRENT_LIMIT )
3844 .inverted (true );
3945
40- leftMotor .configure (configLeft , ResetMode .kResetSafeParameters , PersistMode .kPersistParameters );
41-
42- SparkFlexConfig configRight = new SparkFlexConfig ();
43- configRight
44- .idleMode (IdleMode .kBrake )
45- .voltageCompensation (12 )
46- .smartCurrentLimit (NEO_CURRENT_LIMIT )
47- .inverted (false );
48- rightMotor .configure (configLeft , ResetMode .kResetSafeParameters , PersistMode .kPersistParameters );
46+ leftMotor .configure (configLeft , ResetMode .kResetSafeParameters , PersistMode .kPersistParameters );
4947 }
5048 //methods from IO
5149
5250 @ Override
5351
54- public void updateInputs (DropperIOInputs inputs ){
55- //do later im lazy
52+ public void updateInputs (DropperIOInputs inputs ){ //update the imputs form io
53+ inputs .appliedVoltage = leftMotor .getAppliedOutput () * leftMotor .getBusVoltage ();
54+ inputs .angVelocityRadsPerSec = leftEncoder .getVelocity () * 2 * pi / 60 ; // in rotations so radians per sec converted
55+ inputs .angleRads = leftEncoder .getPosition () * 2 * pi ;
56+ inputs .angle = leftEncoder .getPosition () * 360 ;
57+ inputs .velocity = leftEncoder .getVelocity ();
5658 }
5759
5860 @ Override //not sure if there is one of these for each motor or not
5961
6062 public double getAngle (){
61- return leftEncoder .getPosition () * 6.28 ; //its just two pi make a pi constant later
63+ return leftEncoder .getPosition () * 2 * pi ; //its just gets the rotations and convers to angle using two pi make a pi constant later
6264 }
6365
6466 @ Override
6567
6668 public double getAngVelocity (){
6769 double rpm = leftEncoder .getVelocity ();//in rotations per min i think so convert
68- double rps = rpm * 6.28 / 60 ; //radians per second (its just 2pi divide by 60)
70+ double rps = rpm * 2 * pi / 60 ; //radians per second (its just 2pi divide by 60)
6971 return rps ;
7072 }
7173
@@ -77,7 +79,19 @@ public void setVoltage(double voltage) {
7779
7880 @ Override
7981
80- public void setPosition (){
82+ public void setPosition (int position ){
83+ leftEncoder .setPosition (position );
84+ }
85+
86+ @ Override
87+ public void setSetpoint (double setpoint ){
88+ pidController .setGoal (setpoint );
89+ pidController .reset (getAngle (), getAngVelocity ());
90+
91+ }
92+
93+ @ Override
94+ public void goToSetpoint (){
8195
8296 }
8397
@@ -89,15 +103,26 @@ public void stop(){
89103 }
90104
91105 //PID
92-
106+
107+ @ Override
93108 public void setPIDGains (double kp , ki , kd ){
94109 velocityPID .setP (kp );//idek
95110 velocityPID .setI (ki );
96- velocityPID .setD (kd );
111+ velocityPID .setD (kd );
97112 }
98113
99-
100-
114+ @ Override
115+ public default double getP (){
116+ return pidController .getP ();
117+ }
118+ @ Override
119+ public default double getI (){
120+ return pidController .getI ();
121+ }
122+ @ Override
123+ public default double getD (){
124+ return pidController .getD ();
125+ }
101126}
102127
103128/*
@@ -112,4 +137,6 @@ public default void setPIDGains(double kp, ki, kd) {}
112137 public default double getP() {}
113138 public default double getI() {}
114139 public default double getD() {}
140+
141+
115142 */
0 commit comments