VEXcode IQ'da Özel Kontrol Cihazı 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. VEXcode IQ'da Kontrol Cihazını 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 IQ'da 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.

Kontrolör seçeneklerinin gösterildiği VEXcode IQ Aygıtları menüsü. Düğme kontrollerinin şeması, iki kumanda kolunun robotu tank sürüş konfigürasyonunda sürdüğünü göstermektedir. E ekseni 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 IQ Ç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ıyor ve şu aygıtları listeliyor: IQ 2. nesil Brain, 4. portta ClawMotor, 10. portta ArmMotor, Controller, 1. portta LeftMotor ve 6. portta 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 okunur, SolMotor hızını Denetleyici A pozisyonuna % olarak ayarlayın, SolMotor'u ileri döndürün, SağMotor hızını Denetleyici D pozisyonuna % olarak ayarlayın ve SağMotor'u ileri döndürün. Daha sonra, eğer Controller E 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 Controller F Up tuşuna basılırsa ClawMotor açılır, eğer Controller F Down tuşuna basılırsa ClawMotor kapanır, aksi takdirde ClawMotor durdurulur.

"Seçenek 2" VEXcode IQ (2. nesil) proje dosyasını indirin >

Not: 1. Nesil Clawbot kullanılıyorsa, yukarıdaki projede amaçlandığı gibi çalışması için kol motorunun Cihaz Konfigürasyonunda ters çevrilmesi gerekecektir.

Seçenek 2 Kodunun Açıklaması.

Kod Parçası

Açıklama

Seçenek 2 VEXcode IQ 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.

Seçenek 2 VEXcode IQ 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 A pozisyonuna % olarak ayarlarlar, SolMotoru ileri döndürürler, SağMotor hızını Kontrolör D pozisyonuna % olarak ayarlarlar ve SağMotoru ileri döndürürler. IQ (2. Nesil) Kontrol Cihazının düğmeleri ve joystickleri etiketli olarak diyagramı. Görünüm kontrol ünitesinin ön tarafındandır. Sol joystick'in eksenleri A ve B olarak etiketlenmiştir. Sol joystick'in orta düğmesi L3 olarak etiketlenmiştir. Sol joystick'in altında bulunan iki yuvarlak düğme E Yukarı ve E Aşağı olarak etiketlenmiştir. Sağ joystick'in eksenleri C ve D olarak etiketlenmiştir. Sağ joystick'in orta düğmesi R3 olarak etiketlenmiştir. Sağ joystick'in altında bulunan iki yuvarlak düğme F Yukarı ve F Aşağı 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, Denetleyicideki 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ı 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.

Seçenek 2 VEXcode IQ 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 E Up tuşuna basılırsa ArmMotor yukarı doğru döner, eğer Controller E 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, Denetleyicideki 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, E Yukarı veya E Aşağı düğmelerine basıldığında ayarlanan koşullar belirlenir. 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, F Yukarı Düğmesine basıldığında Pençe açılabilir, ileri doğru hareket edebilir ve ardından bir nesnenin etrafında kapanabilir.

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.

