VEXcode V5'teki Ö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 V5'te 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 V5'te 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

Speedbot 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 V5 Aygıtlar menüsü ve gösterilen Kontrolcü seçenekleri. Düğme kontrollerinin şeması, iki kumanda kolunun robotu tank sürüş konfigürasyonunda hareket ettirdiğini göstermektedir. Yukarı ve Aşağı düğmeleri bir ArmMotorGroup'u, R ekseni düğmeleri ise bir ClawMotor'u 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)
  • Speedbot, Clawbot gibi standart bir yapıyı veya bu standart yapıların basit bir modifikasyonunu değiştirmek. Örneğin ön kısmına hava girişi takılı bir motor grubu tarafından kontrol edilen bir Speedbot.
  • 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 V5 çalışma alanında Option 2 blokları projesi açık. Proje, bir blok yığınına ve yapılandırılmış cihazlara sahiptir. Yan tarafta "Cihazlar" menüsü açılır ve aşağıdaki cihazları listeler: Kontrolcü1, 3 numaralı portta bulunan Pençe Motoru, 8 numaralı portta bulunan Kol Motoru, 1 numaralı portta bulunan Sol Motor ve 10 numaralı portta bulunan Sağ Motor. Çalışma alanında, kontrol cihazının girişini işlemek için bloklardan oluşan bir yığın bulunur. Yığın şu şekilde okunuyor: Başlatıldığında, ArmMotor durdurma ayarını "beklet" ve ClawMotor durdurma ayarını "beklet" olarak ayarlayın. Yığınin geri kalanı bir Forever döngüsü içinde yer almaktadır. "Forever" yazısını gösteriyor, "Sol Motor hızını Controller1'in 3 pozisyonuna % ayarla, Sol Motoru ileri döndür, Sağ Motor hızını Controller1'in 2 pozisyonuna % ayarla ve Sağ Motoru ileri döndür." Ardından, Controller1 Yukarı tuşuna basılırsa ArmMotor yukarı doğru dönsün, aksi takdirde Controller1 Aşağı tuşuna basılırsa ArmMotor aşağı doğru dönsün, aksi takdirde ArmMotor dursun. Son olarak, Kontrolcü 1 A'ya basılırsa pençe motorunu açın, aksi takdirde Kontrolcü 1 B'ye basılırsa pençe motorunu kapatın, aksi takdirde pençe motorunu durdurun.

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

Seçenek 2 Kodunun Açıklaması.

Kod Parçası Açıklama
VEXcode V5 projesindeki Option 2'deki blok yığınının yakın çekim görüntüsü. İki blok vurgulanmıştır ve yığının Sonsuz Döngüsünün dışındadır; bunlar "set ArmMotor stopping to hold" ve "set ClawMotor stopping to hold" şeklinde okunmaktadır. 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.
VEXcode V5 projesindeki Option 2'deki blok yığınının yakın çekim görüntüsü. Yığının Sonsuz Döngüsü içinde dört blok vurgulanmıştır. "Forever" metnini okuduktan sonra, LeftMotor hızını Controller1'in 3 pozisyonuna % olarak ayarladı, LeftMotor'u ileri doğru döndürdü, RightMotor hızını Controller1'in 2 pozisyonuna % olarak ayarladı ve RightMotor'u ileri doğru döndürdü.

 

V5 Kontrol Cihazının düğme düzenini görselleştirmek için.

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ı 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. 

