VEXcode EXP'de Özel Denetleyici Kodu

Denetleyiciyi kullanmak, bir görevi tamamlamak için robotunuzu sürmenizi ve hareket ettirmenizi kolaylaştırabilir. Ancak Drive programını kullanmanın sınırlamaları vardır ve robot yapınıza veya elinizdeki göreve bağlı olarak farklı kontroller isteyebilirsiniz. Denetleyiciyi kodlamak, Denetleyiciyi robotunuza ve elinizdeki göreve daha iyi uyacak şekilde optimize etmenize olanak tanır. Kontrol Cihazını VEXcode EXP'de kodlamanın birkaç yolu vardır. Her birinin avantajları ve sınırlamaları vardır ve bazı yöntemler, istenen sonuca bağlı olarak belirli durumlar için daha uygundur.

Bu makale VEXcode EXP'de Kontrol Cihazını özel olarak kodlamak için üç farklı seçenek konusunda size yol gösterecektir. Her yöntem, avantajları, sınırlamaları ve yöntem seçerken size rehberlik edecek örnek bir kullanım durumuyla birlikte açıklanacaktır. Bu makalenin amaçları doğrultusunda, gösterilen tüm kod örnekleri Clawbot için oluşturulmuştur. Ancak aynı kavramlar builds.vex.comadresinde bulunan diğer birçok yapıya ve özel yapılara da uygulanabilir.

Seçenek 1: Aygıt Yapılandırmasında Düğmeleri Atama

BaseBot veya Clawbot gibi standart bir yapı kullanıyorsanız ve hızlı bir şekilde çalışmaya başlamak istiyorsanız bu seçenek harikadır.

Bu seçenek, Cihaz Yapılandırmasında Denetleyici üzerindeki düğmelere motorlar, aktarma organları veya motor grupları atamanıza olanak tanır. Aygıt Yapılandırmasında Denetleyiciye düğmelerin nasıl atanacağı hakkında daha fazla bilgi için bu makaleyi görüntüleyin.

VEXcode EXP Aygıtları menüsü, Denetleyici seçenekleriyle birlikte gösteriliyor. Düğme kontrollerinin şeması, iki kumanda kolunun robotu tank sürüş konfigürasyonunda sürdüğünü göstermektedir. Yukarı ve Aşağı düğmeleri bir ArmMotorGrubu'nu, R ekseni düğmeleri ise bir PençeMotoru'nu kontrol eder.

Seçenek 1'in Özeti: Aygıt Yapılandırmasında Düğmelerin Atama

Avantajları

Sınırlamalar

Örnek Durum

  • Kodlama gerektirmeden hızlı kurulum
  • En basit yöntem
  • Kolayca ayarlanabilir
  • Düğmelere ayrı ayrı motorlar, standart aktarma organları ve motor grupları atayabilirsiniz
  • Düğme atamaları Denetleyicideki düğmelerin sayısıyla sınırlıdır
  • Aktarma organları 4 motoru aşamaz veya özelleştirilemez (yalnızca standart bir sürücü desteklenir; H sürücüsü, holonomik veya diğer özel aktarma organları desteklenmez)
  • BaseBot, Clawbot gibi standart bir yapıyı veya bu standart yapıların basit bir modifikasyonunu değiştirmek. Örneğin, bir motor grubu tarafından kontrol edilen, ön tarafa takılmış bir girişe sahip bir BaseBot.
  • Robotta hangi düğmelerin farklı davranışlara karşılık geldiğini çok fazla kodlamaya gerek kalmadan hızlı bir şekilde değiştirmek

Seçenek 2: Sonsuz Döngü Kullanma

Standart bir yapı yerine özel bir yapı kullanıyorsanız veya Denetleyicinizde daha fazla özelleştirmeye sahip olmak istiyorsanız, bu seçenek iyi bir seçenektir. Sonsuza kadar döngü kullanmak, Denetleyiciniz için özel kod oluşturmaya harika bir giriştir.

