Kode Pengontrol Kustom di VEXcode V5

Dengan menggunakan Pengendali, Anda dapat lebih mudah mengendalikan dan menggerakkan robot untuk menyelesaikan tugas. Namun, ada keterbatasan dalam menggunakan program Drive, dan bergantung pada rancangan robot atau tugas yang dihadapi, Anda mungkin menginginkan kontrol yang berbeda. Pengkodean Pengendali memungkinkan Anda mengoptimalkan Pengendali agar lebih sesuai dengan robot dan tugas yang sedang dikerjakan. Ada beberapa cara untuk membuat kode Controller dalam VEXcode V5. Masing-masing memiliki kelebihan dan keterbatasan, dan beberapa metode lebih cocok untuk situasi tertentu tergantung pada hasil yang diinginkan.

Artikel ini akan memandu Anda melalui tiga opsi berbeda untuk membuat kode khusus Controller di VEXcode V5. Setiap metode akan dijelaskan dengan kelebihan, keterbatasan, dan contoh kasus penggunaan untuk membantu memandu Anda saat memilih suatu metode. Untuk keperluan artikel ini, semua contoh kode yang ditampilkan dibuat untuk Clawbot. Namun, konsep yang sama dapat diterapkan pada sejumlah build lain yang ditemukan di builds.vex.com, dan build khusus.

Opsi 1: Menetapkan Tombol dalam Konfigurasi Perangkat

Pilihan ini sangat bagus jika Anda menggunakan build standar, seperti Speedbot atau Clawbot, dan ingin segera memulai dan menjalankannya.

Opsi ini memungkinkan Anda menetapkan motor, drivetrain, atau grup motor ke tombol pada Pengontrol dalam Konfigurasi Perangkat. Untuk informasi lebih lanjut tentang cara menetapkan tombol ke Pengontrol dalam Konfigurasi Perangkat, lihat artikel ini.

Menu Perangkat VEXcode V5 dengan opsi Pengontrol yang ditampilkan. Diagram kontrol tombol menunjukkan bahwa kedua joystick menggerakkan robot dalam konfigurasi penggerak tank. Tombol Atas dan Bawah mengontrol ArmMotorGroup, dan tombol sumbu R mengontrol ClawMotor.

Ringkasan Opsi 1: Menetapkan Tombol dalam Konfigurasi Perangkat

Keuntungan Keterbatasan Contoh Situasi
  • Pengaturan cepat tanpa perlu coding
  • Metode paling sederhana
  • Mudah disesuaikan
  • Dapat menetapkan motor individual, drivetrain standar, dan grup motor ke tombol
  • Penugasan tombol dibatasi pada jumlah tombol pada Pengontrol
  • Sistem penggerak tidak boleh melebihi 4 motor atau disesuaikan (hanya penggerak standar yang didukung, bukan penggerak H, holonomic, atau sistem penggerak khusus lainnya)
  • Memanipulasi bangunan standar seperti Speedbot, Clawbot, atau modifikasi sederhana dari bangunan standar tersebut. Misalnya, Speedbot dengan intake yang terpasang di bagian depan yang dikendalikan oleh grup motor.
  • Memanipulasi tombol mana yang sesuai dengan perilaku berbeda pada robot dengan cepat tanpa banyak pengkodean

Opsi 2: Menggunakan Forever Loop

Jika Anda menggunakan build khusus dan bukan build standar, atau ingin memiliki lebih banyak kustomisasi pada Controller Anda, opsi ini adalah pilihan yang bagus. Menggunakan loop Forever merupakan cara yang bagus untuk membuat kode khusus bagi Controller Anda.

Opsi ini menempatkan semua kondisi untuk Pengontrol, dan tombol-tombol terkaitnya, dalam loop Selamanya. Hal ini memberikan lebih banyak fleksibilitas, terutama dengan desain bangunan khusus, tetapi juga memerlukan beberapa pengalaman pengkodean. Namun, satu pertimbangan saat menggunakan opsi ini adalah panjang dan kompleksitas proyek Anda. Semakin banyak kondisi yang ditambahkan, tumpukan kode akan menjadi semakin panjang. Artinya, beberapa blok harus dieksekusi secara berurutan, dan jika terdapat banyak blok, hal ini dapat memperlambat eksekusi proyek. Eksekusi proyek yang lebih lambat dapat menyebabkan jeda antara menekan tombol Pengontrol dan melihat perilaku robot.

Contoh spesifik yang ditunjukkan di bawah ini adalah salah satu cara Anda dapat menggunakan loop Forever dengan robot desain khusus (seperti robot dengan drivetrain khusus) untuk menggerakkan robot dan memanipulasi cakar dan lengan untuk berinteraksi dengan objek.

Ruang kerja VEXcode V5 dengan proyek blok Opsi 2 terbuka. Proyek ini memiliki tumpukan blok dan perangkat yang telah dikonfigurasi. Menu Perangkat terbuka di samping dan menampilkan perangkat-perangkat berikut: Controller1, ClawMotor pada port 3, ArmMotor pada port 8, LeftMotor pada port 1, dan RightMotor pada port 10. Di ruang kerja terdapat tumpukan blok untuk menangani input pengontrol. Tumpukan teks tersebut berbunyi: Saat dimulai, atur penghentian ArmMotor ke tahan dan atur penghentian ClawMotor ke tahan. Sisa tumpukan (stack) terdapat dalam sebuah loop selamanya (Forever loop). Instruksinya berbunyi: Selamanya, atur kecepatan Motor Kiri ke posisi Controller1 3 %, putar Motor Kiri ke depan, atur kecepatan Motor Kanan ke posisi Controller1 2 %, dan putar Motor Kanan ke depan. Selanjutnya, jika Controller1 Up ditekan, maka ArmMotor akan berputar ke atas, jika Controller1 Down ditekan, maka ArmMotor akan berputar ke bawah, dan jika tidak, ArmMotor akan berhenti berputar. Terakhir, jika Controller1 A ditekan maka putar ClawMotor untuk membuka, jika Controller1 B ditekan maka putar ClawMotor untuk menutup, dan jika tidak, hentikan ClawMotor.

Unduh file proyek VEXcode V5 "Opsi 2" >

Penjelasan Kode Opsi 2.

Potongan Kode Penjelasan
Tampilan dekat tumpukan blok pada proyek VEXcode V5 Opsi 2. Dua blok disorot dan berada di luar loop Forever tumpukan, blok tersebut bertuliskan set ArmMotor stopping to hold dan set ClawMotor stopping to hold. Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.
Tampilan dekat tumpukan blok pada proyek VEXcode V5 Opsi 2. Empat blok disorot di dalam loop Forever pada tumpukan. Mereka membaca "Selamanya", mengatur kecepatan Motor Kiri ke posisi Controller1 3 %, memutar Motor Kiri ke depan, mengatur kecepatan Motor Kanan ke posisi Controller1 2 %, dan memutar Motor Kanan ke depan.

 

Untuk memvisualisasikan tata letak tombol pada V5 Controller.

Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.

Loop Forever digunakan untuk terus memeriksa tombol mana yang ditekan pada Pengontrol.

Blok [Atur kecepatan motor] digunakan untuk mengatur kecepatan motor ke posisi Pengendali saat ini sepanjang sumbu 2 dan 3. Ini sama saja dengan menyetel mobil ke posisi drive. Itu belum tentu membuat mobil bergerak, hanya mengaturnya.

Setiap sumbu joystick mengembalikan nilai antara -100 hingga +100, dan mengembalikan nilai nol saat dipusatkan. Ini berarti bahwa sumbu joystick, ketika ditekan, setara dengan -100% hingga 100%. Semakin jauh ke arah 100 atau -100 sumbu didorong, semakin cepat motor akan berputar.

Blok [Spin] kemudian digunakan untuk benar-benar menggerakkan motor. Ini sama saja dengan menekan gas pada mobil setelah arahnya sudah ditetapkan. Hal ini memungkinkan setiap motor dikontrol oleh salah satu dari empat sumbu Pengendali. 

Tampilan dekat tumpukan blok pada proyek VEXcode V5 Opsi 2. Blok if, else if, else disorot di dalam loop Forever pada stack. Jika Controller1 Up ditekan, maka ArmMotor akan berputar ke atas, jika Controller1 Down ditekan, maka ArmMotor akan berputar ke bawah, dan jika tidak, ArmMotor akan berhenti.

 

Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.

Blok [If then else if then else] digunakan untuk memetakan perilaku tertentu ke tombol yang ditekan atau dilepaskan pada Pengontrol. Pada bagian kode ini, kondisi yang ditetapkan adalah jika tombol Atas atau Bawah ditekan. Jika demikian, perilaku tertentu akan terjadi, seperti mengangkat dan menurunkan lengan. Ada pula bagian lain dari kondisi tersebut, jika tidak ada tombol yang ditekan, lengan diatur untuk berhenti bergerak.

Perhatikan bagian kode berikut dalam proyek untuk Claw mengikuti penjelasan yang sama.

Ringkasan Opsi 2: Menggunakan Forever Loop

