--- /dev/null
+package frc.robot.commands;
+
+import com.ctre.phoenix6.Orchestra;
+import com.ctre.phoenix6.hardware.TalonFX;
+
+import edu.wpi.first.wpilibj.Filesystem;
+import edu.wpi.first.wpilibj2.command.Command;
+
+public class Music extends Command {
+ private Orchestra orchestra;
+
+ public Music(TalonFX[] motors) {
+ orchestra = new Orchestra(Filesystem.getDeployDirectory() + "/chirp/file.chrp");
+ for (TalonFX motor : motors)
+ orchestra.addInstrument(motor);
+ }
+
+ @Override
+ public void initialize() {
+ orchestra.play();
+ }
+
+ @Override
+ public boolean isFinished() {
+ return false;
+ }
+
+ @Override
+ public void end(boolean interrupted) {
+ orchestra.stop();
+ }
+}
package frc.robot.subsystems.drivetrain;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Optional;
import java.util.concurrent.locks.Lock;
import org.littletonrobotics.junction.AutoLogOutput;
import org.littletonrobotics.junction.Logger;
+import com.ctre.phoenix6.hardware.TalonFX;
import com.pathplanner.lib.util.PathPlannerLogging;
import edu.wpi.first.math.VecBuilder;
import edu.wpi.first.wpilibj.RobotBase;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.smartdashboard.Field2d;
+import edu.wpi.first.wpilibj.motorcontrol.Talon;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
+import frc.robot.commands.Music;
import frc.robot.constants.Constants;
import frc.robot.constants.FieldConstants;
import frc.robot.constants.VisionConstants;
this.gyroIO = gyroIO;
ModuleConstants[] constants = Arrays.copyOfRange(ModuleConstants.values(), 0, 4);
+
if (RobotBase.isReal()) {
Arrays.stream(constants).forEach(moduleConstants -> {
modules[moduleConstants.ordinal()] = new Module(moduleConstants);
});
}
+ ArrayList<TalonFX> motors = new ArrayList<TalonFX>();
+ for (Module module : modules) {
+ motors.add(module.getMotors()[0]);
+ motors.add(module.getMotors()[1]);
+ }
+
+ SmartDashboard.putData("Beep", new Music(motors.toArray(new TalonFX[0])));
+
/*
* By pausing init for a second before setting module offsets, we avoid a bug
* with inverting motors.