ปุ่ม#

การแนะนำ#

คลาสปุ่ม button เป็นคลาสที่สืบทอดมาจากคลาส controller โดยจะให้สิทธิ์ในการเข้าถึงสถานะปุ่มของตัวควบคุมและฟังก์ชันเรียกกลับเหตุการณ์ปุ่ม

วัตถุปุ่ม button จะถูกเข้าถึงผ่านวัตถุตัวควบคุม controller โดยไม่ได้สร้างขึ้นโดยตรง

ด้านหน้าและด้านหลังของคอนโทรลเลอร์ V5 โดยปุ่มต่างๆ ถูกไฮไลต์ด้วยสีเหลือง บนพื้นผิวของคอนโทรลเลอร์จะมีปุ่มลูกศรขึ้น ลง ซ้าย และขวาอยู่ทางด้านซ้าย และปุ่ม X, A, B, Y เรียงตามเข็มนาฬิกาจากตำแหน่ง 12 นาฬิกาอยู่ทางด้านขวา ด้านหลังของคอนโทรลเลอร์จะมีปุ่ม L1, L2, R1 และ R2 อยู่ทางด้านซ้ายและด้านขวาตามลำดับ

เข้าถึง#

คลาสคอนโทรลเลอร์ controller มีอ็อบเจ็กต์ปุ่มดังต่อไปนี้ โดยแต่ละอ็อบเจ็กต์เป็นอินสแตนซ์ของคลาสปุ่ม button

วัตถุ

ตัวอย่างการใช้งาน

คำอธิบาย

ButtonA

Controller.ButtonA.pressing()

ปุ่ม A

ButtonB

Controller.ButtonB.pressing()

ปุ่ม B

ButtonX

Controller.ButtonX.pressing()

ปุ่ม X

ButtonY

Controller.ButtonY.pressing()

ปุ่ม Y

ButtonDown

Controller.ButtonDown.pressing()

ปุ่ม ลง

ButtonUp

Controller.ButtonUp.pressing()

ปุ่ม ขึ้น

ButtonLeft

Controller.ButtonLeft.pressing()

ปุ่ม ซ้าย

ButtonRight

Controller.ButtonRight.pressing()

ปุ่ม ขวา

ButtonL1

Controller.ButtonL1.pressing()

ปุ่ม L1

ButtonL2

Controller.ButtonL2.pressing()

ปุ่ม L2

ButtonR1

Controller.ButtonR1.pressing()

ปุ่ม R1

ButtonR2

Controller.ButtonR2.pressing()

ปุ่ม R2

หมายเหตุ#

  • ก่อนใช้งานฟังก์ชันสมาชิกปุ่ม button ให้สร้างอ็อบเจ็กต์ตัวควบคุม controller ก่อน

// Create a Controller object
controller Controller = controller();

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

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

Getter — อ่านสถานะของปุ่ม

  • pressing — ส่งคืนว่าปุ่มถูกกดหรือไม่

ฟังก์ชันเรียกกลับ — เรียกใช้ฟังก์ชันเมื่อเกิดเหตุการณ์กับปุ่ม

  • pressed — ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อกดปุ่ม

  • released — ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อปล่อยปุ่ม

เกตเตอร์#

การกด#

การกดปุ่ม pressing จะแสดงว่าปุ่มนั้นกำลังถูกกดอยู่หรือไม่

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

bool pressing() const;

พารามิเตอร์

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

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

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

  • true — กำลังกดปุ่มอยู่

  • false — ไม่ได้กดปุ่ม

ตัวอย่าง

// Turn right while L1 is pressed
while (true) {
  if (Controller.ButtonL1.pressing()) {
    Drivetrain.turn(right);
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

การเรียกกลับ#

กด#

pressed registers a function that runs when the button is pressed.

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

void pressed(void (* callback)(void)) const;

พารามิเตอร์

พิมพ์

คำอธิบาย

callback

void (*)(void)

ฟังก์ชันที่จะทำงานเมื่อกดปุ่ม

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

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

ตัวอย่าง

กำหนดฟังก์ชัน callback ไว้ภายนอก main.

// Drive forward when A is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 100, mm);
}

ลงทะเบียนฟังก์ชันเรียกกลับภายใน main.

int main() {
  vexcodeInit();

  // Run driveForward when A is pressed
  Controller.ButtonA.pressed(driveForward);
}

ปล่อยแล้ว#

released ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อปล่อยปุ่ม

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

void released(void (* callback)(void)) const;

พารามิเตอร์

พิมพ์

คำอธิบาย

callback

void (*)(void)

ฟังก์ชันที่จะทำงานเมื่อปล่อยปุ่ม

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

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

ตัวอย่าง

กำหนดฟังก์ชัน callback ไว้ภายนอก main.

// Stop the drivetrain when A is released
void stopDriving() {
  Drivetrain.stop();
}

ลงทะเบียนฟังก์ชันเรียกกลับภายใน main.

int main() {
  vexcodeInit();

  // Run stopDriving when A is released
  Controller.ButtonA.released(stopDriving);
}