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: Cihaz Yapılandırmasında Düğme 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. Cihaz Yapılandırmasında Denetleyiciye düğmelerin nasıl atanacağı hakkında daha fazla bilgi için bu makaleye .

VEX IQ Denetleyici

Seçenek 1 Özeti: Cihaz Yapılandırmasında Düğme 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: Sonsuza Kadar Döngü Kullanmak

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.

Sonsuza kadar döngü kullanmanın resmi

"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

ArmMotor durdurmayı beklemeye ve ClawMotor durdurmayı beklemeye ayarlayın

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.

Motorun hızını ve dönüşünü ayarlama Düğme şemasıyla VEX IQ Kontrol Cihazı

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.

Denetleyici E Yukarı'ya basıldığında koşullu ifade

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 Özeti: Sonsuza Kadar Döngü Kullanmak

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.

Sonsuza Kadar Döngü yerine Olayları Kullanmak

"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

ArmMotor durdurmayı beklemeye ve ClawMotor durdurmayı beklemeye ayarlayın

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.

SolMotor hızını Kontrol Cihazı A konumuna % olarak ayarlayın ve solaMotoru ileri döndürün Düğme şemasıyla VEX IQ Kontrol Cihazı

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.

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.

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 Ö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: