# 20211018~20211024 程式組 ###### tags: `工作筆記 程式組` ## 20211019 ### 林俊彥 本日嘗試之後的半成品 ``` java package frc.robot; import javax.naming.ldap.Control; import javax.naming.ldap.ControlFactory; import com.ctre.phoenix.motorcontrol.ControlMode; import com.ctre.phoenix.motorcontrol.can.TalonFX; import com.ctre.phoenix.motorcontrol.can.TalonSRXPIDSetConfiguration; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private static final String kDefaultAuto = "Default"; private static final String kCustomAuto = "My Auto"; private String m_autoSelected; private final SendableChooser<String> m_chooser = new SendableChooser<>(); TalonFX leftFront = new TalonFX(1); TalonFX rightFront = new TalonFX(3); TalonFX rightBack = new TalonFX(4); TalonFX leftBack = new TalonFX(2); WPI_TalonSRX transporter1 = new WPI_TalonSRX(8); WPI_TalonSRX transporter2 = new WPI_TalonSRX(10); TalonFX shooter = new TalonFX(5); Joystick jst = new Joystick(0); public final int leftStick_X = 0; public final int leftStick_Y = 1; public final int rightStick_X = 4; public final int rightStick_Y = 5; public final int trigger_L = 2; public final int trigger_R = 3; public final int Btn_A = 1; public final int Btn_B = 2; public final int Btn_X = 3; public final int Btn_Y = 4; public final int Btn_LB = 5; public final int Btn_RB = 6; public final int Btn_LS = 9; public final int Btn_RS = 10; @Override public void robotInit() { leftFront.setInverted(true); leftBack.setInverted(true); rightFront.setInverted(true); rightBack.setInverted(true); } @Override public void autonomousInit() { m_autoSelected = m_chooser.getSelected(); System.out.println("Auto selected: " + m_autoSelected); } @Override public void autonomousPeriodic() { switch (m_autoSelected) { case kCustomAuto: break; case kDefaultAuto: default: break; } } @Override public void teleopInit() {} @Override public void teleopPeriodic() { Object controlMode; if (jst.getRawAxis(leftStick_Y) > 0 || jst.getRawAxis(leftStick_Y) < 0) { leftFront.set (ControlMode.PercentOutput, jst.getRawAxis(leftStick_Y) * 0.7); leftBack.set(ControlMode.PercentOutput, jst.getRawAxis (leftStick_Y) * 0.7); } else { leftFront.set(ControlMode.PercentOutput, 0); leftBack.set(ControlMode.PercentOutput, 0); } if (jst.getRawAxis(rightStick_Y) > 0 || jst.getRawAxis(rightStick_Y) < 0) { rightFront.set(ControlMode.PercentOutput, jst.getRawAxis(rightStick_Y) * 0.7); rightBack.set(ControlMode.PercentOutput, jst.getRawAxis(leftStick_Y )* 0.7); } else { rightFront.set(ControlMode.PercentOutput, 0); leftBack.set(ControlMode.PercentOutput, 0); } if(jst.getRawButton(Btn_RB) && jst.getRawAxis(rightStick_Y) >= 0.2){ transporter1.set(ControlMode.PercentOutput,jst.getRawAxis(leftStick_Y)*0.7); transporter2.set(ControlMode.PercentOutput,jst.getRawAxis(leftStick_Y)*0.7); } } @Override public void disabledInit() {} @Override public void disabledPeriodic() {} @Override public void testInit() {} ㄋ˙ㄧㄚˇ @Override public void testPeriodic() {} } ``` ### 謝亞諺 ``` java package frc.robot; import com.ctre.phoenix.motorcontrol.ControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.SpeedControllerGroup; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private static final String kDefaultAuto = "Default"; private static final String kCustomAuto = "My Auto"; private String m_autoSelected; private final SendableChooser<String> m_chooser = new SendableChooser<>(); WPI_TalonFX LeftFront =new WPI_TalonFX(1); WPI_TalonFX LeftBack =new WPI_TalonFX(2); WPI_TalonFX RightFront =new WPI_TalonFX(3); WPI_TalonFX RightBack =new WPI_TalonFX(4); WPI_TalonFX shoter1 = new WPI_TalonFX(5); WPI_TalonFX shoter2 = new WPI_TalonFX(6); WPI_TalonSRX trans1 = new WPI_TalonSRX(8); WPI_TalonFX shoter3 = new WPI_TalonFX(9); WPI_TalonSRX trans2 = new WPI_TalonSRX(10); SpeedControllerGroup LeftDrive = new SpeedControllerGroup(LeftFront,LeftBack); SpeedControllerGroup RightDrive = new SpeedControllerGroup(RightFront,RightBack); DifferentialDrive DifferentialDrive = new DifferentialDrive(LeftDrive, RightDrive); Joystick js1 = new Joystick(0); public final int leftStick_X = 0; public final int leftStick_Y = 1; public final int rightStick_X = 4; public final int rightStick_Y = 5; public final int trigger_L = 2; public final int trigger_R = 3; public final int Btn_A = 1; public final int Btn_B = 2; public final int Btn_X = 3; public final int Btn_Y = 4; public final int Btn_LB = 5; public final int Btn_RB = 6; public final int Btn_LS = 9; public final int Btn_RS = 10; @Override public void robotInit() { LeftFront.setInverted(true); RightFront.setInverted(true); LeftBack.setInverted(true); RightBack.setInverted(true); shoter1.follow(shoter2); } @Override public void robotPeriodic() {} @Override public void autonomousInit() { m_autoSelected = m_chooser.getSelected(); System.out.println("Auto selected: " + m_autoSelected); } @Override public void autonomousPeriodic() { switch (m_autoSelected) { case kCustomAuto: break; case kDefaultAuto: default: break; } } @Override public void teleopInit() {} @Override public void teleopPeriodic() { DifferentialDrive.arcadeDrive(js1.getRawAxis(1)*0.6,-js1.getRawAxis(4)*0.6); if(js1.getRawAxis(trigger_R)>0.1){ shoter1.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*-0.8); trans1.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*0.8); shoter3.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*0.8); if(js1.getRawButtonPressed(Btn_Y)){ trans2.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*0.8);} else if(js1.getRawButtonReleased(Btn_Y)){ trans2.set(0); } }else{ shoter1.set(0); trans2.set(0); trans2.set(0); shoter3.set(0); shoter2.set(0); } } @Override public void disabledInit() {} @Override public void disabledPeriodic() {} @Override public void testInit() {} @Override public void testPeriodic() {} } ``` ### 黃冠穎 今天主要把大機器人程式寫好,然後其他人有拿去測試的樣子。 ### 翹博 ```cpp= package frc.robot; import com.ctre.phoenix.motorcontrol.can.TalonFX; import com.ctre.phoenix.motorcontrol.can.TalonSRX; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import com.ctre.phoenix.motorcontrol.can.WPI_VictorSPX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.SpeedController; import edu.wpi.first.wpilibj.SpeedControllerGroup; import edu.wpi.first.wpilibj.Talon; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { WPI_VictorSPX mLeftFront = new WPI_VictorSPX(2); WPI_VictorSPX mLeftBack = new WPI_VictorSPX(1); WPI_VictorSPX mRightFront = new WPI_VictorSPX(3); WPI_VictorSPX mRightBack = new WPI_VictorSPX(4); SpeedControllerGroup leftDrive = new SpeedControllerGroup(mLeftFront, mLeftBack); SpeedControllerGroup rightDrive = new SpeedControllerGroup(mRightFront, mRightBack); DifferentialDrive differentialDrive = new DifferentialDrive(leftDrive, rightDrive); Joystick js1 =new Joystick(0); @Override public void robotInit() { mLeftBack.setInverted(true); mLeftFront.setInverted(true); mRightFront.setInverted(true); mRightBack.setInverted(true); } @Override public void robotPeriodic() { } @Override public void autonomousInit() { } @Override public void autonomousPeriodic() { } @Override public void teleopInit() { } @Override public void teleopPeriodic() { differentialDrive.arcadeDrive(js1.getRawAxis(1),js1.getRawAxis(4)); /*if(js1.getRawAxis(leftstick_Y)){ leftFront.set(ControlMode.PercentOutput, js1.getRawAxis(leftstick_Y)); leftBack.set(ControlMode.PercentOutput, js1.getRawAxis(leftstick_Y)); } if(js1.getRawAxis(rightstick_Y)){ rightFront.set(ControlMode.PercentOutput, js1.getRawAxis(rightstick_Y)); rightBack.set(ControlMode.PercentOutput, js1.getRawAxis(rightstick_Y)); }*/ } @Override public void disabledInit() { } @Override public void disabledPeriodic() { } @Override public void testInit() { } @Override public void testPeriodic() { } } ``` ### 陳彥廷 ```java= package frc.robot; import com.ctre.phoenix.motorcontrol.ControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.SpeedControllerGroup; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private static final String kDefaultAuto = "Default"; private static final String kCustomAuto = "My Auto"; private String m_autoSelected; private final SendableChooser<String> m_chooser = new SendableChooser<>(); WPI_TalonFX LeftFront =new WPI_TalonFX(1); WPI_TalonFX LeftBack =new WPI_TalonFX(2); WPI_TalonFX RightFront =new WPI_TalonFX(3); WPI_TalonFX RightBack =new WPI_TalonFX(4); WPI_TalonFX downRightShooter = new WPI_TalonFX(5); WPI_TalonFX downLeftShooter = new WPI_TalonFX(6); WPI_TalonSRX trans1 = new WPI_TalonSRX(8); WPI_TalonFX upShooter = new WPI_TalonFX(9); WPI_TalonSRX trans2 = new WPI_TalonSRX(10); SpeedControllerGroup LeftDrive = new SpeedControllerGroup(LeftFront,LeftBack); SpeedControllerGroup RightDrive = new SpeedControllerGroup(RightFront,RightBack); DifferentialDrive DifferentialDrive = new DifferentialDrive(LeftDrive, RightDrive); Joystick js1 = new Joystick(0); public final int leftStick_X = 0; public final int leftStick_Y = 1; public final int rightStick_X = 4; public final int rightStick_Y = 5; public final int trigger_L = 2; public final int trigger_R = 3; public final int Btn_A = 1; public final int Btn_B = 2; public final int Btn_X = 3; public final int Btn_Y = 4; public final int Btn_LB = 5; public final int Btn_RB = 6; public final int Btn_LS = 9; public final int Btn_RS = 10; @Override public void robotInit() { LeftFront.setInverted(true); RightFront.setInverted(true); LeftBack.setInverted(true); RightBack.setInverted(true); downRightShooter.setInverted(true); } @Override public void robotPeriodic() {} @Override public void autonomousInit() { m_autoSelected = m_chooser.getSelected(); System.out.println("Auto selected: " + m_autoSelected); } @Override public void autonomousPeriodic() { switch (m_autoSelected) { case kCustomAuto: break; case kDefaultAuto: default: break; } } @Override public void teleopInit() {} @Override public void teleopPeriodic() { DifferentialDrive.arcadeDrive(js1.getRawAxis(1)*0.6,-js1.getRawAxis(4)*0.6); if(js1.getRawAxis(trigger_R)>0.1){ double speed = 0.5; downRightShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); downLeftShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); upShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); trans1.set(ControlMode.PercentOutput, 0.8); trans2.set(ControlMode.PercentOutput, 0.8); }else{ downRightShooter.set(0); upShooter.set(0); downLeftShooter.set(0); trans1.set(0); trans2.set(0); } } @Override public void disabledInit() {} @Override public void disabledPeriodic() {} @Override public void testInit() {} @Override public void testPeriodic() {} } ``` ### 陳伯豪 ``` java= package frc.robot; import javax.naming.ldap.Control; import javax.naming.ldap.ControlFactory; import com.ctre.phoenix.motorcontrol.ControlMode; import com.ctre.phoenix.motorcontrol.can.TalonFX; import com.ctre.phoenix.motorcontrol.can.TalonSRXPIDSetConfiguration; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private static final String kDefaultAuto = "Default"; private static final String kCustomAuto = "My Auto"; private String m_autoSelected; private final SendableChooser<String> m_chooser = new SendableChooser<>(); TalonFX leftFront = new TalonFX(1); TalonFX rightFront = new TalonFX(3); TalonFX rightBack = new TalonFX(4); TalonFX leftBack = new TalonFX(2); WPI_TalonSRX transporter1 = new WPI_TalonSRX(8); WPI_TalonSRX transporter2 = new WPI_TalonSRX(10); TalonFX shooter = new TalonFX(5); Joystick jst = new Joystick(0); public final int leftStick_X = 0; public final int leftStick_Y = 1; public final int rightStick_X = 4; public final int rightStick_Y = 5; public final int trigger_L = 2; public final int trigger_R = 3; public final int Btn_A = 1; public final int Btn_B = 2; public final int Btn_X = 3; public final int Btn_Y = 4; public final int Btn_LB = 5; public final int Btn_RB = 6; public final int Btn_LS = 9; public final int Btn_RS = 10; @Override public void robotInit() { leftFront.setInverted(true); leftBack.setInverted(true); rightFront.setInverted(true); rightBack.setInverted(true); } @Override public void autonomousInit() { m_autoSelected = m_chooser.getSelected(); System.out.println("Auto selected: " + m_autoSelected); } @Override public void autonomousPeriodic() { switch (m_autoSelected) { case kCustomAuto: break; case kDefaultAuto: default: break; } } @Override public void teleopInit() {} @Override public void teleopPeriodic() { Object controlMode; if (jst.getRawAxis(leftStick_Y) > 0 || jst.getRawAxis(leftStick_Y) < 0) { leftFront.set (ControlMode.PercentOutput, jst.getRawAxis(leftStick_Y) * 0.7); leftBack.set(ControlMode.PercentOutput, jst.getRawAxis (leftStick_Y) * 0.7); }else{ leftFront.set(ControlMode.PercentOutput, 0); leftBack.set(ControlMode.PercentOutput, 0); } if (jst.getRawAxis(rightStick_Y) > 0 || jst.getRawAxis(rightStick_Y) < 0) { rightFront.set(ControlMode.PercentOutput, jst.getRawAxis(rightStick_Y) * 0.7); rightBack.set(ControlMode.PercentOutput, jst.getRawAxis(leftStick_Y )* 0.7); }else{ rightFront.set(ControlMode.PercentOutput, 0); leftBack.set(ControlMode.PercentOutput, 0); } if(jst.getRawButton(Btn_RB) && jst.getRawAxis(rightStick_Y) >= 0.2){ transporter1.set(ControlMode.PercentOutput,jst.getRawAxis(leftStick_Y)*0.7); transporter2.set(ControlMode.PercentOutput,jst.getRawAxis(leftStick_Y)*0.7); } } @Override public void disabledInit() { } @Override public void disabledPeriodic() { } @Override public void testInit() { } @Override public void testPeriodic() {} } ``` ## 20211021 ### 陳彥廷 藍色底盤車 ```java= package frc.robot; import com.ctre.phoenix.motorcontrol.can.WPI_VictorSPX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.SpeedControllerGroup; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.drive.DifferentialDrive; public class Robot extends TimedRobot { WPI_VictorSPX mLeftFront = new WPI_VictorSPX(2); WPI_VictorSPX mLeftBack = new WPI_VictorSPX(1); WPI_VictorSPX mRightFront = new WPI_VictorSPX(3); WPI_VictorSPX mRightBack = new WPI_VictorSPX(4); SpeedControllerGroup leftDrive = new SpeedControllerGroup(mLeftFront, mLeftBack); SpeedControllerGroup rightDrive = new SpeedControllerGroup(mRightFront, mRightBack); DifferentialDrive differentialDrive = new DifferentialDrive(leftDrive, rightDrive); Joystick js1 = new Joystick(0); @Override public void robotInit() { mLeftBack.setInverted(true); mLeftFront.setInverted(true); mRightFront.setInverted(true); mRightBack.setInverted(true); } @Override public void robotPeriodic() { } @Override public void autonomousInit() { } @Override public void autonomousPeriodic() { } @Override public void teleopInit() { } @Override public void teleopPeriodic() { //differentialDrive.arcadeDrive(js1.getRawAxis(1),js1.getRawAxis(3)); differentialDrive.tankDrive(js1.getRawAxis(1)*0.8,js1.getRawAxis(5)*0.8); /*if(js1.getRawAxis(leftstick_Y)){ leftFront.set(ControlMode.PercentOutput, js1.getRawAxis(leftstick_Y)); leftBack.set(ControlMode.PercentOutput, js1.getRawAxis(leftstick_Y)); } if(js1.getRawAxis(rightstick_Y)){ rightFront.set(ControlMode.PercentOutput, js1.getRawAxis(rightstick_Y)); rightBack.set(ControlMode.PercentOutput, js1.getRawAxis(rightstick_Y)); }*/ } @Override public void disabledInit() { } @Override public void disabledPeriodic() { } @Override public void testInit() { } @Override public void testPeriodic() { } } ``` 紅色砲台車 ```java= package frc.robot; import com.ctre.phoenix.motorcontrol.ControlMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import edu.wpi.first.wpilibj.Joystick; import edu.wpi.first.wpilibj.SpeedControllerGroup; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.drive.DifferentialDrive; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; public class Robot extends TimedRobot { private static final String kDefaultAuto = "Default"; private static final String kCustomAuto = "My Auto"; private String m_autoSelected; private final SendableChooser<String> m_chooser = new SendableChooser<>(); WPI_TalonFX LeftFront =new WPI_TalonFX(1); WPI_TalonFX LeftBack =new WPI_TalonFX(2); WPI_TalonFX RightFront =new WPI_TalonFX(3); WPI_TalonFX RightBack =new WPI_TalonFX(4); WPI_TalonFX downRightShooter = new WPI_TalonFX(5); WPI_TalonFX downLeftShooter = new WPI_TalonFX(6); WPI_TalonSRX trans1 = new WPI_TalonSRX(8); WPI_TalonFX upShooter = new WPI_TalonFX(9); WPI_TalonSRX trans2 = new WPI_TalonSRX(10); SpeedControllerGroup LeftDrive = new SpeedControllerGroup(LeftFront,LeftBack); SpeedControllerGroup RightDrive = new SpeedControllerGroup(RightFront,RightBack); Joystick js1 = new Joystick(0); public final int leftStick_X = 0; public final int leftStick_Y = 1; public final int rightStick_X = 4; public final int rightStick_Y = 5; public final int trigger_L = 2; public final int trigger_R = 3; public final int Btn_A = 1; public final int Btn_B = 2; public final int Btn_X = 3; public final int Btn_Y = 4; public final int Btn_LB = 5; public final int Btn_RB = 6; public final int Btn_LS = 9; public final int Btn_RS = 10; @Override public void robotInit() { LeftFront.setInverted(true); RightFront.setInverted(true); LeftBack.setInverted(true); RightBack.setInverted(true); downRightShooter.setInverted(true); } @Override public void robotPeriodic() {} @Override public void autonomousInit() { m_autoSelected = m_chooser.getSelected(); System.out.println("Auto selected: " + m_autoSelected); } @Override public void autonomousPeriodic() { switch (m_autoSelected) { case kCustomAuto: break; case kDefaultAuto: default: break; } } @Override public void teleopInit() {} @Override public void teleopPeriodic() { if(js1.getRawAxis(leftStick_X) > 0.2 || js1.getRawAxis(leftStick_X) < -0.2){ LeftDrive.set(-js1.getRawAxis(leftStick_X) * 0.2); RightDrive.set(-js1.getRawAxis(leftStick_X) * 0.2); }else{ LeftDrive.set(0); RightDrive.set(0); } if(js1.getRawAxis(trigger_R)>0.1){ double speed = 0.5; downRightShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); downLeftShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); upShooter.set(ControlMode.PercentOutput,js1.getRawAxis(trigger_R)*speed); trans1.set(ControlMode.PercentOutput, 0.8); trans2.set(ControlMode.PercentOutput, 0.8); }else{ downRightShooter.set(0); upShooter.set(0); downLeftShooter.set(0); trans1.set(0); trans2.set(0); } } @Override public void disabledInit() {} @Override public void disabledPeriodic() {} @Override public void testInit() {} @Override public void testPeriodic() {} } ``` ### 黃冠穎 今天複習了一些暑假看到影片的內容Arduino等的,中間和其他人上去升旗台測試程式和大機器人射球的距離,回來地下室去幫忙做消毒門。 ### 吳玠廷 今天主要上去升旗台測試紅色砲台車,色砲台車則是順利測試完成,測出來的數值是射球的速度是0.6傳送球的是0.8,拉球進去的是0.7。 沒有用trigger的原因是有些人按壓的力道不同所以射球的力道也不同所以我們改用按鈕控制。 ### 陳伯豪 今天主要在幫校慶弄程式,零碎時間我就拿來寫 APCS 的考古題