Keuntungan Keterbatasan Contoh Situasi
  • Dapat mengakomodasi pembuatan khusus, terutama drivetrain dengan lebih dari 4 motor
  • Dapat menetapkan beberapa perilaku ke satu tombol
  • Dapat menetapkan perilaku ke sumbu yang berbeda pada Pengontrol (berbeda dengan satu-satunya opsi Arcade Kiri, Arcade Kanan, Arcade Terpisah, dan Penggerak Tangki dalam Konfigurasi Perangkat)
  • Memerlukan sejumlah pengetahuan pengkodean (kondisi, loop, dan pengetahuan tentang tombol/joystick pada Pengontrol)
  • Potensi pelaksanaan proyek menjadi lebih lambat, atau tertundanya waktu respons tombol. Karena semua perintah berada dalam satu loop Forever, eksekusi kode dapat berjalan lambat, tergantung pada kondisi yang ditetapkan dan panjang kode.
  • Menggunakan Controller dengan robot yang dibuat khusus, terutama dengan drivetrain non-standar
  • Saat ingin menetapkan beberapa perilaku ke satu tombol. Misalnya, saat Tombol Atas ditekan, Cakar dapat terbuka, bergerak maju, dan kemudian menutup di sekitar suatu objek.

Opsi 3: Menggunakan Acara

Jika Anda menginginkan banyak penyesuaian pada Pengontrol Anda, Menggunakan Peristiwa adalah pilihan terbaik bagi Anda. Menekan satu tombol dapat memicu beberapa perilaku robot, seperti menekan tombol untuk membuka cakar, mengangkat lengan, dan melaju ke depan sejauh jarak tertentu. Mencoba mengodekan beberapa perilaku per tombol dalam loop Forever akan menyebabkan eksekusi proyek melambat drastis – menggunakan Events memungkinkan Anda melakukannya dengan lebih efektif.

Opsi ini menggunakan Peristiwa untuk memecah alur proyek. Ini serupa dengan penggunaan loop Forever, tetapi memungkinkan kode menjadi lebih terorganisasi, sehingga eksekusi tombol memiliki waktu respons yang lebih cepat. Waktu respons yang lebih cepat berarti Anda tidak akan melihat jeda antara menekan tombol Pengontrol dan melihat perilaku robot. Contoh ini menunjukkan perilaku yang sama seperti proyek sebelumnya, tetapi dilakukan dengan menggunakan Events, bukan Forever Loop.

Ruang kerja VEXcode EXP dengan proyek blok Opsi 3 terbuka. Proyek ini memiliki 11 tumpukan blok kecil dan telah mengkonfigurasi perangkat. Menu Perangkat terbuka di samping dan menampilkan perangkat-perangkat berikut: Controller1, ClawMotor pada port 3, ArmMotor pada port 8, LeftMotor pada port 1, dan RightMotor pada port 10. Di ruang kerja terdapat 11 tumpukan kecil blok yang menangani input Pengontrol. Tumpukan pertama berbunyi: Saat dimulai, atur penghentian ArmMotor ke tahan, lalu atur penghentian ClawMotor ke tahan. Tumpukan kedua berbunyi: Saat sumbu 3 Controller1 diubah, atur kecepatan LeftMotor ke posisi Controller1 3 % lalu putar LeftMotor ke depan. Tumpukan ketiga berbunyi: Saat sumbu 2 Controller1 diubah, atur kecepatan RightMotor ke posisi Controller1 2 % lalu putar RightMotor ke depan. Tumpukan keempat berbunyi: Saat tombol Atas Controller1 ditekan, putar ArmMotor ke atas. Tumpukan kelima berbunyi: Saat tombol Atas Controller1 dilepas, hentikan ArmMotor. Tumpukan keenam berbunyi: Saat tombol Controller1 Down ditekan, putar ArmMotor ke bawah. Tumpukan ketujuh berbunyi: Saat tombol Controller1 Down dilepas, hentikan ArmMotor. Tumpukan kedelapan berbunyi: Saat tombol A Controller1 ditekan, putar ClawMotor hingga terbuka. Tumpukan kesembilan berbunyi: Saat tombol A Controller1 dilepas, hentikan ClawMotor. Tumpukan kesepuluh berbunyi: Saat Tombol B Pengontrol1 ditekan, putar ClawMotor hingga tertutup. Tumpukan kesebelas dan terakhir berbunyi: Saat tombol B Controller1 dilepas, hentikan ClawMotor.

Unduh file proyek VEXcode V5 "Opsi 3" >

Penjelasan Kode Opsi 3.

