# 20210913~20210919 程式組
###### tags: `工作筆記 程式組`
## 20210914
### 黃冠穎
今天魏仁祥和陳彥廷主要還是在修機器人的連線問題(的樣子,而其他學弟在幫忙查可能的原因及解決辦法,今天也沒上什麼課。我今天自己在旁邊看之前暑假其他人傳的Arduino的按壓開關與微動開關。
### 陳伯豪
這個禮拜因為剛換電腦,因此我就將FRC官方影片上有關PID的東西整理起來
連結:[PID 控制](https://hackmd.io/@yqvHTthmTYehjxz4k9Hqrw/rk1l-b0GF)
### 吳玠廷
今天把HC06藍芽的程式碼上註解,之後和學長測試機器人可不可以連線,但最後失敗了。
### 陳彥廷
今天還在修連線的問題,雖然上週修過了,不過這週又連不上,所以又在
### 林俊彥
今天大部分的時間都是在尋找為什麼連不上機器人 網路上大部分的解決方法都是用USB直接連線 也有人說 把roborio重新灌新的韌體 最後再有USB的時候連上了機器人
## 20210916
### 吳玠廷
今天用joystick測試機器人可不可以動,後來用Phoenix Tunert查機器人各部位的名稱及id以便寫出能讓機器人射球的程式,但最後射出球的部位轉錯邊以及有些地方動力不夠,於是調整了一下程式碼的數值,還好最後成功了。
``` java
if (js1.getRawButton(Btn_A)) {shooter.set(ControlMode.PercentOutput,-0.5);
transporter1.set(ControlMode.PercentOutput,0.8);
transporter2.set(ControlMode.PercentOutput,0.5);
} else {shooter.set(ControlMode.PercentOutput,0);
transporter1.set(ControlMode.PercentOutput,0);
transporter2.set(ControlMode.PercentOutput,0);
```
### 劉柏蔚
今天我們終於發現如何控制neo馬達了,之前我們一直忘記下載spark的library因此每次些程式時都沒辦法deploy。我們在網絡上有找到一個人在github分享如何撰寫spark的程式還有所需要函式庫的[載點](https://docs.revrobotics.com/sparkmax/software-resources/spark-max-api-information#java-api)
``` java
package frc.robot;
import com.ctre.phoenix.motorcontrol.ControlMode;
import com.ctre.phoenix.motorcontrol.can.TalonSRX;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Spark;
import edu.wpi.first.wpilibj.TimedRobot;
import edu.wpi.first.wpilibj.drive.RobotDriveBase.MotorType;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
public class Robot<CANSparkMax> 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<>();
private static final int deviceID = 8;
private CANSparkMax m_motor;
@Override
public void robotInit() {
m_motor = new CANSparkMax(deviceID, MotorType.kBrushless);
}
@Override
public void robotPeriodic() {
}
@Override
public void autonomousInit() {
m_autoSelected = m_chooser.getSelected();
// m_autoSelected = SmartDashboard.getString("Auto Selector", kDefaultAuto);
System.out.println("Auto selected: " + m_autoSelected);
}
@Override
public void autonomousPeriodic() {
}
@Override
public void teleopInit() {
}
@Override
public void teleopPeriodic() {
if(js1.getRawButton(1)){
motor.set(ControlMode.PercentOutput, -0.5);
}
if(js1.getRawButton(2)){
motor.set(ControlMode.PercentOutput, 0.5);
}
}
@Override
public void disabledInit() {
}
@Override
public void disabledPeriodic() {
}
@Override
public void testInit() {
}
@Override
public void testPeriodic() {
}
}
```
### 魏仁祥
今天在協助劉柏蔚和 Matt 處理 neo 馬達的部分,他們有找到了 neo 的 libaray 要去下載,因為時間上關係沒有完成。其他人也嘗試了上次比賽機器人的炮台和底盤,基本上都也有完成了,後面因為電池沒電所以沒有在試。
剛剛找到中科一個月前做的教程:https://www.youtube.com/c/FRC7636Robomania/featured
### 陳伯豪
這個禮拜因為剛換電腦,因此我就將FRC官方影片上有關PID的東西整理起來
連結:[PID 控制](https://hackmd.io/@yqvHTthmTYehjxz4k9Hqrw/rk1l-b0GF)
### Matt
The primary focus of this week was to fix the connectivity issue with the new motors provided. We were having trouble connecting to RoboRio the previous week and after solving that issue, we moved on to the Neo motor. After scouraging Github for possible references, we came across the official documentation for the neo motor and was able to make it work. 劉柏蔚 was able to use the reference code to make the motor move accordingly.
### 謝亞諺
這2個禮拜因為Phoenix Tuner一直連不上機器人,搞得大家都在查有關於Phoenix Tuner 的Gerneral 問題,最後學長找到一條USB線,直接接上ROBOT RIO,以目前狀況來講是只有這樣才可連接的上,Phoenix Tuner上顯示的資料有馬達的ID,也可以測試哪個馬達及正反轉,學長教我們如何看這些資料,也讓我們複習之前的底盤控制,這禮拜讓我們自己思考該如何寫砲台馬達的程式,目前是只能讓它全部一啟動
### 林俊彥
今天的課題是用joystick控制機器人的投射還有把球預備到投射區 在多次的努力下有成功(getRawButton) 之後設定馬達的動力 一開始設置0.8甚至到1.0學長說太強可以先降低到0.5最後發現是因為電壓過低 導致他的轉速超級慢 力氣不夠不能把球帶上來 還有有follow a(b)讓原本兩個分開動的馬達能夠同時運作