Compare commits

..

2 Commits
pince ... main

Author SHA1 Message Date
Antoine PerreaultE
bd180e9153 2025-01-29 19:35:45 -05:00
Antoine PerreaultE
bff426ef0f v 2025-01-28 18:29:17 -05:00
14 changed files with 42 additions and 612 deletions

View File

@ -4,66 +4,18 @@
package frc.robot;
import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.auto.NamedCommands;
import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.auto.NamedCommands;
import edu.wpi.first.math.MathUtil;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.RunCommand;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import frc.robot.command.AlgueExpire;
import frc.robot.command.CoralAlgueInspire;
import frc.robot.command.CoralExpire;
import frc.robot.command.CoralInspire;
import frc.robot.command.Depart;
import frc.robot.command.DepartPince;
import frc.robot.command.ElevateurManuel;
import frc.robot.command.L2;
import frc.robot.command.L3;
import frc.robot.command.L4;
import frc.robot.command.StationPince;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
public class RobotContainer {
CommandXboxController manette1 = new CommandXboxController(0);
CommandXboxController manette2 = new CommandXboxController(0);
private final SendableChooser<Command> autoChooser;
Pince pince = new Pince();
Elevateur elevateur = new Elevateur();
ElevateurManuel elevateurManuel = new ElevateurManuel(elevateur, manette2::getLeftY);
public RobotContainer() {
configureBindings();
elevateur.setDefaultCommand(new RunCommand(()->{
elevateur.vitesse(MathUtil.applyDeadband(manette2.getLeftY(), 0.2));
}, elevateur));
NamedCommands.registerCommand("Station",new StationPince(pince, elevateur));
NamedCommands.registerCommand("L4", new L4(elevateur, pince));
NamedCommands.registerCommand("L3", new L3(elevateur, pince));
NamedCommands.registerCommand("CoralExpire",new CoralExpire(pince));
NamedCommands.registerCommand("CoralInspire", new CoralInspire(pince));
NamedCommands.registerCommand("CoraletAlgue", new CoralAlgueInspire(pince));
autoChooser = AutoBuilder.buildAutoChooser();
}
private void configureBindings() {
// manette1
manette1.a().whileTrue(new AlgueExpire(pince));
manette1.b().whileTrue(new CoralAlgueInspire(pince));
manette1.x().whileTrue(new CoralInspire(pince));
manette1.y().whileTrue(new CoralExpire(pince));
manette1.povUp().toggleOnTrue(new L4(elevateur, pince));
manette1.povRight().toggleOnTrue(new L2(elevateur, pince));
manette1.povLeft().toggleOnTrue(new L3(elevateur, pince));
manette1.povDown().toggleOnTrue(new Depart(elevateur, pince));
//manette2
manette2.leftBumper().toggleOnTrue(new DepartPince(pince));
manette2.a().whileTrue(new StationPince(pince,elevateur));
}
private void configureBindings() {}
public Command getAutonomousCommand() {
return Commands.print("No autonomous command configured");

View File

@ -1,41 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class AlgueExpire extends Command {
private Pince pince;
/** Creates a new CoralAlgue. */
public AlgueExpire(Pince pince) {
this.pince = pince;
addRequirements(pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
pince.aspirealgue(0.5);
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.aspirealgue(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -1,49 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class CoralAlgueInspire extends Command {
private Pince pince;
/** Creates a new CoralAlgue. */
public CoralAlgueInspire(Pince pince) {
this.pince = pince;
addRequirements(pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
pince.aspirecoral(-.5);
if(pince.emperagealgue()>8){
pince.aspirealgue(0);
}
else{
pince.aspirealgue(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.aspirecoral(0);
pince.aspirealgue(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -1,60 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class Depart extends Command {
private Elevateur elevateur;
private Pince pince;
/** Creates a new L2. */
public Depart(Elevateur elevateur, Pince pince) {
this.pince = pince;
this.elevateur = elevateur;
addRequirements(elevateur,pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(elevateur.limit2()==true){
elevateur.vitesse(0);
elevateur.reset();
}
else{
elevateur.vitesse(-.5);
}
if(pince.encodeurpivot()>=900 && pince.encodeurpivot()<=910){
pince.pivote(0);
}
else if(pince.encodeurpivot()>=910){
pince.pivote(-0.5);
}
else{
pince.pivote(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
elevateur.vitesse(0);
pince.pivote(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return elevateur.limit2()==true;
}
}

View File

@ -1,48 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import java.util.function.DoubleSupplier;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class ElevateurManuel extends Command {
private DoubleSupplier doubleSupplier;
private Elevateur elevateur;
/** Creates a new ElevateurManuel. */
public ElevateurManuel(Elevateur elevateur,DoubleSupplier doubleSupplier) {
this.doubleSupplier = doubleSupplier;
this.elevateur = elevateur;
addRequirements(elevateur);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(elevateur.limit2()==true){
elevateur.vitesse(0);
}
elevateur.vitesse(doubleSupplier.getAsDouble());
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
elevateur.vitesse(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -1,62 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class L2 extends Command {
private Elevateur elevateur;
private Pince pince;
/** Creates a new L2. */
public L2(Elevateur elevateur,Pince pince) {
this.elevateur = elevateur;
this.pince = pince;
addRequirements(elevateur,pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(elevateur.position()>=500 && elevateur.position()<=510){
elevateur.vitesse(0);
}
else if(elevateur.position()>=510){
elevateur.vitesse(-0.3);
}
else{
elevateur.vitesse(.3);
}
if(pince.encodeurpivot()>=500 && pince.encodeurpivot()<=510){
pince.pivote(0);
}
else if(pince.encodeurpivot()>=510){
pince.pivote(-0.3);
}
else{
pince.pivote(0.3);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
elevateur.vitesse(0);
pince.pivote(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -1,62 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class L3 extends Command {
private Elevateur elevateur;
private Pince pince;
/** Creates a new L2. */
public L3(Elevateur elevateur,Pince pince) {
this.elevateur = elevateur;
this.pince = pince;
addRequirements(elevateur,pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(elevateur.position()>=700 && elevateur.position()<=710){
elevateur.vitesse(0);
}
else if(elevateur.position()>=510){
elevateur.vitesse(-0.5);
}
else{
elevateur.vitesse(.5);
}
if(pince.encodeurpivot()>=700 && pince.encodeurpivot()<=710){
pince.pivote(0);
}
else if(pince.encodeurpivot()>=710){
pince.pivote(-0.5);
}
else{
pince.pivote(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
elevateur.vitesse(0);
pince.pivote(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -1,62 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class L4 extends Command {
private Elevateur elevateur;
private Pince pince;
/** Creates a new L2. */
public L4(Elevateur elevateur,Pince pince) {
this.elevateur = elevateur;
this.pince = pince;
addRequirements(elevateur,pince);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(elevateur.position()>=800 && elevateur.position()<=810){
elevateur.vitesse(0);
}
else if(elevateur.position()>=810){
elevateur.vitesse(-0.5);
}
else{
elevateur.vitesse(.5);
}
if(pince.encodeurpivot()>=800 && pince.encodeurpivot()<=810){
pince.pivote(0);
}
else if(pince.encodeurpivot()>=810){
pince.pivote(-0.5);
}
else{
pince.pivote(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
elevateur.vitesse(0);
pince.pivote(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return elevateur.position()>=800;
}
}

View File

@ -1,62 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class StationPince extends Command {
private Pince pince;
private Elevateur elevateur;
/** Creates a new L2Pince. */
public StationPince(Pince pince,Elevateur elevateur) {
this.elevateur = elevateur;
this.pince = pince;
addRequirements(pince,elevateur);
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize() {}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(pince.encodeurpivot()>=900 && pince.encodeurpivot()<=910){
pince.pivote(0);
}
else if(pince.encodeurpivot()>=910){
pince.pivote(-0.5);
}
else{
pince.pivote(0.5);
}
if(elevateur.position()>=400 && elevateur.position()<=410){
elevateur.vitesse(0);
}
else if(elevateur.position()>=410){
elevateur.vitesse(-0.3);
}
else{
elevateur.vitesse(.3);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.pivote(0);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
}
}

View File

@ -2,18 +2,18 @@
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
package frc.robot.commands;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Pince;
import frc.robot.subsystems.Requin;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class CoralInspire extends Command {
private Pince pince;
/** Creates a new CoralAlgue. */
public CoralInspire(Pince pince) {
this.pince = pince;
addRequirements(pince);
public class BalayeuseBas extends Command {
private Requin requin;
/** Creates a new Balayeuse. */
public BalayeuseBas(Requin requin) {
this.requin = requin;
addRequirements(requin);
// Use addRequirements() here to declare subsystem dependencies.
}
@ -24,18 +24,25 @@ public class CoralInspire extends Command {
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(pince.emperagecoral()>8){
pince.aspirecoral(0);
if(requin.enBas()==true){
requin.rotationer(0);
}
else{
pince.aspirecoral(.5);
requin.rotationer(-0.5);
}
if(requin.stop()){
requin.balaye(0);
}
else{
requin.balaye(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.aspirecoral(0);
requin.rotationer(0);
requin.balaye(0);
}
// Returns true when the command should end.

View File

@ -2,18 +2,18 @@
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
package frc.robot.commands;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Pince;
import frc.robot.subsystems.Requin;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class DepartPince extends Command {
private Pince pince;
/** Creates a new DepartPince. */
public DepartPince(Pince pince) {
this.pince = pince;
addRequirements(pince);
public class BalayeuseHaut extends Command {
private Requin requin;
/** Creates a new Balayeuse. */
public BalayeuseHaut(Requin requin) {
this.requin = requin;
addRequirements(requin);
// Use addRequirements() here to declare subsystem dependencies.
}
@ -24,19 +24,18 @@ public class DepartPince extends Command {
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
if(pince.position()==true){
pince.pivote(0);
pince.reset();
if(requin.enHaut()==true){
requin.rotationer(0);
}
else{
pince.pivote(.5);
requin.rotationer(0.5);
}
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.pivote(0);
requin.rotationer(0);
}
// Returns true when the command should end.

View File

@ -2,18 +2,18 @@
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.command;
package frc.robot.commands;
import edu.wpi.first.wpilibj2.command.Command;
import frc.robot.subsystems.Pince;
import frc.robot.subsystems.Requin;
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class CoralExpire extends Command {
private Pince pince;
/** Creates a new CoralAlgue. */
public CoralExpire(Pince pince) {
this.pince = pince;
addRequirements(pince);
public class L1 extends Command {
private Requin requin;
/** Creates a new L1. */
public L1(Requin requin) {
this.requin = requin;
addRequirements(requin);
// Use addRequirements() here to declare subsystem dependencies.
}
@ -24,13 +24,13 @@ public class CoralExpire extends Command {
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
pince.aspirecoral(-.5);
requin.balaye(-0.5);
}
// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {
pince.aspirecoral(0);
requin.balaye(.0);
}
// Returns true when the command should end.

View File

@ -1,32 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.subsystems;
import edu.wpi.first.wpilibj.DigitalInput;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import com.revrobotics.spark.SparkMax;
import com.revrobotics.spark.SparkLowLevel.MotorType;
public class Elevateur extends SubsystemBase {
/** Creates a new Elevateur. */
public Elevateur() {}
final SparkMax monte = new SparkMax(0, MotorType.kBrushless);
final DigitalInput limit2 = new DigitalInput(0);
public double position(){
return monte.getEncoder().getPosition();
}
public void vitesse(double vitesse){
monte.set(vitesse);
}
public boolean limit2(){
return limit2.get();
}
public void reset(){
monte.getEncoder().setPosition(0);
}
@Override
public void periodic() {
// This method will be called once per scheduler run
}
}

View File

@ -1,50 +0,0 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package frc.robot.subsystems;
import com.revrobotics.spark.SparkLowLevel.MotorType;
import com.revrobotics.spark.SparkMax;
import edu.wpi.first.wpilibj.DigitalInput;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
public class Pince extends SubsystemBase {
/** Creates a new Pince. */
public Pince() {}
final SparkMax coral = new SparkMax(0, MotorType.kBrushless);
final SparkMax pivoti = new SparkMax(0, MotorType.kBrushless);
final SparkMax algue1 = new SparkMax(0, MotorType.kBrushless);
final SparkMax algue2 = new SparkMax(0, MotorType.kBrushless);
final DigitalInput limit6 = new DigitalInput(0);
public void aspirecoral(double vitesse){
coral.set(vitesse);
}
public void pivote(double vitesse){
pivoti.set(vitesse);
}
public void aspirealgue(double vitesse){
algue2.set(vitesse);
algue1.set(-vitesse);
}
public double encodeurpivot(){
return pivoti.getEncoder().getPosition();
}
public boolean position(){
return limit6.get();
}
public void reset(){
pivoti.getEncoder().setPosition(0);
}
public double emperagecoral(){
return coral.getOutputCurrent();
}
public double emperagealgue(){
return algue1.getOutputCurrent();
}
@Override
public void periodic() {
// This method will be called once per scheduler run
}
}