Bộ điều khiển#

Giới thiệu#

Bộ điều khiển V5 có các nút bấm, hai cần điều khiển, một mô tơ rung và một màn hình. Các phương thức điều khiển có thể được sử dụng để kiểm tra các lần nhấn nút, đọc chuyển động của cần điều khiển, rung bộ điều khiển, bật hoặc tắt các hành động đã được cấu hình trên bộ điều khiển, chạy các chức năng khi các sự kiện trên bộ điều khiển xảy ra hoặc hiển thị văn bản trên màn hình bộ điều khiển.

Các hành động Bộ điều khiển đã cấu hình là các hành vi của bộ điều khiển được thiết lập trong menu Thiết bị. Sử dụng remote_control_code_enabled để tạm thời bật hoặc tắt các hành động đã cấu hình đó trong quá trình thực hiện dự án.

Trang này sử dụng controller_1 làm ví dụ về tên Controller. Hãy thay thế bằng tên đã cấu hình của riêng bạn nếu cần.

Dưới đây là danh sách tất cả các phương pháp hiện có:

Thao tác — Rung bộ điều khiển hoặc bật/tắt các thao tác đã cấu hình trên bộ điều khiển.

  • rumble — Phát mẫu rung trên Bộ điều khiển.

  • remote_control_code_enabled — Cho phép hoặc vô hiệu hóa các hành động của Bộ điều khiển được cấu hình trong menu Thiết bị.

Màn hình — Hiển thị văn bản và số trên màn hình Bộ điều khiển.

  • print — Hiển thị văn bản, số hoặc giá trị biến trên màn hình Bộ điều khiển.

  • set_cursor — Di chuyển con trỏ đến hàng và cột được chỉ định trên màn hình Bộ điều khiển.

  • column — Trả về cột con trỏ hiện tại trên màn hình Bộ điều khiển.

  • row — Trả về hàng con trỏ hiện tại trên màn hình Bộ điều khiển.

  • clear_screen — Xóa màn hình Bộ điều khiển.

  • clear_row — Xóa một hàng trên màn hình Bộ điều khiển.

  • next_row — Di chuyển con trỏ đến hàng tiếp theo trên màn hình Bộ điều khiển.

Getters — Đọc trạng thái nút bấm và vị trí cần điều khiển.

  • .pressing — Trả về liệu nút được chỉ định có đang được nhấn hay không.

  • .position — Trả về vị trí của trục cần điều khiển được chỉ định.

Hàm gọi lại — Thực thi các hàm khi dữ liệu đầu vào từ Bộ điều khiển thay đổi.

  • .pressed — Chạy một hàm khi một nút được chỉ định được nhấn.

  • .released — Chạy một hàm khi nút được chỉ định được nhả ra.

  • .changed — Chạy một hàm khi vị trí của cần điều khiển thay đổi dọc theo một trục được chỉ định.

Hàm khởi tạo — Tự tạo đối tượng Controller.

  • Controller — Tạo một đối tượng Bộ điều khiển.

Hành động#

rumble#

rumble phát ra một chuỗi âm thanh rung trên Bộ điều khiển. Trong chuỗi âm thanh, dấu chấm là các tiếng rung ngắn, dấu gạch ngang là các tiếng rung dài và khoảng trắng là các khoảng dừng.

Usage:
controller_1.rumble(pattern)

Tham số

Sự miêu tả

pattern

Một chuỗi ký tự gồm dấu chấm, dấu gạch ngang và khoảng trắng, thể hiện kiểu âm thanh rung.

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

remote_control_code_enabled#

remote_control_code_enabled là một biến cho phép bật hoặc tắt các hành động của Bộ điều khiển được cấu hình trong menu Thiết bị. Các hành động được cấu hình của Bộ điều khiển được bật theo mặc định.

Usage:
remote_control_code_enabled = state

Giá trị

Sự miêu tả

True

