ตัวควบคุม#

การแนะนำ#

คลาสคอนโทรลเลอร์ controller แทนคอนโทรลเลอร์ VEX EXP ที่เชื่อมต่อกับ EXP Brain อ็อบเจ็กต์คอนโทรลเลอร์ controller สามารถใช้เพื่อเข้าถึงค่าแกนจอยสติ๊ก อ่านสถานะปุ่ม ลงทะเบียนการเรียกกลับของปุ่มหรือจอยสติ๊ก ทำให้คอนโทรลเลอร์สั่น และตรวจสอบว่าคอนโทรลเลอร์เชื่อมต่ออยู่หรือไม่

VEX EXP สามารถใช้งานร่วมกับ V5 Controller ได้ โปรดดู V5 Controller API สำหรับข้อมูลเพิ่มเติม

เมื่อมีการกำหนดค่าคอนโทรลเลอร์อย่างน้อยหนึ่งตัวในหน้าต่างอุปกรณ์ VEXcode EXP จะให้ค่า RemoteControlCodeEnabledด้วย ตัวแปรส่วนกลางนี้จะเปิดหรือปิดใช้งานการทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้ในเมนูอุปกรณ์

คลาสที่สืบทอดมา#

คลาสคอนโทรลเลอร์ controller มีคลาสย่อยต่อไปนี้:

  • Axis - ให้การเข้าถึงค่าอินพุตแกนจอยสติ๊กและเหตุการณ์การเปลี่ยนแปลง

  • Button - ให้สิทธิ์ในการเข้าถึงสถานะปุ่มและการเรียกกลับเหตุการณ์ปุ่ม

ผู้สร้าง#

1 - สร้างคอนโทรลเลอร์โดยใช้ประเภทคอนโทรลเลอร์หลัก โดยทั่วไปจะใช้เมื่อเชื่อมต่อคอนโทรลเลอร์เพียงตัวเดียว

controller();

2 - สร้างคอนโทรลเลอร์สำหรับประเภทคอนโทรลเลอร์ที่ระบุ ใช้เมื่อเชื่อมต่อคอนโทรลเลอร์สองตัว

controller(
    controllerType id );

ฟังก์ชันที่มีให้ใช้งาน

controller();

controller(controllerType id);

พารามิเตอร์

พิมพ์

คำอธิบาย

id

controllerType

ตัวเลือกเสริม ประเภทคอนโทรลเลอร์ที่จะสร้าง: primary สำหรับคอนโทรลเลอร์หลักที่เชื่อมต่อกับสมอง หรือ partner สำหรับคอนโทรลเลอร์ตัวที่สองที่เชื่อมต่อกับสมอง

หมายเหตุ

สามารถสร้างคอนโทรลเลอร์หลัก primary ได้เพียงหนึ่งตัว และคอนโทรลเลอร์พันธมิตร partner ได้เพียงหนึ่งตัวในโปรเจกต์เดียว

ตัวอย่าง

// Create the primary controller
controller Controller1 = controller();

// Create a partner controller
controller Controller2 = controller(partner);

ตัวทำลาย#

~คอนโทรลเลอร์#

~controller destroys the controller object and releases associated resources.

ฟังก์ชันที่มีให้ใช้งาน

~controller();

พารามิเตอร์#

พารามิเตอร์

พิมพ์

คำอธิบาย

id

controllerType

ประเภทของตัวควบคุมที่กำลังสร้าง:

  • primary - ตัวควบคุมหลักที่เชื่อมต่อกับสมอง
  • partner - ตัวควบคุมคู่หู (ตัวที่สอง) ที่เชื่อมต่อกับสมอง

หมายเหตุ#

  • ในโครงการเดียวจะมีตัวควบคุมหลัก primary และตัวควบคุมพันธมิตร partner เท่านั้น

ตัวอย่าง#

// Create an EXP controller instance
controller Controller = controller();

ฟังก์ชันสมาชิก#

คลาสคอนโทรลเลอร์ controller ประกอบด้วยฟังก์ชันสมาชิกต่อไปนี้:

  • rumble - สั่นตัวควบคุมโดยใช้รูปแบบ

  • installed - ตรวจสอบว่าตัวควบคุมเชื่อมต่อกับสมองหรือไม่

เสียงดังกึกก้อง#

rumble ทำให้ตัวควบคุมสั่นตามรูปแบบที่กำหนด ในรูปแบบการสั่นนั้น จุดคือการสั่นสั้นๆ ขีดคือการสั่นยาวๆ และช่องว่างคือการหยุดชั่วคราว

ฟังก์ชันที่มีให้ใช้งาน

void rumble(const char *str);

พารามิเตอร์

พิมพ์

คำอธิบาย

str

const char *

เส้นที่ประกอบด้วยจุด ขีด และช่องว่าง ซึ่งแสดงถึงรูปแบบการสั่นสะเทือน

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

// Rumble with a short-short-long pattern
Controller1.rumble("..-");

เกตเตอร์#

ติดตั้ง#

installed ส่งคืนสถานะว่าคอนโทรลเลอร์เชื่อมต่อกับ Brain หรือไม่

ฟังก์ชันที่มีให้ใช้งาน

bool installed();

พารามิเตอร์

ฟังก์ชันนี้ไม่มีพารามิเตอร์

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • true - The controller is installed/connected.
  • false - The controller is not installed/connected.

ตัวแปรทั่วโลก#

เปิดใช้งานรหัสควบคุมระยะไกล#

RemoteControlCodeEnabled เปิดใช้งานหรือปิดใช้งานการทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้ในเมนูอุปกรณ์ การทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้จะเปิดใช้งานโดยค่าเริ่มต้น

Usage:
RemoteControlCodeEnabled = state;

ค่า

คำอธิบาย

true

เปิดใช้งานการดำเนินการที่กำหนดค่าไว้ในคอนโทรลเลอร์

false

ปิดใช้งานการทำงานที่กำหนดค่าไว้ในคอนโทรลเลอร์

Values
  • true - Controller-configured actions are enabled.
  • false - Controller-configured actions are disabled.
Notes
  • โดยค่าเริ่มต้น การดำเนินการที่กำหนดค่าไว้ในคอนโทรลเลอร์จะเปิดใช้งานอยู่

  • ตัวแปรนี้จะใช้งานได้เฉพาะเมื่อใช้ VEXcode เท่านั้น

Examples
// Drive forward or backward using the left joystick
RemoteControlCodeEnabled = false;

while (true) {
  if (Controller1.Axis3.position() > 0) {
    Drivetrain.drive(forward);
  }
  else if (Controller1.Axis3.position() < 0) {
    Drivetrain.drive(reverse);
  }
  // Press A to use controller configured actions again
  else if (Controller1.ButtonA.pressing()) {
    break;
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

RemoteControlCodeEnabled = true;