ตัวควบคุม#

การแนะนำ#

ตัวควบคุม VEX EXP มีปุ่มกดและจอยสติ๊กสองอัน สามารถใช้เมธอดของตัวควบคุมเพื่อตรวจสอบการกดปุ่ม อ่านการเคลื่อนไหวของจอยสติ๊ก เปิดหรือปิดการใช้งานการทำงานของตัวควบคุมที่กำหนดค่าไว้ หรือเรียกใช้ฟังก์ชันเมื่อเกิดเหตุการณ์ของตัวควบคุม

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

หน้านี้ใช้ชื่อคอนโทรลเลอร์ controller เป็นตัวอย่าง กรุณาแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ

ด้านล่างนี้คือรายการวิธีการทั้งหมดที่มีให้เลือกใช้:

การดำเนินการ — เปิดหรือปิดการทำงานของตัวควบคุมที่กำหนดค่าไว้

  • remote_control_code_enabled — เปิดใช้งานหรือปิดใช้งานการดำเนินการควบคุมที่กำหนดค่าไว้ในเมนูอุปกรณ์

ตัวอ่านค่า — อ่านสถานะของปุ่มและตำแหน่งของจอยสติ๊ก

  • .pressing — คืนค่าว่าปุ่มที่ระบุถูกกดอยู่หรือไม่

  • .position — ส่งคืนตำแหน่งของแกนจอยสติ๊กที่ระบุ

ฟังก์ชันเรียกกลับ (Callbacks) — เรียกใช้ฟังก์ชันเมื่ออินพุตจากคอนโทรลเลอร์เปลี่ยนแปลง

  • .pressed — เรียกใช้ฟังก์ชันเมื่อกดปุ่มที่ระบุ

  • .released — เรียกใช้ฟังก์ชันเมื่อปล่อยปุ่มที่ระบุ

  • .changed — เรียกใช้ฟังก์ชันเมื่อตำแหน่งของจอยสติ๊กเปลี่ยนไปตามแกนที่กำหนด

ตัวสร้าง — สร้างอ็อบเจ็กต์ Controller ด้วยตนเอง

  • Controller — สร้างอ็อบเจ็กต์ Controller

การกระทำ#

remote_control_code_enabled#

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

Usage:
remote_control_code_enabled = state

ค่า

คำอธิบาย

True

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

False

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

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

ผู้รับ#

.pressing#

.pressing จะส่งคืนค่าว่าปุ่มใดปุ่มหนึ่งบนคอนโทรลเลอร์กำลังถูกกดอยู่หรือไม่ ต้องเรียกใช้เมธอดนี้กับออบเจ็กต์ปุ่มที่ระบุ เช่น controller.buttonA.

  • True — กำลังกดปุ่มที่ระบุอยู่

  • False — ไม่ได้กดปุ่มที่ระบุ

วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ด้านหน้าและด้านบนของคอนโทรลเลอร์ EXP โดยมีจอยสติ๊ก ปุ่มลูกศร และปุ่มแอ็คชั่นไฮไลต์ด้วยสีเหลือง บนพื้นผิวของคอนโทรลเลอร์มีจอยสติ๊กสองอันอยู่ทางซ้ายและขวา โดยมีปุ่มลูกศรขึ้นและลงอยู่ทางซ้าย และปุ่ม A และ B อยู่ทางขวา ด้านบนของคอนโทรลเลอร์มีปุ่ม L1 และ L2 อยู่ทางซ้าย และปุ่ม R1 และ R2 อยู่ทางขวา

ปุ่ม

สั่งการ

buttonA

controller.buttonA.pressing() — ปุ่ม A

buttonB

controller.buttonB.pressing() — ปุ่ม B

buttonDown

controller.buttonDown.pressing() — ปุ่ม ลง

buttonUp

controller.buttonUp.pressing() — ปุ่ม ขึ้น

buttonL1

controller.buttonL1.pressing() — ปุ่ม L1

buttonL2

controller.buttonL2.pressing() — ปุ่ม L2

buttonL3

controller.buttonL3.pressing() — ปุ่ม L3