Cho phép thực hiện các hành động đã được cấu hình trên Bộ điều khiển.

False

Vô hiệu hóa các hành động đã được cấu hình trên Bộ điều khiển.

# 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

Màn hình#

Màn hình điều khiển V5 có 3 hàng và 19 cột để hiển thị văn bản và số.

Ảnh chụp màn hình Bộ điều khiển V5, hiển thị các hàng và cột trong vùng in. Hàng 1 Cột 1 bắt đầu ở góc trên bên trái và hàng 3, cột 19 nằm ở góc dưới bên phải.

print#

controller_1.screen.print hiển thị văn bản, số hoặc giá trị biến trên màn hình Bộ điều khiển bằng cách sử dụng vị trí con trỏ hiện tại.

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

Tham số

Sự miêu tả

value

Văn bản, số hoặc giá trị biến cần hiển thị trên màn hình Bộ điều khiển. Có thể in nhiều hơn một giá trị bằng cách phân tách các giá trị bằng dấu phẩy.

sep

Tùy chọn. Một chuỗi để đặt giữa các giá trị. Chuỗi này phải được viết dưới dạng đối số từ khóa, chẳng hạn như sep=”- “. Giá trị mặc định là ” “.

precision

Tùy chọn. Số lượng chữ số thập phân hiển thị khi in các số đơn giản. Tham số này phải được viết dưới dạng đối số từ khóa, ví dụ: precision=2. Giá trị mặc định là 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#

Lệnh set_cursor di chuyển con trỏ đến hàng và cột được chỉ định trên màn hình Bộ điều khiển. Giá trị được in tiếp theo sẽ xuất hiện tại vị trí đó.

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

Tham số

Sự miêu tả

row

Hàng con trỏ, từ 1 đến 3.

col

Cột con trỏ, từ 1 đến 19.

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

column#

column trả về cột hiện tại nơi văn bản sẽ được in trên màn hình Bộ điều khiển.

Usage:
controller_1.screen.column()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

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

row#

row trả về hàng hiện tại nơi văn bản sẽ được in trên màn hình Bộ điều khiển.

Usage:
controller_1.screen.row()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

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

clear_screen#

clear_screen xóa màn hình Bộ điều khiển và di chuyển con trỏ trở lại vị trí ban đầu.

Usage:
controller_1.screen.clear_screen()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# 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 xóa một hàng trên màn hình Bộ điều khiển.

Usage:
controller_1.screen.clear_row(row)

Tham số

Sự miêu tả

row

Tùy chọn. Hàng cần xóa, từ 1 đến 3Nếu không cung cấp hàng nào, hàng con trỏ hiện tại sẽ bị xóa.

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

next_row#

Lệnh next_row di chuyển con trỏ đến cột 1 trên hàng tiếp theo của màn hình Bộ điều khiển. Giá trị được in tiếp theo sẽ xuất hiện trên hàng đó.

Usage:
controller_1.screen.next_row()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

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

Người nhận#

.pressing#

.pressing trả về trạng thái liệu một nút cụ thể trên Bộ điều khiển có đang được nhấn hay không. Phương thức này phải được gọi trên một đối tượng nút cụ thể, chẳng hạn như controller_1.buttonA.

  • True — Nút được chỉ định đang được nhấn.

  • False — Nút được chỉ định không được nhấn.

Cách sử dụng:
Một trong các đối tượng nút có sẵn có thể được sử dụng với phương thức này:

Mặt trước và mặt sau của Bộ điều khiển V5 với các nút được tô sáng màu vàng. Trên bề mặt của bộ điều khiển có các nút mũi tên lên, xuống, trái và phải ở bên trái, và các nút X, A, B, Y theo chiều kim đồng hồ từ vị trí 12 giờ ở bên phải. Ở mặt sau của bộ điều khiển có các nút L1, L2, R1 và R2 lần lượt ở bên trái và bên phải.

Cái nút

Yêu cầu

buttonA

controller_1.buttonA.pressing() — Nút A

buttonB

controller_1.buttonB.pressing() — Nút B

buttonX

controller_1.buttonX.pressing() — Nút X

buttonY

controller_1.buttonY.pressing() — Nút Y

buttonDown

controller_1.buttonDown.pressing() — Nút Xuống

buttonUp

controller_1.buttonUp.pressing() — Nút Lên

buttonLeft

controller_1.buttonLeft.pressing() — Nút Trái

buttonRight

controller_1.buttonRight.pressing() — Nút Phải

buttonL1

controller_1.buttonL1.pressing() — Nút L1

buttonL2

controller_1.buttonL2.pressing() — Nút L2

buttonR1

controller_1.buttonR1.pressing() — Nút R1

buttonR2

controller_1.buttonR2.pressing() — Nút R2

Thông số

Sự miêu tả

Phương pháp này không có tham số.

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

    wait(20, MSEC)

.position#

.position trả về vị trí của trục cần điều khiển dưới dạng một số từ -100 đến 100.

Phương thức này phải được gọi trên một đối tượng trục cụ thể, chẳng hạn như controller_1.axis1.

Cách sử dụng:
Một trong các đối tượng trục có sẵn có thể được sử dụng với phương pháp này:

Bộ điều khiển VEX V5 với các trục xung quanh cần điều khiển được dán nhãn. Trục 1 và 2 nằm xung quanh cần điều khiển bên phải, và Trục 3 và 4 nằm xung quanh cần điều khiển bên trái.

Trục

Yêu cầu

axis1

controller_1.axis1.position() — Trục ngang của cần điều khiển bên phải

axis2

controller_1.axis2.position() — Trục dọc của cần điều khiển bên phải

axis3

controller_1.axis3.position() — Trục dọc của cần điều khiển bên trái

axis4

controller_1.axis4.position() — Trục ngang của cần điều khiển bên trái

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# 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)

Cuộc gọi lại#

.pressed#

.pressed sẽ chạy một hàm khi nút được chỉ định được nhấn. Sau khi được sử dụng, hàm này sẽ tự động chạy mỗi khi nút đó được nhấn.

Cách sử dụng:
Một trong các đối tượng nút có sẵn có thể được sử dụng với phương thức này:

Mặt trước và mặt sau của Bộ điều khiển V5 với các nút được tô sáng màu vàng. Trên bề mặt của bộ điều khiển có các nút mũi tên lên, xuống, trái và phải ở bên trái, và các nút X, A, B, Y theo chiều kim đồng hồ từ vị trí 12 giờ ở bên phải. Ở mặt sau của bộ điều khiển có các nút L1, L2, R1 và R2 lần lượt ở bên trái và bên phải.

Cái nút

Yêu cầu

buttonA

controller_1.buttonA.pressed(callback, arg) — Nút A

buttonB

controller_1.buttonB.pressed(callback, arg) — Nút B

buttonX

controller_1.buttonX.pressed(callback, arg) — Nút X

buttonY

controller_1.buttonY.pressed(callback, arg) — Nút Y

buttonDown

controller_1.buttonDown.pressed(callback, arg) — Nút Xuống

buttonUp

controller_1.buttonUp.pressed(callback, arg) — Nút Lên

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Nút Trái

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Nút Phải

buttonL1

controller_1.buttonL1.pressed(callback, arg) — Nút L1

buttonL2

controller_1.buttonL2.pressed(callback, arg) — Nút L2

buttonR1

controller_1.buttonR1.pressed(callback, arg) — Nút R1

buttonR2

controller_1.buttonR2.pressed(callback, arg) — Nút R2

Tham số

Sự miêu tả

callback

Một hàm được định nghĩa trước đó để chạy mỗi khi nút được chỉ định được nhấn.

arg

Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng Sự kiện với Tham số để biết thêm thông tin.

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released sẽ chạy một hàm khi nút được chỉ định được nhả ra. Sau khi được sử dụng, hàm này sẽ tự động chạy mỗi khi nút đó được nhả ra.

