Arcade Stili TeleOp - OnBot Java
Robotumuzu gamepad girişlerine tepki verecek şekilde programlama zamanı geldi! Başlangıç olarak tahrik sistemini kontrol etmeye odaklanacağız.
Başlangıçta 2. Bölüm'ün başına düşünün. Robotumuzu Arcade Stili TeleOp kullanarak programlayacağız. Bu, ileri ve geri hareketlerin joystick'in y ekseniyle, dönüşlerin ise x ekseniyle kontrol edileceği anlamına gelir.
Bu bölümde, programımızda değişkenlerin kullanımını tanıtacağız. Bu, gamepad girişlerimize dayalı olarak motorların alması gereken gücü belirleyecek hesaplamaları programımıza eklememizi sağlayacak. Motorlara ne kadar güç verileceği, robotun nasıl hareket edeceğini değiştirir, bu yüzden kodumuzu oluştururken bu ilişkiyi gözden geçirmek de önemlidir!
Aşağıda final programımızın kısa bir görünümü bulunmaktadır:
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.hardware.Blinker;
import com.qualcomm.robotcore.hardware.Servo;
import com.qualcomm.robotcore.hardware.TouchSensor;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.eventloop.opmode.Disabled;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
import com.qualcomm.robotcore.util.ElapsedTime;
@TeleOp
public class HelloRobot_TeleOp extends LinearOpMode {
private Blinker control_Hub;
private DcMotor arm;
private DcMotor leftmotor;
private DcMotor rightmotor;
private DcMotor test_motor;
private Servo test_servo;
private TouchSensor test_touch;
@Override
public void runOpMode() {
control_Hub = hardwareMap.get(Blinker.class, "Control Hub");
arm = hardwareMap.get(DcMotor.class, "arm");
leftmotor = hardwareMap.get(DcMotor.class, "leftmotor");
rightmotor = hardwareMap.get(DcMotor.class, "rightmotor");
test_motor = hardwareMap.get(DcMotor.class, "test_motor");
test_servo = hardwareMap.get(Servo.class, "test_servo");
test_touch = hardwareMap.get(TouchSensor.class, "test_touch");
rightmotor.setDirection(DcMotorSimple.Direction.REVERSE);
double x;
double y;
telemetry.addData("Status", "Initialized");
telemetry.update();
// Oyun başlatılana kadar bekle (sürücü PLAY'e basar)
waitForStart();
// Oyun sonuna kadar devam et (sürücü STOP'a basana kadar)
while (opModeIsActive()) {
// Tahrik Sistemi Kontrolü
x = gamepad1.right_stick_x;
y = -gamepad1.right_stick_y;
rightmotor.setPower(y - x);
leftmotor.setPower(y + x);
telemetry.addData("Status", "Running");
telemetry.update();
}
}
}Last updated