buttonR1

controller.buttonR1.pressing() — ปุ่ม R1

buttonR2

controller.buttonR2.pressing() — ปุ่ม R2

buttonR3

controller.buttonR3.pressing() — ปุ่ม R3

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Turn right while L1 is pressed
while True:
    if controller.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position ส่งคืนตำแหน่งของแกนจอยสติ๊กเป็นตัวเลขตั้งแต่ -100 ถึง 100

ต้องเรียกใช้เมธอดนี้กับออบเจ็กต์แกนเฉพาะ เช่น controller.axis1

วิธีใช้:
สามารถใช้วัตถุแกนใดก็ได้ที่มีอยู่กับวิธีการนี้:

ด้านหน้าของคอนโทรลเลอร์ EXP แสดงหมายเลขแกนจอยสติ๊กที่ไฮไลต์ด้วยสีแดง บนพื้นผิวของคอนโทรลเลอร์ จอยสติ๊กด้านซ้ายมีป้ายกำกับว่า แกน 4 สำหรับการเคลื่อนที่ซ้ายและขวา และแกน 3 สำหรับการเคลื่อนที่ขึ้นและลง ในขณะที่จอยสติ๊กด้านขวามีป้ายกำกับว่า แกน 1 สำหรับการเคลื่อนที่ซ้ายและขวา และแกน 2 สำหรับการเคลื่อนที่ขึ้นและลง

แกน

สั่งการ

axis1

controller.axis1.position() — แกนแนวนอนของจอยสติ๊กด้านขวา

axis2

controller.axis2.position() — แกนแนวตั้งของจอยสติ๊กด้านขวา

axis3

controller.axis3.position() — แกนแนวตั้งของจอยสติ๊กด้านซ้าย

axis4

controller.axis4.position() — แกนแนวนอนของจอยสติ๊กด้านซ้าย

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axis4.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

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

.pressed#

.pressed กดปุ่มนั้น

วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ด้านหน้าและด้านบนของคอนโทรลเลอร์ EXP โดยมีจอยสติ๊ก ปุ่มลูกศร และปุ่มแอ็คชั่นไฮไลต์ด้วยสีเหลือง บนพื้นผิวของคอนโทรลเลอร์มีจอยสติ๊กสองอันอยู่ทางซ้ายและขวา โดยมีปุ่มลูกศรขึ้นและลงอยู่ทางซ้าย และปุ่ม A และ B อยู่ทางขวา ด้านบนของคอนโทรลเลอร์มีปุ่ม L1 และ L2 อยู่ทางซ้าย และปุ่ม R1 และ R2 อยู่ทางขวา

ปุ่ม

สั่งการ

buttonA

controller.buttonA.pressed(callback, arg) — ปุ่ม A

buttonB

controller.buttonB.pressed(callback, arg) — ปุ่ม B

buttonDown

controller.buttonDown.pressed(callback, arg) — ปุ่ม ลง

buttonUp

controller.buttonUp.pressed(callback, arg) — ปุ่ม ขึ้น

buttonL1

controller.buttonL1.pressed(callback, arg) — ปุ่ม L1

buttonL2

controller.buttonL2.pressed(callback, arg) — ปุ่ม L2

buttonL3

controller.buttonL3.pressed(callback, arg) — ปุ่ม L3

buttonR1

controller.buttonR1.pressed(callback, arg) — ปุ่ม R1

buttonR2

controller.buttonR2.pressed(callback, arg) — ปุ่ม R2

buttonR3

controller.buttonR3.pressed(callback, arg) — ปุ่ม R3

พารามิเตอร์

คำอธิบาย

callback

A previously defined function to run each time the specified button is pressed.

arg

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

# Drive forward when R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.pressed(drive_forward)

.released#

.released จะเรียกใช้ฟังก์ชันเมื่อปล่อยปุ่มที่ระบุ เมื่อใช้งานแล้ว ฟังก์ชันจะทำงานโดยอัตโนมัติทุกครั้งที่ปล่อยปุ่มนั้น

วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ด้านหน้าและด้านบนของคอนโทรลเลอร์ EXP โดยมีจอยสติ๊ก ปุ่มลูกศร และปุ่มแอ็คชั่นไฮไลต์ด้วยสีเหลือง บนพื้นผิวของคอนโทรลเลอร์มีจอยสติ๊กสองอันอยู่ทางซ้ายและขวา โดยมีปุ่มลูกศรขึ้นและลงอยู่ทางซ้าย และปุ่ม A และ B อยู่ทางขวา ด้านบนของคอนโทรลเลอร์มีปุ่ม L1 และ L2 อยู่ทางซ้าย และปุ่ม R1 และ R2 อยู่ทางขวา

ปุ่ม

สั่งการ

buttonA

controller.buttonA.released(callback, arg) — ปุ่ม A

buttonB

controller.buttonB.released(callback, arg) — ปุ่ม B

buttonDown

controller.buttonDown.released(callback, arg) — ปุ่ม ลง

buttonUp

controller.buttonUp.released(callback, arg) — ปุ่ม ขึ้น

buttonL1

controller.buttonL1.released(callback, arg) — ปุ่ม L1

buttonL2

controller.buttonL2.released(callback, arg) — ปุ่ม L2

buttonL3

controller.buttonL3.released(callback, arg) — ปุ่ม L3

buttonR1

controller.buttonR1.released(callback, arg) — ปุ่ม R1

buttonR2

controller.buttonR2.released(callback, arg) — ปุ่ม R2

buttonR3

controller.buttonR3.released(callback, arg) — ปุ่ม R3

พารามิเตอร์

คำอธิบาย

callback

A previously defined function to run each time the specified button is released.

arg

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

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

.changed#

.changed จะเรียกใช้ฟังก์ชันเมื่อตำแหน่งของจอยสติ๊กเปลี่ยนแปลงไปตามแกนที่ระบุ เมื่อใช้งานแล้ว ฟังก์ชันจะทำงานโดยอัตโนมัติทุกครั้งที่ตำแหน่งของจอยสติ๊กเปลี่ยนแปลงไปตามแกนนั้น

วิธีใช้:
สามารถใช้วัตถุแกนใดก็ได้ที่มีอยู่กับวิธีการนี้:

ด้านหน้าของคอนโทรลเลอร์ EXP แสดงหมายเลขแกนจอยสติ๊กที่ไฮไลต์ด้วยสีแดง บนพื้นผิวของคอนโทรลเลอร์ จอยสติ๊กด้านซ้ายมีป้ายกำกับว่า แกน 4 สำหรับการเคลื่อนที่ซ้ายและขวา และแกน 3 สำหรับการเคลื่อนที่ขึ้นและลง ในขณะที่จอยสติ๊กด้านขวามีป้ายกำกับว่า แกน 1 สำหรับการเคลื่อนที่ซ้ายและขวา และแกน 2 สำหรับการเคลื่อนที่ขึ้นและลง

แกน

สั่งการ

axis1

controller.axis1.changed(callback, arg) — แกนแนวนอนของจอยสติ๊กด้านขวา

axis2

controller.axis2.changed(callback, arg) — แกนแนวตั้งของจอยสติ๊กด้านขวา

axis3

controller.axis3.changed(callback, arg) — แกนแนวตั้งของจอยสติ๊กด้านซ้าย

axis4

controller.axis4.changed(callback, arg) — แกนแนวนอนของจอยสติ๊กด้านซ้าย

พารามิเตอร์

คำอธิบาย

callback

A previously defined function to run each time the joystick’s position changes along the specified axis.

arg

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

# Play a sound when the left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

ผู้สร้าง#

Controller#

Controller สร้างอ็อบเจ็กต์ Controller การสร้างอ็อบเจ็กต์ Controller ด้วยตนเองนั้นจำเป็นเฉพาะเมื่อกำหนดค่าคอนโทรลเลอร์นอก VEXcode เท่านั้น

Usage:
Controller()

พารามิเตอร์

คำอธิบาย

คอนสตรัคเตอร์นี้ไม่มีพารามิเตอร์

# Create a Controller object
my_controller = Controller()