Merge branch 'main' of https://git.demerso.net/pls5618/2024/robot
This commit is contained in:
		@@ -6,17 +6,22 @@ package frc.robot.subsystem;
 | 
			
		||||
 | 
			
		||||
import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX;
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.networktables.GenericEntry;
 | 
			
		||||
import edu.wpi.first.wpilibj.DigitalInput;
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
import frc.robot.Constants;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard;import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.BuiltInLayouts;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardLayout;
 | 
			
		||||
 | 
			
		||||
public class Accumulateur extends SubsystemBase {
 | 
			
		||||
  /** Creates a new Accumulateur. */
 | 
			
		||||
 
 | 
			
		||||
  ShuffleboardTab dashboard = Shuffleboard.getTab("dashboard"); 
 | 
			
		||||
  ShuffleboardTab dashboard = Shuffleboard.getTab("dashboard");
 | 
			
		||||
   private GenericEntry vitesse =
 | 
			
		||||
      dashboard.add("vitesseacc", 1)
 | 
			
		||||
         .getEntry(); 
 | 
			
		||||
  final WPI_TalonSRX Moteuracc2 = new WPI_TalonSRX(Constants.Moteuracc2);
 | 
			
		||||
  final WPI_TalonSRX Moteuracc = new WPI_TalonSRX(Constants.Moteuracc);
 | 
			
		||||
  final DigitalInput limitacc = new DigitalInput(Constants.limitacc);
 | 
			
		||||
@@ -32,12 +37,16 @@ public class Accumulateur extends SubsystemBase {
 | 
			
		||||
    return limitacc.get();
 | 
			
		||||
  }
 | 
			
		||||
  public Accumulateur() {
 | 
			
		||||
    
 | 
			
		||||
    dashboard.addBoolean("limitacc", this::limitswitch);
 | 
			
		||||
  }
 | 
			
		||||
  public void Accumuler(double vitesse){
 | 
			
		||||
    Moteuracc.set(vitesse);
 | 
			
		||||
    Moteuracc2.set(vitesse);
 | 
			
		||||
  }
 | 
			
		||||
  public void Accumuler(){
 | 
			
		||||
    Accumuler(vitesse.getDouble(0.1));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void periodic() {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
package frc.robot.subsystem;
 | 
			
		||||
 | 
			
		||||
import com.ctre.phoenix.motorcontrol.can.TalonSRX;
 | 
			
		||||
 | 
			
		||||
import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX;
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,15 @@ package frc.robot.subsystem;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import com.pathplanner.lib.auto.AutoBuilder;
 | 
			
		||||
import com.pathplanner.lib.util.HolonomicPathFollowerConfig;
 | 
			
		||||
import com.pathplanner.lib.util.PIDConstants;
 | 
			
		||||
import com.pathplanner.lib.util.ReplanningConfig;
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.math.geometry.Translation2d;
 | 
			
		||||
import edu.wpi.first.math.kinematics.SwerveModulePosition;
 | 
			
		||||
import edu.wpi.first.wpilibj.DriverStation;
 | 
			
		||||
import edu.wpi.first.wpilibj.Filesystem;
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
import swervelib.SwerveDrive;
 | 
			
		||||
@@ -25,7 +32,17 @@ public class Drive extends SubsystemBase {
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  public Drive() {
 | 
			
		||||
 | 
			
		||||
    AutoBuilder.configureHolonomic(swerveDrive::getPose, swerveDrive::resetOdometry, swerveDrive::getRobotVelocity, swerveDrive::setChassisSpeeds, new HolonomicPathFollowerConfig(
 | 
			
		||||
      new PIDConstants(5,0,0), new PIDConstants(5,0,0), 4.5,
 | 
			
		||||
      0.275,
 | 
			
		||||
      new ReplanningConfig()
 | 
			
		||||
      ), ()->{
 | 
			
		||||
        var alliance = DriverStation.getAlliance();
 | 
			
		||||
        if(alliance.isPresent()){
 | 
			
		||||
          return alliance.get() == DriverStation.Alliance.Red;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
         }, this);
 | 
			
		||||
     try {
 | 
			
		||||
      this.swerveDrive = new SwerveParser(swerveJsonDirectory).createSwerveDrive(2);
 | 
			
		||||
    } catch (IOException e) {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ public class Guideur extends SubsystemBase {
 | 
			
		||||
  
 | 
			
		||||
    final WPI_TalonSRX guideur = new WPI_TalonSRX(Constants.guideur);
 | 
			
		||||
    final DigitalInput guideurhaut = new DigitalInput(Constants.guideurhaut);
 | 
			
		||||
    final DigitalInput guideurbas = new DigitalInput(Constants.guideurhaut);
 | 
			
		||||
    final DigitalInput guideurbas = new DigitalInput(Constants.guideurbas);
 | 
			
		||||
 | 
			
		||||
      public void guider(double vitesse){
 | 
			
		||||
        guideur.set(vitesse);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								src/main/java/frc/robot/subsystem/LED.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/main/java/frc/robot/subsystem/LED.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
// 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.subsystem;
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.wpilibj.AddressableLED;
 | 
			
		||||
import edu.wpi.first.wpilibj.AddressableLEDBuffer;
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
 | 
			
		||||
public class LED extends SubsystemBase {
 | 
			
		||||
  /** Creates a new LED. */
 | 
			
		||||
  public LED() {}
 | 
			
		||||
   AddressableLED led = new AddressableLED(9);
 | 
			
		||||
   AddressableLEDBuffer ledBuffer = new AddressableLEDBuffer(60);
 | 
			
		||||
   public void led(){
 | 
			
		||||
    led.setData(ledBuffer);
 | 
			
		||||
    led.start();
 | 
			
		||||
   }
 | 
			
		||||
   public void couleur(int R, int G, int B){
 | 
			
		||||
    ledBuffer.setRGB(0, R, G, B);
 | 
			
		||||
   }
 | 
			
		||||
  @Override
 | 
			
		||||
  public void periodic() {
 | 
			
		||||
    // This method will be called once per scheduler run
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -7,29 +7,49 @@ package frc.robot.subsystem;
 | 
			
		||||
import com.revrobotics.CANSparkMax;
 | 
			
		||||
import com.revrobotics.CANSparkLowLevel.MotorType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.networktables.GenericEntry;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard;
 | 
			
		||||
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab;
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
import frc.robot.Constants;
 | 
			
		||||
 | 
			
		||||
public class Lanceur extends SubsystemBase {
 | 
			
		||||
  /** Creates a new Lanceur. */
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  public Lanceur() {}
 | 
			
		||||
  final CANSparkMax lancer = new CANSparkMax(Constants.lanceur, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lancer2 = new CANSparkMax(Constants.lancer2, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lancer3 = new CANSparkMax(Constants.lancer3, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lancer4 = new CANSparkMax(Constants.lancer4, MotorType.kBrushless);
 | 
			
		||||
 | 
			
		||||
  ShuffleboardTab dashboard = Shuffleboard.getTab("dashboard");
 | 
			
		||||
   private GenericEntry vitesse =
 | 
			
		||||
      dashboard.add("vitesse", 1)
 | 
			
		||||
         .getEntry();
 | 
			
		||||
         private GenericEntry vitesseamp =
 | 
			
		||||
            dashboard.add("vitesseamp", 1)
 | 
			
		||||
               .getEntry();
 | 
			
		||||
  public Lanceur() {
 | 
			
		||||
    
 | 
			
		||||
  }
 | 
			
		||||
  final CANSparkMax lanceur1 = new CANSparkMax(Constants.lanceur, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lanceur2 = new CANSparkMax(Constants.lancer2, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lanceur3 = new CANSparkMax(Constants.lancer3, MotorType.kBrushless);
 | 
			
		||||
  final CANSparkMax lanceur4 = new CANSparkMax(Constants.lancer4, MotorType.kBrushless);
 | 
			
		||||
  public void pid(){
 | 
			
		||||
    lanceur1.getPIDController();
 | 
			
		||||
  }
 | 
			
		||||
  public void lancer(double vitesse){
 | 
			
		||||
    lancer.set(vitesse);
 | 
			
		||||
    lanceur1.set(vitesse);
 | 
			
		||||
  }
 | 
			
		||||
  public void lancerspeaker(){
 | 
			
		||||
    lancer(vitesse.getDouble(0.1));
 | 
			
		||||
  }
 | 
			
		||||
  public void lanceramp(){
 | 
			
		||||
    lancer(vitesseamp.getDouble(0.5));
 | 
			
		||||
  }
 | 
			
		||||
  public double vitesse(double vitesse){
 | 
			
		||||
    return lanceur1.getEncoder().getVelocity();
 | 
			
		||||
  }
 | 
			
		||||
    public void lanceur(){
 | 
			
		||||
    lancer2.follow(lancer);
 | 
			
		||||
    lancer3.follow(lancer);
 | 
			
		||||
    lancer4.follow(lancer);
 | 
			
		||||
    lancer3.setInverted(true);
 | 
			
		||||
    lancer4.setInverted(true);
 | 
			
		||||
    lanceur2.follow(lanceur1);
 | 
			
		||||
    lanceur3.follow(lanceur1);
 | 
			
		||||
    lanceur4.follow(lanceur1);
 | 
			
		||||
    lanceur3.setInverted(true);
 | 
			
		||||
    lanceur4.setInverted(true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,75 @@
 | 
			
		||||
// 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.subsystem;
 | 
			
		||||
 | 
			
		||||
import edu.wpi.first.wpilibj2.command.SubsystemBase;
 | 
			
		||||
 | 
			
		||||
import frc.robot.PixyException;
 | 
			
		||||
import frc.robot.PixyPacket;
 | 
			
		||||
import edu.wpi.first.wpilibj.SerialPort;
 | 
			
		||||
import edu.wpi.first.wpilibj.SerialPort.Port;
 | 
			
		||||
//Warning: if the pixy is plugged in through mini usb, this code WILL NOT WORK b/c the pixy is smart and detects where it should send data
 | 
			
		||||
public class Pixy extends SubsystemBase {
 | 
			
		||||
  
 | 
			
		||||
  /** Creates a new Pixy. */
 | 
			
		||||
  public Pixy() {}
 | 
			
		||||
	SerialPort pixy;
 | 
			
		||||
	Port port = Port.kMXP;
 | 
			
		||||
	PixyPacket[] packets;
 | 
			
		||||
	PixyException pExc;
 | 
			
		||||
	String print;
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void periodic() {
 | 
			
		||||
    // This method will be called once per scheduler run
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	public Pixy() {
 | 
			
		||||
		pixy = new SerialPort(19200, port);
 | 
			
		||||
		pixy.setReadBufferSize(14);
 | 
			
		||||
		packets = new PixyPacket[7];
 | 
			
		||||
		pExc = new PixyException(print);
 | 
			
		||||
	}
 | 
			
		||||
	//This method parses raw data from the pixy into readable integers
 | 
			
		||||
	public int cvt(byte upper, byte lower) {
 | 
			
		||||
		return (((int)upper & 0xff) << 8) | ((int)lower & 0xff);
 | 
			
		||||
	}
 | 
			
		||||
	public void pixyReset(){
 | 
			
		||||
		pixy.reset();
 | 
			
		||||
	}
 | 
			
		||||
	//This method gathers data, then parses that data, and assigns the ints to global variables
 | 
			
		||||
	public PixyPacket readPacket(int Signature) throws PixyException {
 | 
			
		||||
		int Checksum;
 | 
			
		||||
		int Sig;
 | 
			
		||||
		byte[] rawData = new byte[32];
 | 
			
		||||
		try{
 | 
			
		||||
			rawData = pixy.read(32);
 | 
			
		||||
		} catch (RuntimeException e){
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
		if(rawData.length < 32){
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
		for (int i = 0; i <= 16; i++) {
 | 
			
		||||
			int syncWord = cvt(rawData[i+1], rawData[i+0]); //Parse first 2 bytes
 | 
			
		||||
			if (syncWord == 0xaa55) {   //Check is first 2 bytes equal a "sync word", which indicates the start of a packet of valid data
 | 
			
		||||
				syncWord = cvt(rawData[i+3], rawData[i+2]); //Parse the next 2 bytes
 | 
			
		||||
				
 | 
			
		||||
				if (syncWord != 0xaa55){ //Shifts everything in the case that one syncword is sent
 | 
			
		||||
					i -= 2;              
 | 
			
		||||
				}
 | 
			
		||||
				//This next block parses the rest of the data
 | 
			
		||||
					Checksum = cvt(rawData[i+5], rawData[i+4]);					
 | 
			
		||||
					Sig = cvt(rawData[i+7], rawData[i+6]);
 | 
			
		||||
					if(Sig <= 0 || Sig > packets.length){
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					packets[Sig - 1] = new PixyPacket();
 | 
			
		||||
					packets[Sig - 1].X = cvt(rawData[i+9], rawData[i+8]);
 | 
			
		||||
					packets[Sig - 1].Y = cvt(rawData[i+11], rawData[i+10]);
 | 
			
		||||
					packets[Sig - 1].Width = cvt(rawData[i+13], rawData[i+12]);
 | 
			
		||||
					packets[Sig - 1].Height = cvt(rawData[i+15], rawData[i+14]);
 | 
			
		||||
					//Checks whether the data is valid using the checksum *This if block should never be entered*
 | 
			
		||||
					if (Checksum != Sig + packets[Sig - 1].X + packets[Sig - 1].Y + packets[Sig - 1].Width + packets[Sig - 1].Height) {
 | 
			
		||||
						packets[Sig - 1] = null;
 | 
			
		||||
						throw pExc;
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		//Assigns our packet to a temp packet, then deletes data so that we dont return old data
 | 
			
		||||
		
 | 
			
		||||
		PixyPacket pkt = packets[Signature - 1];
 | 
			
		||||
		packets[Signature - 1] = null;
 | 
			
		||||
		return pkt;
 | 
			
		||||
	}
 | 
			
		||||
} 
 | 
			
		||||
		Reference in New Issue
	
	Block a user