Potongan Kode Penjelasan
Tampilan dekat salah satu tumpukan blok dalam proyek VEXcode V5 Opsi 3. Tumpukan tersebut berbunyi: Saat dimulai, atur penghentian ArmMotor ke tahan, lalu atur penghentian ClawMotor ke tahan.
Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.
Tampilan dekat dari dua tumpukan blok dalam proyek VEXcode V5 Opsi 3. Tumpukan pertama berbunyi: Saat sumbu 3 Controller1 diubah, atur kecepatan LeftMotor ke posisi Controller1 3 % lalu putar LeftMotor ke depan. Tumpukan kedua berbunyi: Saat sumbu 2 Controller1 diubah, atur kecepatan RightMotor ke posisi Controller1 2 % lalu putar RightMotor ke depan.

 

Untuk memvisualisasikan tata letak tombol pada V5 Controller.

Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.

{When controller axis} Blok peristiwa digunakan untuk memicu perilaku tertentu ketika salah satu dari empat sumbu pada Pengendali diubah dengan menggunakan joystick.

Blok [Atur kecepatan motor] digunakan untuk mengatur kecepatan motor ke posisi Pengendali saat ini sepanjang sumbu A dan D. Ini sama saja dengan menyetel mobil ke posisi drive. Itu belum tentu membuat mobil bergerak, hanya mengaturnya.

Setiap sumbu joystick mengembalikan nilai antara -100 hingga +100, dan mengembalikan nilai nol saat dipusatkan. Ini berarti bahwa sumbu joystick, ketika ditekan, setara dengan -100% hingga 100%. Semakin jauh ke arah 100 atau -100 sumbu didorong, semakin cepat motor akan berputar.

Blok [Spin] kemudian digunakan untuk benar-benar menggerakkan motor. Ini sama saja dengan menekan gas pada mobil setelah arahnya sudah ditetapkan. Hal ini memungkinkan setiap motor dikontrol oleh salah satu dari empat sumbu Pengendali. 

Tampilan dekat dari empat tumpukan blok dalam proyek VEXcode V5 Opsi 3. Tumpukan pertama berbunyi: Saat tombol Atas Controller1 ditekan, putar ArmMotor ke atas. Tumpukan kedua berbunyi: Saat tombol Atas Controller1 dilepas, hentikan ArmMotor. Tumpukan ketiga berbunyi: Saat tombol Controller1 Down ditekan, putar ArmMotor ke bawah. Tumpukan keempat berbunyi: Saat tombol Controller1 Down dilepas, hentikan ArmMotor.

 

Clawbot digunakan untuk contoh kode ini. Bila tombol pada Pengendali digunakan untuk menaikkan dan menurunkan lengan, begitu tombol dilepaskan, lengan akan jatuh kembali karena gaya gravitasi. Mengatur lengan dan cakar ke "tahan" akan memastikan bahwa lengan dan cakar akan tetap di tempatnya bahkan setelah tombol pada Pengontrol dilepaskan.

{When controller axis} Blok peristiwa digunakan untuk memetakan perilaku tertentu ke tombol yang ditekan atau dilepaskan pada Pengontrol. Pada bagian kode ini, kondisi yang ditetapkan adalah jika tombol Atas atau Bawah ditekan. Jika demikian, perilaku tertentu akan terjadi, seperti mengangkat, menurunkan, atau berhenti.

Perhatikan bagian terakhir kode dalam proyek untuk Claw mengikuti penjelasan yang sama.

Ringkasan Opsi 3: Menggunakan Peristiwa

Keuntungan Keterbatasan Contoh Situasi
  • Dapat mengakomodasi pembuatan khusus, terutama drivetrain dengan lebih dari 4 motor
  • Dapat menetapkan beberapa perilaku ke satu tombol
  • Dapat menetapkan perilaku ke sumbu yang berbeda pada Pengontrol (berbeda dengan satu-satunya opsi Arcade Kiri, Arcade Kanan, Arcade Terpisah, dan Penggerak Tangki dalam Konfigurasi Perangkat)
  • Eksekusi kode yang lebih cepat dan dengan demikian, respons tombol (karena setiap kondisi dipanggil secara terpisah dan tidak tertanam dalam satu tumpukan kode)
  • Memerlukan pengetahuan pengkodean paling banyak tentang opsi (kondisi, loop, acara, dan pengetahuan tentang tombol/joystick pada Pengontrol)
  • Menggunakan Controller dengan robot yang dibuat khusus, terutama dengan drivetrain non-standar
  • Saat ingin menetapkan beberapa perilaku ke tombol tunggal tanpa jeda. Misalnya, saat Tombol Atas ditekan, Cakar dapat terbuka, bergerak maju, dan kemudian menutup di sekitar suatu objek.

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

Last Updated: