Kode Pengontrol Kustom di VEXcode EXP

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 EXP. 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 EXP. 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 BaseBot 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 EXP dengan opsi Pengontrol ditampilkan. Diagram kontrol tombol memperlihatkan bahwa dua joystick menggerakkan robot dalam konfigurasi penggerak tangki. Tombol Atas dan Bawah mengendalikan ArmMotorGroup, dan tombol sumbu R mengendalikan 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 build standar seperti BaseBot, Clawbot, atau modifikasi sederhana dari build standar tersebut. Misalnya, BaseBot dengan intake yang terpasang di bagian depan yang dikontrol 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 EXP dengan proyek blok Opsi 2 dibuka. Proyek ini memiliki setumpuk blok dan perangkat yang dikonfigurasi. Menu Perangkat dibuka di samping dan mencantumkan perangkat berikut: ArmMotor pada port 3, ClawMotor pada port 4, Controller, LeftMotor pada port 6, dan RightMotor pada port 10. Terakhir ada tumpukan blok untuk menangani masukan pengontrol. Tumpukan tersebut bertuliskan Saat dimulai, atur ArmMotor berhenti ke tahan dan atur ClawMotor berhenti ke tahan. Sisa tumpukan tersebut termuat dalam loop Forever. Bunyinya Selamanya, atur kecepatan Motor Kiri ke posisi Pengendali 3 %, putar Motor Kiri ke depan, atur kecepatan Motor Kanan ke posisi Pengendali 2 %, dan putar Motor Kanan ke depan. Berikutnya, jika Controller Atas ditekan maka ArmMotor akan berputar ke atas, jika Controller E Bawah ditekan maka ArmMotor akan berputar ke bawah, jika tidak maka ArmMotor akan berhenti. Terakhir, jika Pengendali A ditekan maka putar ClawMotor hingga terbuka, jika tidak, jika Pengendali B ditekan maka putar ClawMotor hingga tertutup, dan jika tidak, hentikan ClawMotor.

Unduh file proyek VEXcode EXP "Opsi 2" >

Penjelasan Kode Opsi 2.

Potongan Kode

Penjelasan

Tampilan dekat tumpukan blok dalam proyek VEXcode EXP Opsi 2. Dua blok disorot dan berada di luar loop Forever tumpukan, yaitu blok yang bertuliskan set ArmMotor stopping to hold dan blok yang bertuliskan 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 dalam proyek VEXcode EXP Opsi 2. Empat blok disorot di dalam tumpukan Forever loop. Mereka membaca Selamanya, mengatur kecepatan Motor Kiri ke posisi Pengendali 3 %, memutar Motor Kiri ke depan, mengatur kecepatan Motor Kanan ke posisi Pengendali 2 %, dan memutar Motor Kanan ke depan. Diagram Pengontrol EXP dengan tombol dan joystick yang diberi label. Pemandangannya dari depan pengontrol. Sumbu joystick kiri diberi label 3 dan 4. Tombol tengah joystick kiri diberi label L3. Dua tombol bundar di bawah joystick kiri diberi label Atas dan Bawah. Sumbu joystick kanan diberi label 1 dan 2. Tombol tengah joystick kanan diberi label R3. Dua tombol bundar di bawah joystick kanan diberi label A dan B.

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 dalam proyek VEXcode EXP Opsi 2. Blok if, else if, else disorot di dalam loop Forever tumpukan. Bunyinya jika Pengendali Atas ditekan maka ArmMotor berputar ke atas, jika tidak Pengendali Bawah ditekan maka ArmMotor berputar ke bawah, dan jika tidak ArmMotor 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 dibuka. Proyek ini memiliki 11 tumpukan blok kecil dan telah mengonfigurasi perangkat. Menu Perangkat dibuka di samping dan mencantumkan perangkat berikut: ArmMotor pada port 3, ClawMotor pada port 4, Controller, LeftMotor pada port 6, dan RightMotor pada port 10. Terakhir ada 11 tumpukan blok kecil yang menangani masukan Pengendali. Tumpukan pertama berbunyi Saat dimulai, atur ArmMotor berhenti ke tahan dan kemudian atur ClawMotor berhenti ke tahan. Tumpukan kedua berbunyi Bila sumbu pengontrol 3 diubah, atur kecepatan LeftMotor ke posisi Pengontrol 3 % lalu putar LeftMotor ke depan. Tumpukan ketiga berbunyi Bila sumbu Pengendali 2 diubah, atur kecepatan MotorKanan ke posisi Pengendali 2 % lalu putar MotorKanan ke depan. Tumpukan keempat terbaca Saat tombol Pengontrol Atas ditekan, putar ArmMotor ke atas. Tumpukan kelima berbunyi Saat tombol Pengontrol Atas dilepas, hentikan ArmMotor. Tumpukan keenam terbaca Saat tombol Pengontrol Bawah ditekan, putar ArmMotor ke bawah. Tumpukan ketujuh berbunyi Saat tombol Pengontrol Bawah dilepas, hentikan ArmMotor. Tumpukan kedelapan terbaca Saat tombol Pengontrol A ditekan, putar ClawMotor hingga terbuka. Tumpukan kesembilan berbunyi Saat tombol Pengontrol A dilepaskan, hentikan ClawMotor. Tumpukan kesepuluh terbaca Saat Tombol Pengontrol B ditekan, putar ClawMotor hingga tertutup. Tumpukan kesebelas dan terakhir berbunyi Saat tombol Pengontrol B dilepaskan, hentikan ClawMotor.

Unduh file proyek VEXcode EXP "Opsi 3" >

Penjelasan Kode Opsi 3.

Potongan Kode

Penjelasan

Tampilan dekat satu tumpukan blok dalam proyek VEXcode EXP Opsi 3. Tumpukan tersebut bertuliskan Saat dimulai, atur ArmMotor berhenti ke tahan dan kemudian atur ClawMotor berhenti 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 dua tumpukan blok dalam proyek VEXcode EXP Opsi 3. Tumpukan pertama terbaca Saat sumbu Pengontrol 3 diubah, atur kecepatan Motor Kiri ke posisi Pengontrol 3 % lalu putar Motor Kiri ke depan. Tumpukan kedua berbunyi Bila sumbu Pengendali 2 diubah, atur kecepatan MotorKanan ke posisi Pengendali 2 % lalu putar MotorKanan ke depan. Diagram Pengontrol EXP dengan tombol dan joystick yang diberi label. Pemandangannya dari depan pengontrol. Sumbu joystick kiri diberi label 3 dan 4. Tombol tengah joystick kiri diberi label L3. Dua tombol bundar di bawah joystick kiri diberi label Atas dan Bawah. Sumbu joystick kanan diberi label 1 dan 2. Tombol tengah joystick kanan diberi label R3. Dua tombol bundar di bawah joystick kanan diberi label A dan B.

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 empat tumpukan blok dalam proyek VEXcode EXP Opsi 3. Tumpukan pertama terbaca Saat tombol Pengontrol Atas ditekan, putar ArmMotor ke atas. Tumpukan kedua berbunyi Saat tombol Pengontrol Atas dilepas, hentikan ArmMotor. Tumpukan ketiga terbaca Saat tombol Pengontrol Bawah ditekan, putar ArmMotor ke bawah. Tumpukan keempat berbunyi Saat tombol Pengontrol Bawah 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: