Various utilities for use with ftc_app
First add the library to your list of dependencies. Here's an example
TeamCode/build.gradle file:
apply from: '../build.common.gradle'
android {
buildToolsVersion '25.0.0'
}
dependencies {
repositories { mavenCentral() }
compile 'com.suitbots:libsb:0.0.2'
}
The dependencies stanza is the important addition.
The controller class wraps the usual Gamepad object and keeps track of
button state for you such that you can tell the first time each button is
pressed. Here's an example that lets you press X to reverse the drive
direction of your robot.
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
import com.suitbots.util.Controller;
public class ReversibleDrive extends OpMode {
private Controller c1;
private boolean forward;
private DcMotor left, right;
@Override
public void init() {
c1 = new Controller(gamepad1);
left = hardwareMap.dcMotor.get("leftMotor");
right = hardwareMap.dcMotor.get("rightMotor");
right.setDirection(DcMotorSimple.Direction.REVERSE);
}
@Override
public void loop() {
c1.update();
telemetry.addData("Direction (x)", forward ? "Forward" : "Reverse");
telemetry.update();
if (c1.XOnce()) {
forward = ! forward;
}
left.setPower(c1.left_stick_y * (forward ? 1.0 : -1.0));
right.setPower(c1.right_stick_y * (forward ? 1.0 : -1.0));
}
}
This class wraps the FTC Servo class for use with Rev's Blinken lights controller. Pass its constructor a servo and then call its named methods for blinking goodness.
import com.suitbots.util.Blinken;
[...]
@Override public void runOpMode() {
final Blinken blinken = new Blinken(hardwareMap.servo.get("led"));
waitForStart();
while(opModeIsActive()) {
if (gamepad1.a) {
blinken.enactSolidRed();
} else {
blinken.off(); // or blinken.enactSolidBlack()
}
}
}