22
33import static frc .robot .Constants .NEO_CURRENT_LIMIT ;
44
5+ import com .revrobotics .RelativeEncoder ;
6+ import com .revrobotics .servohub .ServoHub .ResetMode ;
7+ import com .revrobotics .spark .SparkBase .PersistMode ;
8+ import com .revrobotics .spark .SparkFlex ;
9+ import com .revrobotics .spark .SparkLowLevel .MotorType ;
510import com .revrobotics .spark .config .SparkFlexConfig ;
11+ import com .revrobotics .spark .config .SparkBaseConfig .IdleMode ;
12+
13+ import edu .wpi .first .math .controller .ProfiledPIDController ;
14+ import edu .wpi .first .math .util .Units ;
15+ import edu .wpi .first .units .measure .Angle ;
616
717public class DropperIOSparkMax implements DropperIO {
818
919 private ProfiledPIDController controller = new ProfiledPIDController (0 , 0 , 0 , new TrapezoidProfile (-12 , 12 ));
10- private SparkFlex motor ;
11- private RelativeEncoder encoder ;
20+ private SparkFlex rightMotor ;
21+ private RelativeEncoder rightEncoder ;
22+ private SparkFlex leftMotor ;
23+ private RelativeEncoder leftEncoder ;
1224
1325 public DropperIOSparkMax () {
14- leftmotor = new SparkFlex (DropperConstants .blank , MotorType .kBrushless );//make a constant for motor id and ask the type of motor
15- rightmotor = new SparkFlex (DropperConstants .blankmotorid , MotorType .kbrushless );
26+ //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 );
1629
1730 leftEncoder = leftMotor .getEncoder ();
1831 rightEncoder = rightMotor .getEncoder ();
1932
20- SparkFlexConfig config = new SparkFlexConfig ();
21- config
22- .idleMode (IdleMode .kbrake )
33+ SparkFlexConfig configLeft = new SparkFlexConfig ();
34+ configLeft
35+ .idleMode (IdleMode .kBrake )
2336 .voltageCompensation (12 )
2437 .smartCurrentLimit (NEO_CURRENT_LIMIT )
2538 .inverted (true );
2639
27- leftMo
40+ leftMotor . configure ( configLeft , ResetMode . kResetSafeParameters , PersistMode . kPersistParameters );
2841
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 );
49+ }
50+ //methods from IO
51+
52+ @ Override
53+
54+ public void updateInputs (DropperIOInputs inputs ){
55+ //do later im lazy
56+ }
57+
58+ @ Override //not sure if there is one of these for each motor or not
59+
60+ public double getAngle (){
61+ return leftEncoder .getPosition () * 6.28 ; //its just two pi make a pi constant later
62+ }
63+
64+ @ Override
65+
66+ public double getAngVelocity (){
67+ 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)
69+ return rps ;
70+ }
71+
72+ @ Override
73+ public void setVoltage (double voltage ) {
74+ leftMotor .setVoltage (voltage );//???
75+ rightMotor .setVoltage (voltage );//idk about this
76+ }
77+
78+ @ Override
79+
80+ public void setPosition (){
2981
30-
3182 }
3283
84+ @ Override
3385
86+ public void stop (){
87+ leftMotor .stopMotor ();
88+ rightMotor .stopMotor ();
89+ }
90+
91+ //PID
92+
93+ public void setPIDGains (double kp , ki , kd ){
94+ velocityPID .setP (p );//idek
95+ velocityPID .setI (i );
96+ velocityPID .setD (d );
97+ }
98+
99+
100+
101+ }
102+
103+ /*
104+ public default void setVoltage(double voltage) {}
105+
106+ public default void setPosition(int position) {}
107+
108+ public default void stop() {}
34109
35- }
110+ // PID
111+ public default void setPIDGains(double kp, ki, kd) {}
112+ public default double getP() {}
113+ public default double getI() {}
114+ public default double getD() {}
115+ */
0 commit comments