ตัวควบคุม#

การแนะนำ#

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

หน่วยประมวลผล IQ (รุ่นที่ 2) สามารถเชื่อมต่อกับตัวควบคุม IQ (รุ่นที่ 2) หรือ IQ (รุ่นที่ 1) ได้ โดยตัวควบคุม IQ (รุ่นที่ 1) ต้องติดตั้ง Smart Radio สีน้ำเงินไว้ด้วย

การทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้ คือพฤติกรรมของคอนโทรลเลอร์ที่ตั้งไว้ในเมนูอุปกรณ์ ใช้คำสั่ง 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

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

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

ผู้รับ#

.pressing#

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

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

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

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

ภาพด้านหน้าและด้านหลังของคอนโทรลเลอร์ IQ รุ่นที่ 2 โดยปุ่มทั้งหมดถูกไฮไลต์ด้วยสีเหลือง พื้นผิวของคอนโทรลเลอร์มีปุ่มจอยสติ๊กสองปุ่มอยู่ที่มุมบนซ้ายและขวา โดยมีปุ่ม E ขึ้นและลงอยู่ด้านล่างจอยสติ๊กซ้าย และปุ่ม F ขึ้นและลงอยู่ด้านล่างจอยสติ๊กขวา ด้านหลังของคอนโทรลเลอร์มีปุ่ม L ขึ้นและลง และปุ่ม R ขึ้นและลงอยู่ทางด้านซ้ายและด้านขวาตามลำดับ

ปุ่ม

สั่งการ

buttonEDown

controller.buttonEDown.pressing() — ปุ่ม E ▼

buttonEUp

controller.buttonEUp.pressing() — ปุ่ม E ▲

buttonFDown

controller.buttonFDown.pressing() — ปุ่ม F ▼

buttonFUp

controller.buttonFUp.pressing() — ปุ่ม F ▲

buttonL3

controller.buttonL3.pressing() — ปุ่ม จอยสติ๊กซ้าย เฉพาะคอนโทรลเลอร์ IQ (รุ่นที่ 2)

buttonLDown

controller.buttonLDown.pressing() — ปุ่ม L ▼

buttonLUp

controller.buttonLUp.pressing() — ปุ่ม L ▲

buttonR3

controller.buttonR3.pressing() — ปุ่ม จอยสติ๊กขวา เฉพาะคอนโทรลเลอร์ IQ (รุ่นที่ 2)

buttonRDown

controller.buttonRDown.pressing() — ปุ่ม R ▼

buttonRUp

controller.buttonRUp.pressing() — ปุ่ม R ▲

พารามิเตอร์

คำอธิบาย

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

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

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

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

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

ตัวควบคุม IQ รุ่นที่ 2 พร้อมแกนจอยสติ๊กทั้งสี่ที่ไฮไลต์ไว้ บนจอยสติ๊กด้านซ้าย แกน A คือแนวตั้ง และแกน B คือแนวนอน บนจอยสติ๊กด้านขวา แกน C คือแนวนอน และแกน D คือแนวตั้ง

แกน

สั่งการ

axisA

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

axisB

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

axisC

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

axisD

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

พารามิเตอร์

คำอธิบาย

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

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

.pressed#

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

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

ภาพด้านหน้าและด้านหลังของคอนโทรลเลอร์ IQ รุ่นที่ 2 โดยปุ่มทั้งหมดถูกไฮไลต์ด้วยสีเหลือง พื้นผิวของคอนโทรลเลอร์มีปุ่มจอยสติ๊กสองปุ่มอยู่ที่มุมบนซ้ายและขวา โดยมีปุ่ม E ขึ้นและลงอยู่ด้านล่างจอยสติ๊กซ้าย และปุ่ม F ขึ้นและลงอยู่ด้านล่างจอยสติ๊กขวา ด้านหลังของคอนโทรลเลอร์มีปุ่ม L ขึ้นและลง และปุ่ม R ขึ้นและลงอยู่ทางด้านซ้ายและด้านขวาตามลำดับ

ปุ่ม

สั่งการ

buttonEDown

controller.buttonEDown.pressed(callback, arg) — ปุ่ม E ▼