Bu seçenek, Denetleyicinin ve ilgili düğmelerin tüm koşullarını bir Sonsuz döngüye yerleştirir. Bu, özellikle özel yapım tasarımlarda daha fazla esneklik sağlar ancak aynı zamanda biraz kodlama deneyimi gerektirir. Ancak bu seçeneği kullanırken dikkat edilmesi gereken noktalardan biri projenizin uzunluğu ve karmaşıklığıdır. Ne kadar çok koşul eklenirse kod yığını o kadar uzun olabilir. Bu, birden fazla bloğun sırayla yürütülmesi gerektiği anlamına gelir ve çok fazla blok olduğunda bu, projenin yürütülmesini yavaşlatabilir. Projenin daha yavaş yürütülmesi, Denetleyici düğmelerine basılması ile robot davranışının görülmesi arasında bir gecikme yaratabilir.

Aşağıda gösterilen özel örnek, robotu yönlendirmek ve nesnelerle etkileşime geçmek amacıyla pençeyi ve kolu manipüle etmek için Forever döngüsünü özel tasarımlı bir robotla (özel aktarma organına sahip bir robot gibi) kullanmanın bir yoludur.

VEXcode EXP Çalışma Alanı Option 2 blok projesi açıldı. Projenin bir blok yığını ve yapılandırılmış cihazları var. Aygıtlar menüsü yan tarafa açılır ve şu aygıtları listeler: Port 3'te ArmMotor, Port 4'te ClawMotor, Denetleyici, Port 6'da LeftMotor ve Port 10'da RightMotor. Son olarak, denetleyici girdisini işlemek için blok yığını vardır. Yığın, Başlatıldığında, ArmMotor'un durmasını beklemeye ayarla ve ClawMotor'un durmasını beklemeye ayarla ifadelerini okur. Yığının geri kalanı Sonsuza Kadar döngüsünde yer alır. Sonsuza kadar yazar, SolMotor hızını Kontrolör 3 pozisyonunun %'sine ayarlar, SolMotor'u ileri döndürür, SağMotor hızını Kontrolör 2 pozisyonunun %'sine ayarlar ve SağMotor'u ileri döndürür. Daha sonra, eğer Controller Up tuşuna basılırsa ArmMotor yukarı doğru döndürülür, eğer Controller E Down tuşuna basılırsa ArmMotor aşağı doğru döndürülür, aksi takdirde ArmMotor durdurulur. Son olarak, eğer A Kontrolcüsü basılı ise ClawMotor'u açın, eğer B Kontrolcüsü basılı ise ClawMotor'u kapatın, eğer basılı değilse ClawMotor'u durdurun.

"Seçenek 2" VEXcode EXP proje dosyasını indirin >

Seçenek 2 Kodunun Açıklaması.

Kod Parçası

Açıklama

Option 2 VEXcode EXP projesindeki blok yığınının yakın çekimi. İki blok vurgulanmıştır ve yığının Sonsuza Kadar döngüsünün dışındadır, bunlar ArmMotor'un durdurulmasını bekleyecek şekilde ayarla ve ClawMotor'un durdurulmasını bekleyecek şekilde ayarla ifadelerini okur.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Denetleyicideki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

Option 2 VEXcode EXP projesindeki blok yığınının yakın çekimi. Yığının Sonsuza Kadar döngüsünün içinde dört blok vurgulanır. Sonsuza kadar okurlar, SolMotor hızını Kontrolör 3 pozisyonunun %'sine ayarlarlar, SolMotor'u ileri döndürürler, SağMotor hızını Kontrolör 2 pozisyonunun %'sine ayarlarlar ve SağMotor'u ileri döndürürler. EXP Kontrolcüsünün düğmeleri ve joystickleri etiketli şeması. Görünüm kontrol ünitesinin ön tarafındandır. Sol joystick'in eksenleri 3 ve 4 olarak etiketlenmiştir. Sol joystick'in orta tuşu L3 olarak etiketlenmiştir. Sol joystick'in altında bulunan iki yuvarlak düğme Yukarı ve Aşağı olarak etiketlenmiştir. Sağ joystick'in eksenleri 1 ve 2 olarak etiketlenmiştir. Sağ joystick'in orta tuşu R3 olarak etiketlenmiştir. Sağ joystick'in altında bulunan iki yuvarlak düğme A ve B olarak etiketlenmiştir.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Kumanda üzerindeki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

Denetleyicide hangi düğmelere basıldığını sürekli olarak kontrol etmek için bir Sonsuz döngü kullanılır.

