Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,31 @@
public class RobotContainer {
private final CommandJoystick joystick = new CommandJoystick(0);

// private final Shooter shooter;
private final Shooter shooter;

public RobotContainer() {
// Use real or sim ShooterIO
// shooter = new Shooter(RobotBase.isReal() ? new ShooterIOTalonFX() : new ShooterIOSim());
shooter = new Shooter(RobotBase.isReal() ? new ShooterIOTalonFX() : new ShooterIOSim());


configureBindings();
}

private void configureBindings() {
// Example binding: spin shooter at 50% while holding button 1
// Once the shooter is implemented, you should see the motor spinning at 3000rpm when button 1 is held down
/*
/*
joystick
.button(1)
.whileTrue(Commands.run(() -> shooter.spin(0.5), shooter))
.onFalse(Commands.run(() -> shooter.stop(), shooter));
*/

joystick
.button(1)
.whileTrue(Commands.run(() -> shooter.spin(1.0), shooter))
.onFalse(Commands.run(() -> shooter.stop(), shooter));


}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,55 @@
package frc.robot.subsystems.shooter;

import edu.wpi.first.wpilibj.RobotBase;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.robot.subsystems.shooter.ShooterIO.ShooterIOInputs;

// Main Shooter subsystem logic
public class Shooter extends SubsystemBase {
// TODO: Add a private field for your ShooterIO instance
private ShooterIO io;

// TODO: Add a private field for your ShooterIOInputs instance and initialize it
private ShooterIO.ShooterIOInputs inputs = new ShooterIO.ShooterIOInputs();


// TODO: Create the constructor that takes a ShooterIO instance as a parameter
// public Shooter(ShooterIO io) { ... }
public Shooter(ShooterIO io) {
this.io = io;
}


@Override
public void periodic() {
// This method will be called once per scheduler run
// TODO: Call the updateInputs method on your ShooterIO instance
io.updateInputs(inputs);
if (!RobotBase.isReal()) {
if (true) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if true is redundant

spin(0.5);
} else {
stop();
}}

System.out.println(inputs.motorRPM);
}

// TODO: Add a public method to spin the shooter motor at a given percentage output
// public void spin(double percent) { ... }
public void spin(double percent) {
io.setMotorPercentOutput(percent);
}

// TODO: Add a public method to stop the shooter motor
// public void stop() { ... }
public void stop() {
io.setMotorPercentOutput(0.0);
}

// TODO: Add a public method to return the current motor RPM
// public double getCurrentRPM() { ... }
public double getCurrentRPM() {
return inputs.motorRPM;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@ public class ShooterIOSim implements ShooterIO {
private static final double MAX_RPM = 6000.0;

// TODO: Add a private field `simulatedMotorPercent` to store the simulated motor percentage
private double simulatedMotorPercent;

@Override
public void updateInputs(ShooterIOInputs inputs) {
// TODO: Simulate motorRPM by multiplying the stored simulatedMotorPercent by the max RPM
inputs.motorRPM = 0.0; // Placeholder - replace 0.0
inputs.motorRPM = simulatedMotorPercent * MAX_RPM; // Placeholder - replace 0.0
}

@Override
public void setMotorPercentOutput(double percent) {
// TODO: Store the given `percent` in your simulated motor percentage field
simulatedMotorPercent = percent;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,18 @@ public ShooterIOTalonFX() {
public void updateInputs(ShooterIOInputs inputs) {
// TODO: Read the motor’s velocity (rotations per second) as a double using
// motor.getVelocity().getValueAsDouble()

double rps = motor.getVelocity().getValueAsDouble();

// TODO: Save the RPM to inputs.motorRPM (convert from rotations per second)
inputs.motorRPM = rps * 60;


}

@Override
public void setMotorPercentOutput(double percent) {
// TODO: Use motor.setControl and the dutyCycleOut variable to set the motor’s percent output
// Tip: Search up documentation for DutyCycleOut methods
motor.setControl(dutyCycleOut.withOutput(percent));
}
}