Dokunmatik Sensörlerin Programlanması

Bu bölüm, REV Dokunmatik Sensörü veya Limit Anahtarı kullanımına yöneliktir. Diğer 3. taraf dokunmatik sensörleri kullanırken gereksinimler farklılık gösterebilir.

REV Dokunmatik Sensörü, dijital port 1, 3, 5 veya 7'ye yapılandırılmalıdır.


Dokunmatik Sensör Temelleri

Aşağıdaki örnek kod dosya adı: HelloRobot_TouchSensor

Bir dokunmatik sensörün nasıl çalıştığını anlamak için temel bileşenlerden başlayalım!

Dokunmatik sensör tarafından toplanan bilgiler iki duruma ayrılır: doğru veya yanlış. Bu bilgiler, bir if/else koşullu ifadesi ile kullanılmak için mükemmeldir.

Aşağıdaki kod, dokunmatik sensörden gelen true/false durumunu toplar ve bu durumu bir if/else koşulu olarak kullanır:

if (test_touch.isPressed()){
    // Dokunmatik sensör aktif
} else {
    // Dokunmatik sensör pasif
}

Bu kodu şu şekilde okuyabiliriz: “Eğer dokunmatik sensör aktifse ____ yap, değilse _____ yap.”

  • Dokunmatik sensör aktif = true

  • Dokunmatik sensör pasif = false


Telemetry Eklemek

Robotun o anda ne yaptığını Driver Hub ekranında görebilmek her zaman faydalıdır. Program çalışırken bazı telemetry verilerini paylaşmasını talep edebiliriz.

Aşağıdaki kodda, dokunmatik sensörün durumu için bir telemetry.addData satırı eklenmiştir:

if (test_touch.isPressed()){
    // Dokunmatik sensör aktif
    telemetry.addData("Touch Sensor", "Is Pressed");
} else {
    // Dokunmatik sensör pasif
    telemetry.addData("Touch Sensor", "Is Not Pressed");
}

Ekranda görüntülenen mavi yazı, tırnak içinde belirttiğimiz metindir. Örneğin, buton basıldığında robotumuzun “Hello World!” demesini sağlayabiliriz.


Tam Program

Programı tamamlamak için döngünün her çalışmasında telemetry'nin güncellenmesini sağlamamız gerekir. Bunun için telemetry.update(); ekleyerek programı sonlandırıyoruz:

// Oyun başlatılana kadar bekler (sürücü PLAY tuşuna basar)
waitForStart();

// Maç sona erene kadar çalışır (sürücü STOP tuşuna basar)
while (opModeIsActive()) {

    if (test_touch.isPressed()){
        // Dokunmatik sensör aktif
        telemetry.addData("Touch Sensor", "Is Pressed");
    } else {
        // Dokunmatik sensör pasif
        telemetry.addData("Touch Sensor", "Is Not Pressed");
    }
    telemetry.update();
}

Dokunmatik Sensörün Limit Anahtarı Olarak Kullanılması

Dokunmatik sensörün en yaygın kullanımlarından biri, limit anahtarı olarak görev yapmasıdır. Bu, bir mekanizmanın (örneğin bir kolun) sınırına ulaştığını robotun algılamasını sağlar.

Aşağıdaki kod, motorun dokunmatik sensör basılana kadar hareket etmesini sağlar:

if (test_touch.isPressed()){
    // Dokunmatik sensör aktif
    test_motor.setPower(0);
    telemetry.addData("Touch Sensor", "Is Pressed");
} else {
    // Dokunmatik sensör pasif
    test_motor.setPower(0.3);
    telemetry.addData("Touch Sensor", "Is Not Pressed");
}

Test edin! Sensör tetiklendiğinde ne olduğunu gözlemleyin.


Tersine Çevirme

Yukarıdaki örnekte, if/else ifadesi önce sensörün aktif olup olmadığını kontrol eder. Bu yapı, şu şekilde okunabilir: "Eğer dokunmatik sensör aktifse motor gücünü 0 yap, değilse 0.3 yap."

Bu ifadeyi tersine çevirmek için ! operatörünü kullanabiliriz:

if (!test_touch.isPressed()){
    // Dokunmatik sensör pasif
    test_motor.setPower(0.3);
    telemetry.addData("Touch Sensor", "Is Not Pressed");
} else {
    // Dokunmatik sensör aktif
    test_motor.setPower(0);
    telemetry.addData("Touch Sensor", "Is Pressed");
}

Bu kod, öncelikle dokunmatik sensörün pasif olup olmadığını kontrol eder. ! operatörü, verilen durumun tersini kontrol etmek için kullanılır.

Deneyin ve sonuçları gözlemleyin!

Last updated