VEXcode V5 projesindeki Option 2'deki blok yığınının yakın çekim görüntüsü. Bir if, else if, else bloğu, yığının Forever döngüsü içinde vurgulanır. Eğer Controller1 Up tuşuna basılırsa ArmMotor yukarı doğru döner, aksi takdirde Controller1 Down tuşuna basılırsa ArmMotor aşağı doğru döner, aksi takdirde 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, 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ında Option 3 blokları projesi açık. Proje, 11 adet küçük blok yığınından oluşmaktadır ve yapılandırılmış cihazlara sahiptir. Yan tarafta "Cihazlar" menüsü açılır ve aşağıdaki cihazları listeler: Kontrolcü1, 3 numaralı portta bulunan Pençe Motoru, 8 numaralı portta bulunan Kol Motoru, 1 numaralı portta bulunan Sol Motor ve 10 numaralı portta bulunan Sağ Motor. Çalışma alanında, kontrol cihazının girişini işleyen 11 küçük blok yığını bulunmaktadır. İlk komut satırında şu ifade yer alıyor: Başlatıldığında, ArmMotor durdurma ayarını "beklet" olarak ayarlayın ve ardından ClawMotor durdurma ayarını "beklet" olarak ayarlayın. İkinci komut satırında şu ifade yer alıyor: Kontrolcü 1'in 3. ekseni değiştirildiğinde, SolMotor hızını Kontrolcü 1'in 3. pozisyonunun % değerine ayarlayın ve ardından SolMotoru ileri doğru döndürün. Üçüncü komut satırında şu ifade yer alıyor: Kontrolcü 1'in 2. ekseni değiştirildiğinde, SağMotor hızını Kontrolcü 1'in 2. pozisyonunun % değerine ayarlayın ve ardından SağMotoru ileri doğru döndürün. Dördüncü yığın şu şekilde okunuyor: Controller1 düğmesine (Yukarı) basıldığında, ArmMotor yukarı doğru dönsün. Beşinci yığın şu şekilde okunuyor: Controller1 düğmesi yukarı bırakıldığında, ArmMotor'u durdur. Altıncı yığın şu şekilde okunuyor: Controller1 düğmesine basıldığında, ArmMotor aşağı doğru dönsün. Yedinci kod bloğunda şu ifade yer alıyor: Controller1 düğmesi bırakıldığında, ArmMotor'u durdur. Sekizinci satırda şu ifade yer alıyor: Kontrolcü 1'in A düğmesine basıldığında, Pençe Motorunu aç. Dokuzuncu kod bloğunda şu ifade yer alıyor: Controller1 düğmesi A bırakıldığında, ClawMotor durdurulur. Onuncu satırda şu yazıyor: Kontrolcü 1'in B düğmesine basıldığında, pençe motorunu yakına döndürün. On birinci ve son satırda şu ifade yer alıyor: Controller1 düğmesi B bırakıldığında, ClawMotor durdurulur.

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

Seçenek 3 Kodunun Açıklaması.

Kod Parçası Açıklama
VEXcode V5 projesindeki Option 3'te yer alan blok yığınlarından birinin yakın çekim görüntüsü. Yığın şu şekilde okunuyor: Başlatıldığında, ArmMotor durdurma ayarını "beklet" olarak ayarlayın ve ardından ClawMotor durdurma ayarını "beklet" olarak 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.
VEXcode V5 projesindeki Option 3'te yer alan iki blok yığınının yakın çekim görüntüsü. İlk komut satırında şu ifade yer alıyor: Kontrolcü 1'in 3. ekseni değiştirildiğinde, SolMotor hızını Kontrolcü 1'in 3. pozisyonunun % değerine ayarlayın ve ardından SolMotoru ileri doğru döndürün. İkinci komut satırında şu ifade yer alıyor: Kontrolcü 1'in 2. ekseni değiştirildiğinde, SağMotor hızını Kontrolcü 1'in 2. pozisyonunun % değerine ayarlayın ve ardından SağMotoru ileri doğru döndürün.

 

V5 Kontrol Cihazının düğme düzenini görselleştirmek için.

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ı, 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. 

VEXcode V5 projesindeki Option 3'te yer alan dört blok yığınının yakın çekim görüntüsü. İlk yığın şu şekilde okunuyor: Controller1 düğmesine (Yukarı) basıldığında, ArmMotor yukarı doğru dönsün. İkinci yığın şu şekilde okunuyor: Controller1 düğmesi yukarı bırakıldığında, ArmMotor'u durdur. Üçüncü yığın şu şekilde okunuyor: Controller1 düğmesine basıldığında, ArmMotor aşağı doğru dönsün. Dördüncü yığın şu şekilde okunuyor: Controller1 düğmesi bırakıldığında, ArmMotor'u durdur.

 

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