Drivetrain Motorlarının Programlanması

Bölümde, bir motora güç vererek veya bir joystick'ten giriş alarak nasıl kontrol edileceğini öğrendik. Bir tahrik sistemini kontrol etmek için, robotun hareket etmesine yardımcı olmak amacıyla iki motoru eşzamanlı olarak kontrol etmemiz gerekir.

Çift bloğa erişmek için aktüatörler açılır menüsünü seçmeniz gerekecektir:

Aktüatörler menüsünde DcMotor'u görmüyor musunuz? Başlamadan önce yapılandırmanızın düzgün bir şekilde ayarlandığından ve etkinleştirildiğinden emin olun!

Drivetrain Motorlarının Programlanması

Adım 1: Temiz Başlangıç Bir önceki bölümde döngüye eklediğimiz tüm kodları silin. Alternatif olarak, yeni bir program oluşturabilirsiniz.

Aynı türden birden fazla değişken olduğunda (örneğin birden fazla DcMotor), değişkene özgü bloklar alfabetik sıraya göre varsayılan bir değişken seçecektir. Bu örnek için, OpMode DcMotor blokları varsayılan olarak arm değişkenine geçecektir.

Blok üzerindeki değişken açılır menüsünü kullanarak koldan sağ motora geçin.

Hızlı Kontrol: Kodu çalıştırmadan önce şunu düşünün:

  • Program etkinleştirildiğinde robotunuzun ne yapmasını bekliyorsunuz?

Şimdi OpMode'u kaydedin ve programınızı çalıştırın!

Robot beklediğiniz gibi hareket etti mi?

Robotunuzun düz bir çizgide ileri veya geri hareket etmesini beklemiş olabilirsiniz. Bunun yerine, robotunuz muhtemelen bir daire içinde dönmüştür.

Motorlar farklı hızlarda çalıştığında merkez pivot noktaları boyunca dönerler. Ancak motorların ikisi de burada 1'in kuvvetine ayarlanmıştır, peki başka ne sebep olabilir?

Motorların Aynalanması

DC motorlar, sağlanan akım akışına bağlı olarak iki farklı yönde dönebilir.

  • Pozitif güç değeri uygulandığında motorlar saat yönünde döner.

  • Negatif güç değeri uygulandığında motorlar saat yönünün tersine döner.

Sorun: Robotunuzun şu anda döndüğünü fark edebilirsiniz. Robotun fiziksel yapısına daha yakından bakalım:

Class Bot V2'nin yukarıdan aşağı görünümü

Robot Üstten Görünüm: Robotunuzdaki motorların tahrik sisteminin bir parçası olarak birbirine aynalı olduğunu göreceksiniz.

Motorların Yönü: Motorlar aynı yönde dönse bile (örneğin, saat yönü), birinin "saat yönü" diğerinin ters yönüdür.

Motorların ters yönde çalışmasını önlemek için iki çözüm yolu vardır:

  1. Gücü negatif bir değerle ayarlamak.

  2. Motorun yönünü başlangıçta ters çevirmek.

Adım 2: Motorun Yönünü Ters Çevirme

Robotumuzun dönen bir topaç olmaması için programımızı ayarlamanın birkaç yolu var. Örneğin, motorlarımızdan biri çağrıldığında gücün negatif bir değere ayarlandığından emin olabiliriz. Ya da başlatma sırasında motorumuzun yönünü basitçe tersine çevirebiliriz.

Eklemekprogramınıza, altındayorum bloğu. Hatırlarsanız, bu bölüme yerleştirilen bloklar Sürücü Hub'ındaki intilizal düğmesine basıldıktan SONRA, ancak oynat düğmesine tıklanmadan ÖNCE çalışacaktır.

Tam Kod:

@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");
    
    telemetry.addData("Status", "Initialized");
    telemetry.update();
    
    // Sağ motoru ters çevir
    rightmotor.setDirection(DcMotorSimple.Direction.REVERSE);
    
    // Oyun başlatıldığında bekle
    waitForStart();

    // Oyun sona erene kadar çalıştır
    while (opModeIsActive()) {
        rightmotor.setPower(1);
        leftmotor.setPower(1);
        telemetry.addData("Status", "Running");
        telemetry.update();
    }
}

Şimdi eklenen blokla birlikte sağ motor için yön bu program için her zaman tersine çevrilecektir. Güç değerlerimizin değiştirilmesine gerek yoktur.

Hadi deneyin!

Last updated