ตัวควบคุม#

การแนะนำ#

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

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

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

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

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

  • rumble — เล่นรูปแบบการสั่นบนคอนโทรลเลอร์

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

หน้าจอ — แสดงข้อความและตัวเลขบนหน้าจอควบคุม

  • print — แสดงข้อความ ตัวเลข หรือค่าตัวแปรบนหน้าจอ Controller

  • set_cursor — ย้ายเคอร์เซอร์ไปยังแถวและคอลัมน์ที่ระบุบนหน้าจอ Controller

  • column — ส่งคืนคอลัมน์เคอร์เซอร์ปัจจุบันบนหน้าจอ Controller

  • row — ส่งคืนแถวเคอร์เซอร์ปัจจุบันบนหน้าจอ Controller

  • clear_screen — ล้างหน้าจอ Controller

  • clear_row — ล้างแถวหนึ่งแถวบนหน้าจอ Controller

  • next_row — ย้ายเคอร์เซอร์ไปยังแถวถัดไปบนหน้าจอ Controller

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

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

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

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

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

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

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

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

  • Controller — สร้างวัตถุ Controller

การกระทำ#

rumble#

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

Usage:
controller_1.rumble(pattern)

พารามิเตอร์

คำอธิบาย

pattern

สตริงที่ประกอบด้วยจุด เครื่องหมายขีด และช่องว่าง ซึ่งแสดงถึงรูปแบบเสียงคำราม

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

หน้าจอ#

หน้าจอของตัวควบคุม V5 มี 3 แถวและ 19 คอลัมน์ สำหรับแสดงข้อความและตัวเลข

ภาพหน้าจอของตัวควบคุม V5 แสดงแถวและคอลัมน์ในพื้นที่ที่สามารถพิมพ์ได้ แถวที่ 1 คอลัมน์ที่ 1 เริ่มต้นที่มุมบนซ้าย และแถวที่ 3 คอลัมน์ที่ 19 อยู่ที่มุมล่างขวา

print#

controller_1.screen.print แสดงข้อความ ตัวเลข หรือค่าตัวแปรบนหน้าจอ Controller โดยใช้ตำแหน่งเคอร์เซอร์ปัจจุบัน

Usage:
controller_1.screen.print(value, sep, precision)

พารามิเตอร์

คำอธิบาย

value

ข้อความ ตัวเลข หรือค่าตัวแปรที่จะแสดงบนหน้าจอควบคุม สามารถแสดงค่าได้มากกว่าหนึ่งค่าโดยคั่นด้วยเครื่องหมายจุลภาค

sep

ตัวเลือกเสริม สตริงที่จะวางคั่นระหว่างค่าต่างๆ ต้องเขียนเป็นอาร์กิวเมนต์แบบคีย์เวิร์ด เช่น sep=”- “ค่าเริ่มต้นคือ ” “.

precision

ตัวเลือกเสริม จำนวนตำแหน่งทศนิยมที่จะแสดงเมื่อพิมพ์ตัวเลขธรรมดา ต้องเขียนเป็นอาร์กิวเมนต์แบบคีย์เวิร์ด เช่น precision= precision=2ค่าเริ่มต้นคือ 2

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

คำสั่ง set_cursor จะย้ายเคอร์เซอร์ไปยังแถวและคอลัมน์ที่ระบุบนหน้าจอ Controller ค่าที่พิมพ์ถัดไปจะปรากฏที่ตำแหน่งนั้น

Usage:
controller_1.screen.set_cursor(row, col)

พารามิเตอร์

คำอธิบาย

row

แถวของเคอร์เซอร์ ตั้งแต่ 1 ถึง 3

col

คอลัมน์ของเคอร์เซอร์ ตั้งแต่ 1 ถึง 19

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column ส่งคืนคอลัมน์ปัจจุบันที่ข้อความจะถูกพิมพ์บนหน้าจอ Controller

Usage:
controller_1.screen.column()

พารามิเตอร์

คำอธิบาย

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

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row ส่งคืนแถวปัจจุบันที่ข้อความจะถูกพิมพ์บนหน้าจอ Controller

Usage:
controller_1.screen.row()

พารามิเตอร์

คำอธิบาย

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

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen จะล้างหน้าจอ Controller และย้ายเคอร์เซอร์กลับไปยังตำแหน่งเริ่มต้น

Usage:
controller_1.screen.clear_screen()

พารามิเตอร์

คำอธิบาย

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

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row ล้างแถวหนึ่งแถวบนหน้าจอ Controller

Usage:
controller_1.screen.clear_row(row)

พารามิเตอร์

คำอธิบาย

row

(ไม่บังคับ) ระบุแถวที่จะล้าง ตั้งแต่ 1 ถึง 3หากไม่ระบุแถว จะล้างแถวที่เคอร์เซอร์อยู่ปัจจุบัน

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

คำสั่ง next_row จะย้ายเคอร์เซอร์ไปยังคอลัมน์ที่ 1 ในแถวถัดไปของหน้าจอ Controller ค่าที่พิมพ์ถัดไปจะปรากฏในแถวนั้น

Usage:
controller_1.screen.next_row()

พารามิเตอร์

คำอธิบาย

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

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

ผู้รับ#

.pressing#

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

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

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

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

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

ปุ่ม

สั่งการ

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressing() — ปุ่ม X

buttonY

controller_1.buttonY.pressing() — ปุ่ม Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressing() — ปุ่ม ซ้าย

buttonRight

controller_1.buttonRight.pressing() — ปุ่ม ขวา

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

พารามิเตอร์

คำอธิบาย

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

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

    wait(20, MSEC)

.position#

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

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

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

ตัวควบคุม VEX V5 พร้อมแกนรอบจอยสติ๊กที่ระบุหมายเลข แกนที่ 1 และ 2 อยู่รอบจอยสติ๊กด้านขวา และแกนที่ 3 และ 4 อยู่รอบจอยสติ๊กด้านซ้าย

แกน

สั่งการ

axis1

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

axis2

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

axis3

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

axis4

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

พารามิเตอร์

คำอธิบาย

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

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

.pressed#

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

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

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

ปุ่ม

สั่งการ

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressed(callback, arg) — ปุ่ม X

buttonY

controller_1.buttonY.pressed(callback, arg) — ปุ่ม Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — ปุ่ม ซ้าย

buttonRight

controller_1.buttonRight.pressed(callback, arg) — ปุ่ม ขวา

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

พารามิเตอร์

คำอธิบาย

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

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

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

ปุ่ม

สั่งการ

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — ปุ่ม X

buttonY

controller_1.buttonY.released(callback, arg) — ปุ่ม Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — ปุ่ม ซ้าย

buttonRight

controller_1.buttonRight.released(callback, arg) — ปุ่ม ขวา

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

พารามิเตอร์

คำอธิบาย

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

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

ตัวควบคุม VEX V5 พร้อมแกนรอบจอยสติ๊กที่ระบุหมายเลข แกนที่ 1 และ 2 อยู่รอบจอยสติ๊กด้านขวา และแกนที่ 3 และ 4 อยู่รอบจอยสติ๊กด้านซ้าย

แกน

สั่งการ

axis1

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

axis2

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

axis3

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

axis4

controller_1.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 tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

ผู้สร้าง#

Controller#

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

Usage:
Controller(controller_type)

พารามิเตอร์

คำอธิบาย

controller_type

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

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)