Cách sử dụng:
Một trong các đối tượng nút có sẵn có thể được sử dụng với phương thức này:

Mặt trước và mặt sau của Bộ điều khiển V5 với các nút được tô sáng màu vàng. Trên bề mặt của bộ điều khiển có các nút mũi tên lên, xuống, trái và phải ở bên trái, và các nút X, A, B, Y theo chiều kim đồng hồ từ vị trí 12 giờ ở bên phải. Ở mặt sau của bộ điều khiển có các nút L1, L2, R1 và R2 lần lượt ở bên trái và bên phải.

Cái nút

Yêu cầu

buttonA

controller_1.buttonA.released(callback, arg) — Nút A

buttonB

controller_1.buttonB.released(callback, arg) — Nút B

buttonX

controller_1.buttonX.released(callback, arg) — Nút X

buttonY

controller_1.buttonY.released(callback, arg) — Nút Y

buttonDown

controller_1.buttonDown.released(callback, arg) — Nút Xuống

buttonUp

controller_1.buttonUp.released(callback, arg) — Nút Lên

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Nút Trái

buttonRight

controller_1.buttonRight.released(callback, arg) — Nút Phải

buttonL1

controller_1.buttonL1.released(callback, arg) — Nút L1

buttonL2

controller_1.buttonL2.released(callback, arg) — Nút L2

buttonR1

controller_1.buttonR1.released(callback, arg) — Nút R1

buttonR2

controller_1.buttonR2.released(callback, arg) — Nút R2

Tham số

Sự miêu tả

callback

Một hàm được định nghĩa trước đó để chạy mỗi khi nút được chỉ định được nhả ra.

arg

Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng Sự kiện với Tham số để biết thêm thông tin.

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

controller_1.buttonA.released(back_up)

.changed#

.changed sẽ chạy một hàm khi vị trí của cần điều khiển thay đổi dọc theo trục được chỉ định. Sau khi được sử dụng, hàm này sẽ tự động chạy mỗi khi vị trí của cần điều khiển thay đổi dọc theo trục đó.

Cách sử dụng:
Một trong các đối tượng trục có sẵn có thể được sử dụng với phương pháp này:

Bộ điều khiển VEX V5 với các trục xung quanh cần điều khiển được dán nhãn. Trục 1 và 2 nằm xung quanh cần điều khiển bên phải, và Trục 3 và 4 nằm xung quanh cần điều khiển bên trái.

Trục

Yêu cầu

axis1

controller_1.axis1.changed(callback, arg) — Trục ngang của cần điều khiển bên phải

axis2

controller_1.axis2.changed(callback, arg) — Trục dọc của cần điều khiển bên phải

axis3

controller_1.axis3.changed(callback, arg) — Trục dọc của cần điều khiển bên trái

axis4

controller_1.axis4.changed(callback, arg) — Trục ngang của cần điều khiển bên trái

Tham số

Sự miêu tả

callback

Một hàm được định nghĩa trước đó để chạy mỗi khi vị trí của cần điều khiển thay đổi dọc theo trục được chỉ định.

arg

Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng Sự kiện với Tham số để biết thêm thông tin.

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

controller_1.axis4.changed(tada_sound)

Các hàm tạo#

Controller#

Lệnh Controller tạo một đối tượng Controller. Việc tạo thủ công đối tượng Controller chỉ cần thiết khi cấu hình bộ điều khiển bên ngoài VEXcode.

Usage:
Controller(controller_type)

Tham số

Sự miêu tả

controller_type

Tùy chọn. Loại Bộ điều khiển cần tạo: PRIMARY cho Bộ điều khiển chính được kết nối với Bộ xử lý trung tâm hoặc PARTNER cho Bộ điều khiển thứ hai được kết nối với Bộ xử lý trung tâm.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)