[Motor hızını ayarla] blokları, motor hızını 2 ve 3 eksen boyunca geçerli Kontrolörün konumuna ayarlamak için kullanılır. Bu, bir arabayı sürüşe geçirmeye eşdeğerdir. Bu mutlaka arabayı hareket ettirmez, sadece ayarlar.

Her joystick ekseni -100 ila +100 arasında bir değer döndürür ve ortalandığında sıfır değeri döndürür. Bu, kumanda kolu eksenlerinin itildiğinde -%100 ila %100'e eşit olduğu anlamına gelir. Eksenler 100 veya -100'e doğru ne kadar ileri itilirse motor o kadar hızlı dönecektir.

Daha sonra [Spin] bloğu motoru gerçekten hareket ettirmek için kullanılır. Bu, yön belirlendikten sonra arabanın üzerine gaz basmaya eşdeğerdir. Bu, her motorun dört Kontrolör ekseninden biri tarafından kontrol edilmesine olanak tanır.

Option 2 VEXcode EXP projesindeki blok yığınının yakın çekimi. Yığının Sonsuza Kadar döngüsünün içinde bir if, else if, else bloğu vurgulanır. Eğer Controller Up tuşuna basılırsa ArmMotor yukarı doğru döner, eğer Controller Down tuşuna basılırsa ArmMotor aşağı doğru döner, eğer basılırsa ArmMotor durur.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Kumanda üzerindeki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

[If Then else If Then else] bloğu, belirli davranışları Denetleyicide basılan veya bırakılan düğmelere eşlemek için kullanılır. Kodun bu bölümünde, Yukarı veya Aşağı düğmelerine basıldığında ayarlanan koşullar ayarlanır. Eğer öyleyse, kolun kaldırılması ve indirilmesi gibi belirli davranışlar meydana gelecektir. Durumun başka bir kısmı da var, eğer hiçbir düğmeye basılmazsa kol hareket etmeyi durduracak şekilde ayarlanır.

Pençe projesindeki aşağıdaki kod bölümünün aynı açıklamayı takip ettiğini unutmayın.

Seçenek 2'nin Özeti: Sonsuz Döngü Kullanımı

Avantajları

Sınırlamalar

Örnek Durum

  • Özel yapılara, özellikle de 4'ten fazla motora sahip aktarma organlarına uyum sağlayabilir
  • Tek bir düğmeye birden fazla davranış atayabilir
  • Davranışları Denetleyicideki farklı eksenlere atayabilir (Cihaz Yapılandırmasındaki yalnızca Sol Arcade, Sağ Arcade, Bölünmüş Arcade ve Tank Drive seçeneklerinin aksine)
  • Bir miktar kodlama bilgisi gerektirir (koşullar, döngüler ve Denetleyicideki düğmeler/kumanda çubukları bilgisi)
  • Projenin daha yavaş yürütülmesi veya düğme yanıt süresinde gecikme olasılığı. Tüm komutlar tek bir Forever döngüsünde bulunduğundan, kod yürütme, belirlenen koşullara ve kodun uzunluğuna bağlı olarak yavaş çalışabilir.
  • Denetleyiciyi özel yapım bir robotla, özellikle standart dışı bir aktarma organıyla kullanma
  • Tek bir düğmeye birden fazla davranış atamak istediğinizde. Örneğin, Yukarı Düğmesine basıldığında Pençe açılabilir, ileri doğru hareket edebilir ve ardından bir nesnenin etrafını kapatabilir.

Seçenek 3: Olayları Kullanma

Denetleyicinizde çok fazla özelleştirme istiyorsanız, Etkinlikleri Kullanmak sizin için en iyi seçenektir. Bir düğmeye basılması, pençeyi açmak, kolu kaldırmak ve belirli bir mesafe boyunca ileri gitmek için bir düğmeye basmak gibi birden fazla robot davranışını tetikleyebilir. Bir Forever döngüsü içinde düğme başına birden çok davranışı kodlamaya çalışmak, projenin yürütülmesinin önemli ölçüde yavaşlamasına neden olur; Events'i kullanmak bunu daha etkili bir şekilde yapmanıza olanak tanır.