buttonEUp

controller.buttonEUp.pressed(callback, arg) — ปุ่ม E ▲

buttonFDown

controller.buttonFDown.pressed(callback, arg) — ปุ่ม F ▼

buttonFUp

controller.buttonFUp.pressed(callback, arg) — ปุ่ม F ▲

buttonL3

controller.buttonL3.pressed(callback, arg) — ปุ่ม จอยสติ๊กซ้าย สำหรับคอนโทรลเลอร์ IQ (รุ่นที่ 2) เท่านั้น

buttonLDown

controller.buttonLDown.pressed(callback, arg) — ปุ่ม L ▼

buttonLUp

controller.buttonLUp.pressed(callback, arg) — ปุ่ม L ▲

buttonR3

controller.buttonR3.pressed(callback, arg) — ปุ่ม จอยสติ๊กขวา เฉพาะคอนโทรลเลอร์ IQ (รุ่นที่ 2)

buttonRDown

controller.buttonRDown.pressed(callback, arg) — ปุ่ม R ▼

buttonRUp

controller.buttonRUp.pressed(callback, arg) — ปุ่ม R ▲

พารามิเตอร์

คำอธิบาย

callback

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

arg

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

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

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

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

ภาพด้านหน้าและด้านหลังของคอนโทรลเลอร์ IQ รุ่นที่ 2 โดยปุ่มทั้งหมดถูกไฮไลต์ด้วยสีเหลือง พื้นผิวของคอนโทรลเลอร์มีปุ่มจอยสติ๊กสองปุ่มอยู่ที่มุมบนซ้ายและขวา โดยมีปุ่ม E ขึ้นและลงอยู่ด้านล่างจอยสติ๊กซ้าย และปุ่ม F ขึ้นและลงอยู่ด้านล่างจอยสติ๊กขวา ด้านหลังของคอนโทรลเลอร์มีปุ่ม L ขึ้นและลง และปุ่ม R ขึ้นและลงอยู่ทางด้านซ้ายและด้านขวาตามลำดับ

ปุ่ม

สั่งการ

buttonEDown

controller.buttonEDown.released(callback, arg) — ปุ่ม E ▼

buttonEUp

controller.buttonEUp.released(callback, arg) — ปุ่ม E ▲

buttonFDown

controller.buttonFDown.released(callback, arg) — ปุ่ม F ▼

buttonFUp

controller.buttonFUp.released(callback, arg) — ปุ่ม F ▲

buttonL3

controller.buttonL3.released(callback, arg) — ปุ่ม จอยสติ๊กซ้าย สำหรับคอนโทรลเลอร์ IQ (รุ่นที่ 2) เท่านั้น

buttonLDown

controller.buttonLDown.released(callback, arg) — ปุ่ม L ▼

buttonLUp

controller.buttonLUp.released(callback, arg) — ปุ่ม L ▲

buttonR3

controller.buttonR3.released(callback, arg) — ปุ่ม จอยสติ๊กขวา สำหรับคอนโทรลเลอร์ IQ (รุ่นที่ 2) เท่านั้น

buttonRDown

controller.buttonRDown.released(callback, arg) — ปุ่ม R ▼

buttonRUp

controller.buttonRUp.released(callback, arg) — ปุ่ม R ▲

พารามิเตอร์

คำอธิบาย

callback

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

arg

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

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

controller.buttonEUp.released(stop_driving)

.changed#

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

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

ตัวควบคุม IQ รุ่นที่ 2 พร้อมแกนจอยสติ๊กทั้งสี่ที่ไฮไลต์ไว้ บนจอยสติ๊กด้านซ้าย แกน A คือแนวตั้ง และแกน B คือแนวนอน บนจอยสติ๊กด้านขวา แกน C คือแนวนอน และแกน D คือแนวตั้ง

แกน

สั่งการ

axisA

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

axisB

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

axisC

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

axisD

controller.axisD.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 right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

ผู้สร้าง#

Controller#

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

Usage:
Controller()

พารามิเตอร์

คำอธิบาย

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

# Create a Controller object
my_controller = Controller()