Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
9f11128
FtcRobotController v10.1
CalKestis Nov 2, 2024
ee16f8e
Merge pull request #1250 from FIRST-Tech-Challenge/20241102-092223-re…
cmacfarl Nov 6, 2024
5f50780
FtcRobotController v10.2
CalKestis Jan 22, 2025
28d5246
Merge pull request #1416 from FIRST-Tech-Challenge/20250121-174034-re…
CalKestis Jan 22, 2025
a5d843e
FtcRobotController v10.3
CalKestis Jun 25, 2025
1271986
Merge pull request #1503 from FIRST-Tech-Challenge/20250625-090416-re…
CalKestis Jun 25, 2025
d600a76
FtcRobotController v11.0
CalKestis Aug 27, 2025
40bc118
Merge pull request #1545 from FIRST-Tech-Challenge/20250827-105138-re…
CalKestis Sep 6, 2025
d23ee61
Updated readme
mahmohfayed Sep 25, 2025
7a1afb3
Merge pull request #1 from mahmohfayed/feature/update-readme
mahmohfayed Sep 25, 2025
99cee9c
Manually instailed pedro pathing files and test opmode
zainelhady Sep 28, 2025
2ba0183
Added new opmode
mahmohfayed Sep 28, 2025
d4af7b9
Merge pull request #2 from mahmohfayed/demo_branch
mahmohfayed Sep 28, 2025
5c61af5
first working Auto
zainelhady Sep 28, 2025
dfc42bb
Added new op mode to test square path
zainelhady Sep 28, 2025
2c36dd0
Merge pull request #3 from mahmohfayed/pedro_pathing
ex-Potential Sep 28, 2025
004b1e3
Pedro auton with apriltags
NoT-MaRYaM Oct 12, 2025
4697abb
April-tag
NoT-MaRYaM Oct 12, 2025
ea11cc6
Create AprilTagBasic2.java
NoT-MaRYaM Oct 19, 2025
2c6e854
Created simple path to score by pushing balls to the goal line
zainelhady Oct 19, 2025
147f174
Update AprilTagBasic2.java
NoT-MaRYaM Oct 19, 2025
4381e82
Merge pull request #4 from mahmohfayed/wall_scoring
mahmohfayed Oct 19, 2025
d892b98
Merge branch 'master' of https://github.com/mahmohfayed/ftc_27377_decode
NoT-MaRYaM Oct 19, 2025
4120b32
Merge branch 'master' into april-tag-auton
NoT-MaRYaM Oct 19, 2025
447cb83
Merge pull request #5 from mahmohfayed/april-tag-auton
mahmohfayed Oct 19, 2025
70d6cdb
Camera, intake, and apriltag pattern
NoT-MaRYaM Nov 9, 2025
4cff63a
Update Constants.java
NoT-MaRYaM Nov 9, 2025
00b5fdf
Mecanum TeleOp
NoT-MaRYaM Nov 15, 2025
f7c5d74
loader class
Jasrah212 Nov 15, 2025
a9631b9
created shooter subsystem
Jasrah212 Nov 15, 2025
3d02ec4
Loader and Shooter subsystem
NoT-MaRYaM Nov 15, 2025
91cf85a
Created robot class
NoT-MaRYaM Nov 15, 2025
963b55e
robot class
Jasrah212 Nov 16, 2025
5d65fb4
Merge branch 'april-tags-auton' of https://github.com/Jasrah212/ftc_2…
Jasrah212 Nov 16, 2025
ca86384
ggwa3egf
Jasrah212 Nov 16, 2025
30a730f
zains changes
zainelhady Nov 16, 2025
9546930
name change
NoT-MaRYaM Nov 16, 2025
8db2fd3
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
zainelhady Nov 16, 2025
1d70419
shooter
Jasrah212 Nov 16, 2025
e7325d5
f q3r
NoT-MaRYaM Nov 16, 2025
5f6ec82
hjhv
zainelhady Nov 16, 2025
838708e
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
NoT-MaRYaM Nov 16, 2025
d9e2a69
imporant
NoT-MaRYaM Nov 18, 2025
b891730
stuff
NoT-MaRYaM Nov 19, 2025
461c8dd
imporant
NoT-MaRYaM Nov 22, 2025
c094869
work
zainelhady Nov 22, 2025
556d911
stuff
zainelhady Nov 22, 2025
a9ecd0e
11/30
NoT-MaRYaM Nov 30, 2025
428afb8
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
NoT-MaRYaM Nov 30, 2025
3dfc186
holy code
zainelhady Nov 30, 2025
5e21161
Merge remote-tracking branch 'origin/april-tags-auton' into april-tag…
zainelhady Nov 30, 2025
6be03f2
stuuf
NoT-MaRYaM Dec 17, 2025
276b168
Update ExampleAprilTagUsage.java
NoT-MaRYaM Dec 21, 2025
81b9446
all of auto code with some changes to teleop and subsystems
zainelhady Dec 21, 2025
7ae3209
Merge remote-tracking branch 'origin/april-tags-auton' into april-tag…
zainelhady Dec 21, 2025
92753c8
all of auto code with some changes to teleop and subsystems
zainelhady Dec 21, 2025
402d193
deleted
NoT-MaRYaM Dec 21, 2025
1f0bb07
Leavebase autoning
NoT-MaRYaM Dec 21, 2025
79a7b30
Servos changes
NoT-MaRYaM Dec 29, 2025
a8bb1b5
limlight
NoT-MaRYaM Dec 30, 2025
95f9356
all of auto code with some changes to teleop and subsystems
zainelhady Dec 21, 2025
5d453a5
all of auto code with some changes to teleop and subsystems
zainelhady Dec 21, 2025
e5bf425
deleted
NoT-MaRYaM Dec 21, 2025
c7b3065
Leavebase autoning
NoT-MaRYaM Dec 21, 2025
0e6c879
Servos changes
NoT-MaRYaM Dec 29, 2025
902f791
csevwqvcwq
NoT-MaRYaM Dec 31, 2025
ba2cee5
save
NoT-MaRYaM Jan 2, 2026
0247241
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
NoT-MaRYaM Jan 2, 2026
14c41f5
all of auto code with some changes to teleop and subsystems
zainelhady Dec 21, 2025
29fbca4
deleted
NoT-MaRYaM Dec 21, 2025
1505da9
Leavebase autoning
NoT-MaRYaM Dec 21, 2025
b19ae24
Servos changes
NoT-MaRYaM Dec 29, 2025
4edde43
Pids and Turret code and Auto code
zainelhady Jan 3, 2026
aedca72
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
NoT-MaRYaM Jan 4, 2026
ec5523d
Limelight changes
Jasrah212 Jan 4, 2026
7a8a62a
cleaned
NoT-MaRYaM Jan 4, 2026
56eee76
AutoAlighn
Jasrah212 Jan 4, 2026
514431c
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/testing/…
Jasrah212 Jan 4, 2026
b7bf019
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Subsyste…
Jasrah212 Jan 4, 2026
7e04b81
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Subsyste…
Jasrah212 Jan 4, 2026
bfea3d3
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Subsyste…
Jasrah212 Jan 4, 2026
eb5c3f9
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/testing/…
Jasrah212 Jan 4, 2026
0e8e27e
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Subsyste…
Jasrah212 Jan 4, 2026
1bfed41
Delete TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Subsyste…
Jasrah212 Jan 4, 2026
6e8205d
Merge pull request #8 from Jasrah212/auto_alignment
NoT-MaRYaM Jan 4, 2026
9155150
update
NoT-MaRYaM Jan 5, 2026
39ae9ef
s
NoT-MaRYaM Jan 5, 2026
eeef0b2
Updated
NoT-MaRYaM Jan 5, 2026
6a9bcc7
Create ExampleAuto.java
ex-Potential Jan 9, 2026
dbfddde
56
ex-Potential Jan 9, 2026
632d777
drsytdyu
ex-Potential Jan 9, 2026
4e25669
Update TeleOp1.java
NoT-MaRYaM Jan 9, 2026
686aaa5
67
ex-Potential Jan 10, 2026
be9f659
Update TeleOp1.java
NoT-MaRYaM Jan 10, 2026
548ff1d
drsytdyu
ex-Potential Jan 10, 2026
322450d
Update VelocityTeleOp.java
ex-Potential Jan 11, 2026
b9a7996
hjhvhk
NoT-MaRYaM Jan 14, 2026
b3ecf66
a
zainelhady Jan 15, 2026
8a1671b
Merge remote-tracking branch 'origin/Auto' into Auto
zainelhady Jan 15, 2026
cf888d2
a
zainelhady Jan 17, 2026
8e5eb36
Servo code
NoT-MaRYaM Jan 17, 2026
7e6f714
servo teleop code
NoT-MaRYaM Jan 17, 2026
c7549ca
imporant servo position changes
NoT-MaRYaM Jan 17, 2026
58c8277
a
zainelhady Jan 17, 2026
e47e23a
Merge remote-tracking branch 'origin/Auto' into Auto
zainelhady Jan 17, 2026
a2ed662
Merge branch 'april-tags-auton' of https://github.com/mahmohfayed/ftc…
ex-Potential Jan 17, 2026
a0cbf5c
a
zainelhady Jan 18, 2026
83473a6
a
zainelhady Jan 18, 2026
88b364b
a
zainelhady Jan 18, 2026
e1de88c
Merge branch 'april-tags-auton' into Auto
asemothman Jan 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion FtcRobotController/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ android {
buildConfigField "String", "APP_BUILD_TIME", '"' + (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.ROOT).format(new Date())) + '"'
}

