ตัวควบคุม#
การแนะนำ#
ตัวควบคุม VEX IQ (รุ่นที่ 2) มีปุ่มกดและจอยสติ๊กสองอัน สามารถใช้เมธอดของตัวควบคุมเพื่อตรวจสอบการกดปุ่ม อ่านการเคลื่อนไหวของจอยสติ๊ก เปิดหรือปิดการใช้งานการทำงานของตัวควบคุมที่ตั้งค่าไว้ หรือเรียกใช้ฟังก์ชันเมื่อเกิดเหตุการณ์ของตัวควบคุม
หน่วยประมวลผล IQ (รุ่นที่ 2) สามารถเชื่อมต่อกับตัวควบคุม IQ (รุ่นที่ 2) หรือ IQ (รุ่นที่ 1) ได้ โดยตัวควบคุม IQ (รุ่นที่ 1) ต้องติดตั้ง Smart Radio สีน้ำเงินไว้ด้วย
การทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้ คือพฤติกรรมของคอนโทรลเลอร์ที่ตั้งไว้ในเมนูอุปกรณ์ ใช้คำสั่ง remote_control_code_enabled เพื่อเปิดใช้งานหรือปิดใช้งานการทำงานที่กำหนดค่าไว้เหล่านั้นชั่วคราวในระหว่างโครงการ
หน้านี้ใช้ชื่อคอนโทรลเลอร์ controller เป็นตัวอย่าง กรุณาแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ
ด้านล่างนี้คือรายการวิธีการทั้งหมดที่มีให้เลือกใช้:
การดำเนินการ — เปิดหรือปิดการทำงานของตัวควบคุมที่กำหนดค่าไว้
remote_control_code_enabled— เปิดใช้งานหรือปิดใช้งานการดำเนินการควบคุมที่กำหนดค่าไว้ในเมนูอุปกรณ์
ตัวอ่านค่า — อ่านสถานะของปุ่มและตำแหน่งของจอยสติ๊ก
ฟังก์ชันเรียกกลับ (Callbacks) — เรียกใช้ฟังก์ชันเมื่ออินพุตจากคอนโทรลเลอร์เปลี่ยนแปลง
.pressed— เรียกใช้ฟังก์ชันเมื่อกดปุ่มที่ระบุ.released— เรียกใช้ฟังก์ชันเมื่อปล่อยปุ่มที่ระบุ.changed— เรียกใช้ฟังก์ชันเมื่อตำแหน่งของจอยสติ๊กเปลี่ยนไปตามแกนที่กำหนด
ตัวสร้าง — สร้างอ็อบเจ็กต์ Controller ด้วยตนเอง
Controller— สร้างอ็อบเจ็กต์ Controller
การกระทำ#
remote_control_code_enabled#
remote_control_code_enabled เป็นตัวแปรที่ใช้เปิดหรือปิดการใช้งานการทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้ในเมนูอุปกรณ์ โดยค่าเริ่มต้น การทำงานของคอนโทรลเลอร์ที่กำหนดค่าไว้จะถูกเปิดใช้งาน
Usage:
remote_control_code_enabled = state
ค่า |
คำอธิบาย |
|---|---|
|
เปิดใช้งานการดำเนินการที่กำหนดค่าไว้ในคอนโทรลเลอร์ |
|
ปิดใช้งานการทำงานที่กำหนดค่าไว้ในคอนโทรลเลอร์ |
# 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— ไม่ได้กดปุ่มที่ระบุ
วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ปุ่ม |
สั่งการ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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
วิธีใช้:
สามารถใช้วัตถุแกนใดก็ได้ที่มีอยู่กับวิธีการนี้:

แกน |
สั่งการ |
|---|---|
|
|
|
|
|
|
|
|
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
# 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 กดปุ่มนั้น
วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ปุ่ม |
สั่งการ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
A previously defined function to run each time the specified button is pressed. |
|
ไม่บังคับ ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้เหตุการณ์กับพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม |
# Drive forward when E Up is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 100, MM)
controller.buttonEUp.pressed(drive_forward)
.released#
.released จะเรียกใช้ฟังก์ชันเมื่อปล่อยปุ่มที่ระบุ เมื่อใช้งานแล้ว ฟังก์ชันจะทำงานโดยอัตโนมัติทุกครั้งที่ปล่อยปุ่มนั้น
วิธีใช้:
สามารถใช้วัตถุปุ่มที่มีอยู่หนึ่งรายการกับวิธีการนี้ได้:

ปุ่ม |
สั่งการ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
A previously defined function to run each time the specified button is released. |
|
ไม่บังคับ ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้เหตุการณ์กับพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม |
# Stop driving when E Up is released
def stop_driving():
drivetrain.stop()
controller.buttonEUp.released(stop_driving)
.changed#
.changed จะเรียกใช้ฟังก์ชันเมื่อตำแหน่งของจอยสติ๊กเปลี่ยนแปลงไปตามแกนที่ระบุ เมื่อใช้งานแล้ว ฟังก์ชันจะทำงานโดยอัตโนมัติทุกครั้งที่ตำแหน่งของจอยสติ๊กเปลี่ยนแปลงไปตามแกนนั้น
วิธีใช้:
สามารถใช้วัตถุแกนใดก็ได้ที่มีอยู่กับวิธีการนี้:

แกน |
สั่งการ |
|---|---|
|
|
|
|
|
|
|
|
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
A previously defined function to run each time the joystick’s position changes along the specified axis. |
|
ไม่บังคับ ทูเปิลที่มีอาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันเรียกกลับ ดู การใช้เหตุการณ์กับพารามิเตอร์ สำหรับข้อมูลเพิ่มเติม |
# 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()