-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tread.java
76 lines (56 loc) · 1.48 KB
/
Tread.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.hardware.DcMotor;
public class Tread {
private DcMotor front;
private DcMotor back;
// encoder
private int direction = 1;
public Tread(DcMotor front, DcMotor back) {
this.front = front;
this.back = back;
}
public Tread(DcMotor front, DcMotor back, boolean reverse) {
this.front = front;
this.back = back;
this.direction = reverse ? -1 : 1;
}
/**
Moves the tread to the desired position using the encoder(s)
@param distance the target distance
*/
public void Move(int distance) {
this.Init()
this.front.setTargetPosition(this.direction * distance);
this.back.setTargetPosition(this.direction * distance);
}
/**
Reset and re-initialize encoders for accurate distance read
Should be done before each movement
*/
private void Init() {
this.Reset();
this.SetPower(0);
this.SetToRunPosition();
}
/**
Reset all encoders
*/
private void Reset() {
this.front.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
this.back.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
}
/**
Set all motors in tread to given power
*/
public void SetPower(double power) {
this.front.setPower(power);
this.back.setPower(power);
}
/**
Set motors to run to encoder position
*/
private void SetToRunPosition() {
this.front.setMode(DcMotor.RunMode.RUN_TO_POSITION);
this.back.setMode(DcMotor.RunMode.RUN_TO_POSITION);
}
}