Bu seçenek, proje akışını bölmek için Etkinlikler'i kullanır. Bu, Forever döngüsünü kullanmaya benzer, ancak kodun daha organize olmasına olanak tanır, böylece düğmenin yürütülmesi daha hızlı yanıt süresine sahip olur. Daha hızlı tepki süresi, Denetleyici düğmelerine basma ile robot davranışını görme arasında bir gecikme görmeyeceğiniz anlamına gelir. Bu örnek, önceki projeyle aynı davranışları gösterir ancak Sonsuza Kadar Döngü yerine Etkinlikler kullanılarak yapılır.

VEXcode EXP Çalışma Alanı, Seçenek 3 blok projesi açıldı. Projede 11 adet küçük blok yığını ve yapılandırılmış cihazlar bulunmaktadır. Aygıtlar menüsü yan tarafa açılır ve şu aygıtları listeler: Port 3'te ArmMotor, Port 4'te ClawMotor, Denetleyici, Port 6'da LeftMotor ve Port 10'da RightMotor. Son olarak Denetleyici girdisini işleyen 11 küçük blok yığını vardır. İlk yığında, Başlatıldığında, ArmMotor'un durmasını beklemeye ayarla ve ardından ClawMotor'un durmasını beklemeye ayarla yazıyor. İkinci yığın şunu okur: Denetleyici ekseni 3 değiştiğinde, SolMotor hızı Denetleyici 3 pozisyonunun %'sine ayarlanır ve ardından SolMotor ileri doğru döndürülür. Üçüncü yığın şunu okur: Denetleyici ekseni 2 değiştiğinde, RightMotor hızını Denetleyici 2 konum %'sine ayarlayın ve ardından RightMotor'u ileri doğru döndürün. Dördüncü yığın şunu okur: Denetleyici düğmesine Yukarı basıldığında, ArmMotor yukarı doğru döner. Beşinci yığında Kontrolör düğmesi Yukarı bırakıldığında ArmMotor durdurulur yazıyor. Altıncı yığın şunu okur: Kontrolör düğmesine Aşağı doğru basıldığında, ArmMotor aşağı doğru döner. Yedinci yığında Kontrolör düğmesi Aşağı bırakıldığında ArmMotor durdurulur yazıyor. Sekizinci yığın şunu okur: Denetleyici A düğmesine basıldığında, ClawMotor açılır. Dokuzuncu yığında Kontrolör düğmesi A bırakıldığında ClawMotor'u durdur yazıyor. Onuncu yığın şunu okur: Kontrol Düğmesi B'ye basıldığında, ClawMotor kapanır. On birinci ve son yığında ise Kontrolör B düğmesi bırakıldığında ClawMotor durdurulur yazıyor.

"Seçenek 3" VEXcode EXP proje dosyasını indirin >

Seçenek 3 Kodunun Açıklaması.

Kod Parçası

Açıklama

Option 3 VEXcode EXP projesindeki bloklardan birinin yakın çekimi. Yığın, Başlatıldığında, ArmMotor'un durmasını beklemeye ayarla ve ardından ClawMotor'un durmasını beklemeye ayarla şeklinde okunur.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Kumanda üzerindeki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

Option 3 VEXcode EXP projesindeki iki blok yığınının yakın görünümü. İlk yığın şunu okur: Denetleyici ekseni 3 değiştiğinde, Sol Motor hızını Denetleyici 3 pozisyonunun %'sine ayarlayın ve ardından SolMotoru ileri doğru döndürün. İkinci yığın şunu okur: Denetleyici ekseni 2 değiştiğinde, RightMotor hızını Denetleyici 2 konum %'sine ayarlayın ve ardından RightMotor'u ileri doğru döndürün. EXP Kontrolcüsünün düğmeleri ve joystickleri etiketli şeması. Görünüm kontrol ünitesinin ön tarafındandır. Sol joystick'in eksenleri 3 ve 4 olarak etiketlenmiştir. Sol joystick'in orta tuşu L3 olarak etiketlenmiştir. Sol joystick'in altında bulunan iki yuvarlak düğme Yukarı ve Aşağı olarak etiketlenmiştir. Sağ joystick'in eksenleri 1 ve 2 olarak etiketlenmiştir. Sağ joystick'in orta tuşu R3 olarak etiketlenmiştir. Sağ joystick'in altında bulunan iki yuvarlak düğme A ve B olarak etiketlenmiştir.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Kumanda üzerindeki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