Seçenek 3 blok projesi açılmış VEXcode IQ Çalışma Alanı. Projede 11 adet küçük blok yığını ve yapılandırılmış cihazlar bulunmaktadır. Aygıtlar menüsü yan tarafa açılıyor ve şu aygıtları listeliyor: IQ 2. nesil Brain, 4. portta ClawMotor, 10. portta ArmMotor, Controller, 1. portta LeftMotor ve 6. portta 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 A değiştiğinde, SolMotor hızını Denetleyici A pozisyonuna % olarak ayarlayın ve ardından SolMotor'u ileri doğru döndürün. Üçüncü yığın şunu okur: Kontrolör D değiştirildiğinde, SağMotor hızını Kontrolör D pozisyonuna % olarak ayarlayın ve ardından SağMotor'u ileri doğru döndürün. Dördüncü yığın şunu okur: Kontrolör E Yukarı düğmesine basıldığında, ArmMotor yukarı doğru döner. Beşinci yığında şu yazıyor: Kontrolör düğmesi E Yukarı bırakıldığında ArmMotor durdurulur. Altıncı yığında ise Kontrolör E Aşağı tuşuna basıldığında ArmMotor aşağı doğru döner. Yedinci yığında ise Kontrolör E Aşağı düğmesi bırakıldığında ArmMotor durdurulur yazıyor. Sekizinci yığın şunu okur: Kontrolör F Yukarı düğmesine basıldığında, ClawMotor açılır. Dokuzuncu yığında Kontrolör F Yukarı düğmesi bırakıldığında ClawMotor'u durdur yazıyor. Onuncu yığın şunu okur: Kontrol Düğmesi F Aşağı'ya basıldığında, ClawMotor kapanır. On birinci ve son yığında ise Kontrolör F Aşağı düğmesi bırakıldığında ClawMotor durdurulur yazıyor.

"Seçenek 3" VEXcode IQ (2. nesil) proje dosyasını indirin >

Not: 1. Nesil Clawbot kullanılıyorsa, yukarıdaki projede amaçlandığı gibi çalışması için kol motorunun Cihaz Konfigürasyonunda ters çevrilmesi gerekecektir.

Seçenek 3 Kodunun Açıklaması.

Kod Parçası

Açıklama

Seçenek 3 VEXcode IQ 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, Denetleyicideki 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 IQ projesindeki iki blok yığınının yakın görünümü. İlk yığın şunu okur: Denetleyici ekseni A değiştiğinde, Sol Motor hızını Denetleyici A pozisyonuna % olarak ayarlayın ve ardından SolMotoru ileri doğru döndürün. İkinci yığın şunu okur: Denetleyici ekseni D değiştiğinde, SağMotor hızını Denetleyici D konum %'sine ayarlayın ve ardından SağMotor'u ileri doğru döndürün. IQ (2. Nesil) Kontrol Cihazının düğmeleri ve joystickleri etiketli olarak gösterilmiştir. Görünüm kontrol ünitesinin ön tarafındandır. Sol joystick'in eksenleri A ve B olarak etiketlenmiştir. Sol joystick'in orta butonu L3 olarak etiketlenmiştir. Sol joystick'in altındaki iki yuvarlak düğme E Yukarı ve E Aşağı olarak etiketlenmiştir. Sağ joystick'in eksenleri C ve D olarak etiketlenmiştir. Sağ joystick'in orta düğmesi R3 olarak etiketlenmiştir. Sağ joystick'in altında bulunan iki yuvarlak düğme F Yukarı ve F Aşağı 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, Denetleyicideki 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ı, Denetleyicideki 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 IQ projesindeki dört blok yığınının yakın görünümü. İlk yığın şunu okur: Kontrolör E Yukarı düğmesine basıldığında, ArmMotor yukarı doğru döner. İkinci yığında ise şu yazıyor: Kontrolör düğmesi E Yukarı bırakıldığında ArmMotor durdurulur. Üçüncü yığında ise Kontrolör E Aşağı tuşuna basıldığında ArmMotor aşağı doğru döner. Dördüncü yığında ise Kontrolör E Aşağı düğmesi bırakıldığında ArmMotor durdurulur 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, Denetleyicideki 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, E Yukarı veya E Aşağı düğmelerine basıldığında ayarlanan koşullar belirlenir. 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)
  • 1. nesil VEX IQ Beyin kullanılıyorsa, bir projede çok fazla Olay bulunması, Beynin işleme sınırlamaları nedeniyle projenin çalışmamasına neden olabilir.
  • 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, F Yukarı Düğmesine basıldığında Pençe açılabilir, ileri doğru hareket edebilir ve ardından bir nesnenin etrafında kapanabilir.

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

Last Updated: