2022-01-12 06:00:44 +05:30
// 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 frc4388.robot.subsystems ;
2022-02-03 19:51:12 -07:00
//Imported Limit switch ONLY
import com.revrobotics.SparkMaxLimitSwitch ;
import com.revrobotics.SparkMaxLimitSwitch.Type ;
2022-01-21 17:09:57 -07:00
import com.ctre.phoenix.motorcontrol.NeutralMode ;
2022-01-13 18:06:38 -07:00
import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX ;
2022-01-21 17:09:57 -07:00
import edu.wpi.first.wpilibj.motorcontrol.Spark ;
2022-01-12 06:00:44 +05:30
import edu.wpi.first.wpilibj2.command.SubsystemBase ;
2022-01-21 17:09:57 -07:00
import com.revrobotics.CANSparkMax ;
import com.revrobotics.CANSparkMax.IdleMode ;
2022-01-12 06:00:44 +05:30
public class Intake extends SubsystemBase {
2022-01-13 18:06:38 -07:00
private WPI_TalonFX m_intakeMotor ;
2022-01-21 17:09:57 -07:00
private CANSparkMax m_extenderMotor ;
2022-03-05 22:57:55 -07:00
private Serializer m_serializer ;
2022-02-08 17:24:17 -07:00
private SparkMaxLimitSwitch m_inLimit ;
private SparkMaxLimitSwitch m_outLimit ;
2022-01-21 17:09:57 -07:00
public boolean toggle ;
2022-01-12 06:00:44 +05:30
2022-01-13 18:06:38 -07:00
/** Creates a new Intake. */
2022-03-05 22:57:55 -07:00
public Intake ( WPI_TalonFX intakeMotor , CANSparkMax extenderMotor , Serializer serializer ) {
2022-01-20 18:08:31 -07:00
m_intakeMotor = intakeMotor ;
2022-01-25 17:17:07 -07:00
m_extenderMotor = extenderMotor ;
2022-03-05 22:57:55 -07:00
m_serializer = serializer ;
2022-01-21 17:09:57 -07:00
2022-01-25 17:17:07 -07:00
m_extenderMotor . restoreFactoryDefaults ( ) ;
2022-01-21 17:09:57 -07:00
m_intakeMotor . setNeutralMode ( NeutralMode . Brake ) ;
m_intakeMotor . setInverted ( false ) ;
m_extenderMotor . setInverted ( true ) ;
2022-02-08 17:24:17 -07:00
m_inLimit = m_extenderMotor . getForwardLimitSwitch ( SparkMaxLimitSwitch . Type . kNormallyOpen ) ;
m_outLimit = m_extenderMotor . getForwardLimitSwitch ( SparkMaxLimitSwitch . Type . kNormallyOpen ) ;
m_inLimit . enableLimitSwitch ( true ) ;
m_outLimit . enableLimitSwitch ( true ) ;
2022-01-12 06:00:44 +05:30
}
@Override
public void periodic ( ) {
// This method will be called once per scheduler run
}
2022-03-05 11:04:40 -07:00
/**
* Runs The Intake With Triggers.
* @param leftTrigger Left Trigger to Run -
* @param rightTrigger Right Trigger to Run +
*/
2022-01-13 05:41:53 +05:30
public void runWithTriggers ( double leftTrigger , double rightTrigger ) {
2022-03-06 11:14:30 -07:00
m_intakeMotor . set ( ( rightTrigger - leftTrigger ) * 0 . 25 ) ;
2022-01-12 06:34:13 +05:30
}
2022-03-05 11:04:40 -07:00
/**
* Runs The Extender
* @param extended Wether the Extender Is Extended
*/
2022-02-28 16:43:44 -07:00
public void runExtender ( boolean extended ) { //TODO: Do not bring intake in if there is a ball in the extender (check if intake being in brakes the beam brake?)
2022-03-05 22:57:55 -07:00
if ( ! m_serializer . getBeam ( ) & & ! extended ) return ;
double extenderMotorSpeed = extended ? 0 . 25d : - 0 . 25d ;
2022-01-25 17:17:07 -07:00
m_extenderMotor . set ( extenderMotorSpeed ) ;
2022-01-12 06:34:13 +05:30
}
2022-03-05 22:57:55 -07:00
public void runExtender ( double input ) {
if ( ! m_serializer . getBeam ( ) & & input < 0 . ) return ;
m_extenderMotor . set ( input ) ;
}
2022-03-05 11:04:40 -07:00
/**
* Toggles The Extender
*/
2022-01-21 17:09:57 -07:00
public void toggleExtender ( ) {
toggle = ! toggle ;
2022-03-05 11:04:40 -07:00
runExtender ( toggle ) ;
2022-01-21 17:09:57 -07:00
}
}