compileSdkVersion 29
buildFeatures {
buildConfig = true
}
compileSdk 34


compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand Down
4 changes: 2 additions & 2 deletions FtcRobotController/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="56"
android:versionName="10.1">
android:versionCode="60"
android:versionName="11.0">

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,20 +69,20 @@ public class BasicOmniOpMode_Linear extends LinearOpMode {

// Declare OpMode members for each of the 4 motors.
private ElapsedTime runtime = new ElapsedTime();
private DcMotor leftFrontDrive = null;
private DcMotor leftBackDrive = null;
private DcMotor rightFrontDrive = null;
private DcMotor rightBackDrive = null;
private DcMotor frontLeftDrive = null;
private DcMotor backLeftDrive = null;
private DcMotor frontRightDrive = null;
private DcMotor backRightDrive = null;

@Override
public void runOpMode() {

// Initialize the hardware variables. Note that the strings used here must correspond
// to the names assigned during the robot configuration step on the DS or RC devices.
leftFrontDrive = hardwareMap.get(DcMotor.class, "left_front_drive");
leftBackDrive = hardwareMap.get(DcMotor.class, "left_back_drive");
rightFrontDrive = hardwareMap.get(DcMotor.class, "right_front_drive");
rightBackDrive = hardwareMap.get(DcMotor.class, "right_back_drive");
frontLeftDrive = hardwareMap.get(DcMotor.class, "front_left_drive");
backLeftDrive = hardwareMap.get(DcMotor.class, "back_left_drive");
frontRightDrive = hardwareMap.get(DcMotor.class, "front_right_drive");
backRightDrive = hardwareMap.get(DcMotor.class, "back_right_drive");

// ########################################################################################
// !!! IMPORTANT Drive Information. Test your motor directions. !!!!!
Expand All @@ -94,10 +94,10 @@ public void runOpMode() {
// when you first test your robot, push the left joystick forward and observe the direction the wheels turn.
// Reverse the direction (flip FORWARD <-> REVERSE ) of any wheel that runs backward
// Keep testing until ALL the wheels move the robot forward when you push the left joystick forward.
leftFrontDrive.setDirection(DcMotor.Direction.REVERSE);
leftBackDrive.setDirection(DcMotor.Direction.REVERSE);
rightFrontDrive.setDirection(DcMotor.Direction.FORWARD);
rightBackDrive.setDirection(DcMotor.Direction.FORWARD);
frontLeftDrive.setDirection(DcMotor.Direction.REVERSE);
backLeftDrive.setDirection(DcMotor.Direction.REVERSE);
frontRightDrive.setDirection(DcMotor.Direction.FORWARD);
backRightDrive.setDirection(DcMotor.Direction.FORWARD);

// Wait for the game to start (driver presses START)
telemetry.addData("Status", "Initialized");
Expand All @@ -117,22 +117,22 @@ public void runOpMode() {

// Combine the joystick requests for each axis-motion to determine each wheel's power.
// Set up a variable for each drive wheel to save the power level for telemetry.
double leftFrontPower = axial + lateral + yaw;
double rightFrontPower = axial - lateral - yaw;
double leftBackPower = axial - lateral + yaw;
double rightBackPower = axial + lateral - yaw;
double frontLeftPower = axial + lateral + yaw;
double frontRightPower = axial - lateral - yaw;
double backLeftPower = axial - lateral + yaw;
double backRightPower = axial + lateral - yaw;

// Normalize the values so no wheel power exceeds 100%
// This ensures that the robot maintains the desired motion.
max = Math.max(Math.abs(leftFrontPower), Math.abs(rightFrontPower));
max = Math.max(max, Math.abs(leftBackPower));
max = Math.max(max, Math.abs(rightBackPower));
max = Math.max(Math.abs(frontLeftPower), Math.abs(frontRightPower));
max = Math.max(max, Math.abs(backLeftPower));
max = Math.max(max, Math.abs(backRightPower));

if (max > 1.0) {
leftFrontPower /= max;
rightFrontPower /= max;
leftBackPower /= max;
rightBackPower /= max;
frontLeftPower /= max;
frontRightPower /= max;
backLeftPower /= max;
backRightPower /= max;
}

// This is test code:
Expand All @@ -146,22 +146,22 @@ public void runOpMode() {
// Once the correct motors move in the correct direction re-comment this code.

/*
leftFrontPower = gamepad1.x ? 1.0 : 0.0; // X gamepad
leftBackPower = gamepad1.a ? 1.0 : 0.0; // A gamepad
rightFrontPower = gamepad1.y ? 1.0 : 0.0; // Y gamepad
rightBackPower = gamepad1.b ? 1.0 : 0.0; // B gamepad
frontLeftPower = gamepad1.x ? 1.0 : 0.0; // X gamepad
backLeftPower = gamepad1.a ? 1.0 : 0.0; // A gamepad
frontRightPower = gamepad1.y ? 1.0 : 0.0; // Y gamepad
backRightPower = gamepad1.b ? 1.0 : 0.0; // B gamepad
*/

// Send calculated power to wheels
leftFrontDrive.setPower(leftFrontPower);
rightFrontDrive.setPower(rightFrontPower);
leftBackDrive.setPower(leftBackPower);
rightBackDrive.setPower(rightBackPower);
frontLeftDrive.setPower(frontLeftPower);
frontRightDrive.setPower(frontRightPower);
backLeftDrive.setPower(backLeftPower);
backRightDrive.setPower(backRightPower);

// Show the elapsed game time and wheel power.
telemetry.addData("Status", "Run Time: " + runtime.toString());
telemetry.addData("Front left/Right", "%4.2f, %4.2f", leftFrontPower, rightFrontPower);
telemetry.addData("Back left/Right", "%4.2f, %4.2f", leftBackPower, rightBackPower);
telemetry.addData("Front left/Right", "%4.2f, %4.2f", frontLeftPower, frontRightPower);
telemetry.addData("Back left/Right", "%4.2f, %4.2f", backLeftPower, backRightPower);
telemetry.update();
}
}}
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,17 @@ private void telemetryAprilTag() {
for (AprilTagDetection detection : currentDetections) {
if (detection.metadata != null) {
telemetry.addLine(String.format("\n==== (ID %d) %s", detection.id, detection.metadata.name));
telemetry.addLine(String.format("XYZ %6.1f %6.1f %6.1f (inch)",
detection.robotPose.getPosition().x,
detection.robotPose.getPosition().y,
detection.robotPose.getPosition().z));
telemetry.addLine(String.format("PRY %6.1f %6.1f %6.1f (deg)",
detection.robotPose.getOrientation().getPitch(AngleUnit.DEGREES),
detection.robotPose.getOrientation().getRoll(AngleUnit.DEGREES),
detection.robotPose.getOrientation().getYaw(AngleUnit.DEGREES)));
// Only use tags that don't have Obelisk in them
if (!detection.metadata.name.contains("Obelisk")) {
telemetry.addLine(String.format("XYZ %6.1f %6.1f %6.1f (inch)",
detection.robotPose.getPosition().x,
detection.robotPose.getPosition().y,
detection.robotPose.getPosition().z));
telemetry.addLine(String.format("PRY %6.1f %6.1f %6.1f (deg)",
detection.robotPose.getOrientation().getPitch(AngleUnit.DEGREES),
detection.robotPose.getOrientation().getRoll(AngleUnit.DEGREES),
detection.robotPose.getOrientation().getYaw(AngleUnit.DEGREES)));
}
} else {
telemetry.addLine(String.format("\n==== (ID %d) Unknown", detection.id));
telemetry.addLine(String.format("Center %6.0f %6.0f (pixels)", detection.center.x, detection.center.y));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/* Copyright (c) 2025 FIRST. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted (subject to the limitations in the disclaimer below) provided that
* the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* Neither the name of FIRST nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS
* LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

package org.firstinspires.ftc.robotcontroller.external.samples;

import com.qualcomm.robotcore.eventloop.opmode.Disabled;
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;

/*
* Demonstrates how to use an OpMode to store data in the blackboard and retrieve it.
* This is useful for storing information in Auto and then retrieving it in your TeleOp.
*
* Be aware that this is NOT saved across power reboots or downloads or robot resets.
*
* You also need to make sure that both the storing and retrieving are done using the same
* type. For example, storing a Double in the blackboard and retrieving it as an Integer
* will fail when you typecast it.
*
* The blackboard is a standard hashmap so you can use methods like:
* put, get, containsKey, remove, etc.
*/
@TeleOp(name = "Concept: Blackboard", group = "Concept")
@Disabled
public class ConceptBlackboard extends OpMode {
// We use constants here so we won't have the problem of typos in different places when we
// meant to refer to the same thing.
public static final String TIMES_STARTED_KEY = "Times started";
public static final String ALLIANCE_KEY = "Alliance";

/**
* This method will be called once, when the INIT button is pressed.
*/
@Override
public void init() {
// This gets us what is in the blackboard or the default if it isn't in there.
Object timesStarted = blackboard.getOrDefault(TIMES_STARTED_KEY, 0);
blackboard.put(TIMES_STARTED_KEY, (int) timesStarted + 1);

telemetry.addData("OpMode started times", blackboard.get(TIMES_STARTED_KEY));
}

/**
* This method will be called repeatedly during the period between when
* the START button is pressed and when the OpMode is stopped.
* <p>
* If the left bumper is pressed it will store the value "RED" in the blackboard for alliance.
* If the right bumper is pressed it will store the value "BLUE" in the blackboard for alliance.
* <p>
* You'll notice that if you quit the OpMode and come back in, the value will persist.
*/
@Override
public void loop() {
if (gamepad1.left_bumper) {
blackboard.put(ALLIANCE_KEY, "RED");
} else if (gamepad1.right_bumper) {
blackboard.put(ALLIANCE_KEY, "BLUE");
}
telemetry.addData("Alliance", blackboard.get(ALLIANCE_KEY));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/*
Copyright (c) 2024 Miriam Sinton-Remes

All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted (subject to the limitations in the disclaimer below) provided that
the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.

Neither the name of FIRST nor the names of its contributors may be used to
endorse or promote products derived from this software without specific prior
written permission.

NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS
LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

package org.firstinspires.ftc.robotcontroller.external.samples;

import com.qualcomm.robotcore.eventloop.opmode.Disabled;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;

/*
* This OpMode illustrates using edge detection on a gamepad.
*
* Simply checking the state of a gamepad button each time could result in triggering an effect
* multiple times. Edge detection ensures that you only detect one button press, regardless of how
* long the button is held.
*
* There are two main types of edge detection. Rising edge detection will trigger when a button is
* first pressed. Falling edge detection will trigger when the button is released.
*
* Use Android Studio to Copy this Class, and Paste it into your team's code folder with a new name.
* Remove or comment out the @Disabled line to add this OpMode to the Driver Station OpMode list.
*/

@Disabled
@TeleOp(name="Concept: Gamepad Edge Detection", group ="Concept")
public class ConceptGamepadEdgeDetection extends LinearOpMode {

@Override
public void runOpMode() {
// Wait for the DS start button to be pressed
waitForStart();

while (opModeIsActive()) {
// Update the telemetry
telemetryButtonData();

// Wait 2 seconds before doing another check
sleep(2000);
}
}

public void telemetryButtonData() {
// Add the status of the Gamepad 1 Left Bumper
telemetry.addData("Gamepad 1 Left Bumper Pressed", gamepad1.leftBumperWasPressed());
telemetry.addData("Gamepad 1 Left Bumper Released", gamepad1.leftBumperWasReleased());
telemetry.addData("Gamepad 1 Left Bumper Status", gamepad1.left_bumper);

// Add an empty line to separate the buttons in telemetry
telemetry.addLine();

// Add the status of the Gamepad 1 Right Bumper
telemetry.addData("Gamepad 1 Right Bumper Pressed", gamepad1.rightBumperWasPressed());
telemetry.addData("Gamepad 1 Right Bumper Released", gamepad1.rightBumperWasReleased());
telemetry.addData("Gamepad 1 Right Bumper Status", gamepad1.right_bumper);

// Add a note that the telemetry is only updated every 2 seconds
telemetry.addLine("\nTelemetry is updated every 2 seconds.");

// Update the telemetry on the DS screen
telemetry.update();
}
}
Loading