Skip to content

Commit 7a2edd9

Browse files
committed
implenmented NEO motor on intake
1 parent 4d279fd commit 7a2edd9

File tree

5 files changed

+143
-7
lines changed

5 files changed

+143
-7
lines changed

src/main/java/org/carlmontrobotics/RobotContainer.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ public RobotContainer() {
137137

138138
setDefaultCommands();
139139
setBindingsDriver();
140-
setBindingsManipulatorENDEFF();
140+
//setBindingsManipulatorENDEFF();
141+
setBindingsManipulatorNEO();
141142
}
142143

143144
private void setDefaultCommands() {
@@ -180,7 +181,36 @@ private void setBindingsDriver() {
180181
new JoystickButton(driverController, Driver.rotateFieldRelative270Deg)
181182
.onTrue(new RotateToFieldRelativeAngle(Rotation2d.fromDegrees(90), drivetrain));
182183
}
184+
private void setBindingsManipulatorNEO() {
185+
new JoystickButton(manipulatorController, EJECT_BUTTON).onTrue(new Eject(intakeShooter));
186+
183187

188+
new JoystickButton(manipulatorController, Button.kB.value).onTrue(new RampMaxRPM(intakeShooter));
189+
new JoystickButton(manipulatorController, Button.kB.value).onFalse(new InstantCommand(intakeShooter::stopOutake,intakeShooter));
190+
new JoystickButton(manipulatorController, AMP_BUTTON).onTrue(new EjectOuttakeSide(intakeShooter));
191+
192+
axisTrigger(manipulatorController, Manipulator.SHOOTER_BUTTON)
193+
.onTrue(
194+
new SwitchRPMShootNEO(intakeShooter));
195+
axisTrigger(manipulatorController, Manipulator.SHOOTER_BUTTON)
196+
.onFalse(
197+
new InstantCommand(intakeShooter::stopOutake, intakeShooter));
198+
199+
axisTrigger(manipulatorController, Manipulator.INTAKE_BUTTON)
200+
.onTrue(new SequentialCommandGroup(new PrintCommand("Running Intake"),
201+
new IntakeNEO(intakeShooter)));
202+
axisTrigger(manipulatorController, Manipulator.INTAKE_BUTTON)
203+
.onFalse(
204+
new InstantCommand(intakeShooter::stopIntake, intakeShooter));
205+
new JoystickButton(manipulatorController, Button.kY.value).onTrue(new ArmToPos(arm, AMP_ANGLE_RAD_NEW_MOTOR,0));
206+
new JoystickButton(manipulatorController, Button.kA.value).onTrue(new ArmToPos(arm, GROUND_INTAKE_POS,1));
207+
new JoystickButton(manipulatorController, Button.kLeftStick.value).onTrue(new PassToOuttake(intakeShooter));
208+
new JoystickButton(manipulatorController, Button.kX.value).onTrue(new ArmToPos(arm, SPEAKER_ANGLE_RAD,1));
209+
//TODO: test angles for pov button BEFORE climbing
210+
new POVButton(manipulatorController, 0).onTrue(new ArmToPos(arm, CLIMB_POS, 0));
211+
new POVButton(manipulatorController, 180).onTrue(new Climb(arm));
212+
new POVButton(manipulatorController, 270).onTrue(new ArmToPos(arm, PODIUM_ANGLE_RAD, 2));
213+
}
184214
private void setBindingsManipulatorENDEFF() {
185215
/* /Eject also for AMP/ */
186216
new JoystickButton(manipulatorController, EJECT_BUTTON).onTrue(new Eject(intakeShooter));

src/main/java/org/carlmontrobotics/commands/Intake.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ public Intake(IntakeShooter intake) {
2525
@Override
2626
public void initialize() {
2727
intake.setRPMIntake(INTAKE_RPM);
28-
timer.reset();
29-
timer.start();
3028
intake.resetCurrentLimit();
3129
index=0;
3230

@@ -36,7 +34,7 @@ public void initialize() {
3634
@Override
3735
public void execute() {
3836
// Intake Led
39-
intake.resetCurrentLimit();
37+
4038
if (intake.intakeDetectsNote() && !intake.outakeDetectsNote()) {
4139
index++;
4240

@@ -51,6 +49,7 @@ public void execute() {
5149
if(!intake.intakeDetectsNote()) {
5250
intake.setRPMIntake(INTAKE_RPM);
5351
}
52+
5453
}
5554

5655
// Called once the command ends or is interrupted.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package org.carlmontrobotics.commands;
2+
3+
import static org.carlmontrobotics.Constants.Effectorc.*;
4+
5+
import org.carlmontrobotics.subsystems.IntakeShooter;
6+
7+
import edu.wpi.first.wpilibj.Timer;
8+
import edu.wpi.first.wpilibj2.command.Command;
9+
10+
public class IntakeNEO extends Command {
11+
// intake until sees game peice or 4sec has passed
12+
private Timer timer = new Timer();
13+
private final IntakeShooter intake;
14+
15+
private double endAt = 0;
16+
private final double keepIntakingFor = 0.2;
17+
int increaseAmount = 750;
18+
int index = 0;
19+
20+
public IntakeNEO(IntakeShooter intake) {
21+
addRequirements(this.intake = intake);
22+
23+
}
24+
25+
@Override
26+
public void initialize() {
27+
//TODO: Adjust speed or add in an index
28+
intake.motorSetIntake(0.5);
29+
intake.resetCurrentLimit();
30+
index=0;
31+
32+
}
33+
34+
// Called every time the scheduler runs while the command is scheduled.
35+
@Override
36+
public void execute() {
37+
// Intake Led
38+
39+
40+
41+
}
42+
43+
// Called once the command ends or is interrupted.
44+
@Override
45+
public void end(boolean interrupted) {
46+
intake.stopIntake();
47+
timer.stop();
48+
index = 0;
49+
//intake.resetCurrentLimit();
50+
}
51+
52+
// Returns true when the command should end.
53+
@Override
54+
public boolean isFinished() {
55+
return (intake.intakeDetectsNote() && intake.outakeDetectsNote());
56+
// || //timer.hasElapsed(MAX_SECONDS_OVERLOAD);
57+
58+
}
59+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.carlmontrobotics.commands;
2+
3+
import static org.carlmontrobotics.Constants.Armc.SMART_CURRENT_LIMIT_TIMEOUT;
4+
import static org.carlmontrobotics.Constants.Effectorc.*;
5+
import org.carlmontrobotics.subsystems.Arm;
6+
import org.carlmontrobotics.subsystems.IntakeShooter;
7+
8+
import edu.wpi.first.wpilibj.Timer;
9+
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
10+
import edu.wpi.first.wpilibj2.command.Command;
11+
12+
public class SwitchRPMShootNEO extends Command {
13+
private IntakeShooter intakeShooter;
14+
private double rpmAmount;
15+
16+
17+
public SwitchRPMShootNEO(IntakeShooter intakeShooter) {
18+
this.intakeShooter = intakeShooter;
19+
addRequirements(intakeShooter);
20+
}
21+
@Override
22+
public void initialize() {
23+
intakeShooter.setMaxOutake(1);
24+
25+
}
26+
@Override
27+
public void execute() {
28+
rpmAmount = RPM_SELECTOR[Arm.getSelector()];
29+
if(intakeShooter.getOutakeRPM() >= rpmAmount) {
30+
intakeShooter.setMaxIntake(1);
31+
32+
}
33+
}
34+
@Override
35+
public void end(boolean interrupted) {
36+
intakeShooter.stopIntake();
37+
intakeShooter.stopOutake();
38+
intakeShooter.resetCurrentLimit();
39+
40+
41+
}
42+
@Override
43+
public boolean isFinished() {
44+
return (!intakeShooter.intakeDetectsNote() && !intakeShooter.outakeDetectsNote());
45+
}
46+
}

src/main/java/org/carlmontrobotics/subsystems/IntakeShooter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import edu.wpi.first.wpilibj2.command.SubsystemBase;
2222

2323
public class IntakeShooter extends SubsystemBase {
24-
private final CANSparkMax intakeMotor = MotorControllerFactory.createSparkMax(INTAKE_PORT, MotorConfig.NEO_550);
24+
private final CANSparkMax intakeMotor = MotorControllerFactory.createSparkMax(INTAKE_PORT, MotorConfig.NEO);
2525
// private final CANSparkMax outakeMotor =
2626
// MotorControllerFactory.createSparkMax(10, MotorConfig.NEO_550);
2727
private final CANSparkFlex outakeMotorVortex = new CANSparkFlex(10, MotorType.kBrushless);
@@ -85,7 +85,9 @@ private double getGamePieceDistanceIntake() {
8585
public void motorSetOutake(int speed) {
8686
outakeMotorVortex.set(speed);
8787
}
88-
88+
public void motorSetIntake(double speed) {
89+
intakeMotor.set(speed);
90+
}
8991
private double getGamePieceDistanceOutake() {
9092
return Units.metersToInches(OutakeDistanceSensor.getRange() / 1000) - DS_DEPTH_INCHES;
9193
}
@@ -139,7 +141,7 @@ public void setMaxOutakeOverload(int direction) {
139141
outakeMotorVortex.set(1 * direction);
140142
}
141143
public void resetCurrentLimit() {
142-
intakeMotor.setSmartCurrentLimit(MotorConfig.NEO_550.currentLimitAmps);
144+
intakeMotor.setSmartCurrentLimit(MotorConfig.NEO.currentLimitAmps);
143145
outakeMotorVortex.setSmartCurrentLimit(60);
144146

145147
// intakeMotor.setSmartCurrentLimit(MotorConfig.NEO_550.currentLimitAmps);

0 commit comments

Comments
 (0)