{When controller axis} Olay blokları, Kumanda üzerindeki dört eksenden biri kumanda kolları kullanılarak değiştirildiğinde belirli davranışları tetiklemek için kullanılır.

[Motor hızını ayarla] blokları, motor hızını A ve D eksenleri boyunca geçerli Kontrolörün konumuna ayarlamak için kullanılır. Bu, bir arabayı sürüşe geçirmeye eşdeğerdir. Bu mutlaka arabayı hareket ettirmez, sadece ayarlar.

Her joystick ekseni -100 ila +100 arasında bir değer döndürür ve ortalandığında sıfır değeri döndürür. Bu, kumanda kolu eksenlerinin itildiğinde -%100 ila %100'e eşit olduğu anlamına gelir. Eksenler 100 veya -100'e doğru ne kadar ileri itilirse motor o kadar hızlı dönecektir.

Daha sonra [Spin] bloğu motoru gerçekten hareket ettirmek için kullanılır. Bu, yön belirlendikten sonra arabanın üzerine gaz basmaya eşdeğerdir. Bu, her motorun dört Kontrolör ekseninden biri tarafından kontrol edilmesine olanak tanır.

Option 3 VEXcode EXP projesindeki dört blok yığınının yakın görünümü. İlk yığın şunu okur: Denetleyici düğmesine Yukarı basıldığında, ArmMotor yukarı doğru döner. İkinci yığında ise Kontrolör düğmesi Yukarı bırakıldığında ArmMotor durdurulur yazıyor. Üçüncü yığın şunu okur: Kontrolör düğmesine Aşağı doğru basıldığında, ArmMotor aşağı doğru döner. Dördüncü yığında Kontrolör düğmesi Aşağıya doğru bırakıldığında ArmMotor'u durdur yazıyor.

Bu kod örneği için bir Clawbot kullanıldı. Kolu kaldırmak ve indirmek için Kumanda üzerindeki düğmeler kullanıldığında, düğme bırakılır bırakılmaz yer çekimi nedeniyle kol tekrar aşağıya düşecektir. Hem kolu hem de tırnağı "tut" konumuna ayarlamak, Kumanda üzerindeki düğmeler serbest bırakıldıktan sonra bile hem kolun hem de tırnağın yerinde kalmasını sağlayacaktır.

{When controller axis} Olay blokları, belirli davranışları Denetleyicide basılan veya bırakılan düğmelere eşlemek için kullanılır. Kodun bu bölümünde, Yukarı veya Aşağı düğmelerine basıldığında ayarlanan koşullar ayarlanır. Eğer öyleyse, kolun kaldırılması, indirilmesi veya durması gibi belirli davranışlar meydana gelecektir.

Pençe projesindeki kodun son bölümünün aynı açıklamayı takip ettiğini unutmayın.

Seçenek 3'ün Özeti: Olayları Kullanma

Avantajları

Sınırlamalar

Örnek Durum

  • Özel yapılara, özellikle de 4'ten fazla motora sahip aktarma organlarına uyum sağlayabilir
  • Tek bir düğmeye birden fazla davranış atayabilir
  • Davranışları Denetleyicideki farklı eksenlere atayabilir (Cihaz Yapılandırmasındaki yalnızca Sol Arcade, Sağ Arcade, Bölünmüş Arcade ve Tank Drive seçeneklerinin aksine)
  • Daha hızlı kod yürütme ve dolayısıyla düğme duyarlılığı (her koşul ayrı ayrı çağrıldığından ve tek bir kod yığınına gömülmediğinden)
  • Seçeneklere ilişkin en fazla kodlama bilgisini gerektirir (koşullar, döngüler, olaylar ve Denetleyicideki düğmeler/kumanda çubukları bilgisi)
  • Denetleyiciyi özel yapım bir robotla, özellikle standart dışı bir aktarma organıyla kullanma
  • Tek bir düğmeye gecikme olmadan birden fazla davranış atamak istediğinizde. Örneğin, Yukarı Düğmesine basıldığında Pençe açılabilir, ileri doğru hareket edebilir ve ardından bir nesnenin etrafını kapatabilir.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: