Bộ điều khiển#

Giới thiệu#

Bộ điều khiển VEX IQ (thế hệ thứ 2) có các nút bấm và hai cần điều khiển. 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, bật hoặc tắt các hành động điều khiển đã được cấu hình hoặc chạy các chức năng khi các sự kiện điều khiển xảy ra.

Bộ xử lý trung tâm IQ (thế hệ thứ 2) có thể kết nối với bộ điều khiển IQ (thế hệ thứ 2) hoặc IQ (thế hệ thứ nhất). Bộ điều khiển IQ (thế hệ thứ nhất) phải được cài đặt Smart Radio màu xanh lam.

Các hành động điều khiển đã cấu hình là các hành vi đ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 làm ví dụ về tên bộ điều khiển. 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ó:

Hành động — Bật hoặc tắt các hành động điều khiển đã được cấu hình.

  • 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ị.

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.

Hoạt động#

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.

# 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

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.buttonEUp.

  • 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:

Hình ảnh mặt trước và mặt sau của Bộ điều khiển IQ thế hệ thứ 2 với tất cả các nút được tô sáng màu vàng. Bề mặt của bộ điều khiển có hai nút cần điều khiển ở góc trên bên trái và bên phải, với nút E lên và xuống bên dưới cần điều khiển bên trái và nút F lên và xuống bên dưới cần điều khiển bên phải. Ở mặt sau của bộ điều khiển là các nút L lên và xuống và R lên và xuống ở hai bên trái và phải tương ứng.

Cái nút

Yêu cầu

buttonEDown

controller.buttonEDown.pressing() — Nút E ▼

buttonEUp

controller.buttonEUp.pressing() — Nút E ▲

buttonFDown

controller.buttonFDown.pressing() — Nút F ▼

buttonFUp

controller.buttonFUp.pressing() — Nút F ▲

buttonL3

controller.buttonL3.pressing() — Nút Cần điều khiển bên trái, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonLDown

controller.buttonLDown.pressing() — Nút L ▼

buttonLUp

controller.buttonLUp.pressing() — Nút L ▲

buttonR3

controller.buttonR3.pressing() — Nút Cần điều khiển bên phải, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonRDown

controller.buttonRDown.pressing() — Nút R ▼

buttonRUp

controller.buttonRUp.pressing() — Nút R ▲

Thông số

Sự miêu tả

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

# Turn right while E Up is held
while True:
    if controller.buttonEUp.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.axisA.

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 IQ thế hệ thứ 2 với bốn trục cần điều khiển được đánh dấu. Trên cần điều khiển bên trái, Trục A là trục dọc và Trục B là trục ngang. Trên cần điều khiển bên phải, Trục C là trục ngang và Trục D là trục dọc.

Trục

Yêu cầu

axisA

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

axisB

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

axisC

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

axisD

controller.axisD.position() — Trục dọc của cần điều khiển bên phả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.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.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:

Hình ảnh mặt trước và mặt sau của Bộ điều khiển IQ thế hệ thứ 2 với tất cả các nút được tô sáng màu vàng. Bề mặt của bộ điều khiển có hai nút cần điều khiển ở góc trên bên trái và bên phải, với nút E lên và xuống bên dưới cần điều khiển bên trái và nút F lên và xuống bên dưới cần điều khiển bên phải. Ở mặt sau của bộ điều khiển là các nút L lên và xuống và R lên và xuống ở hai bên trái và phải tương ứng.

Cái nút

Yêu cầu

buttonEDown

controller.buttonEDown.pressed(callback, arg) — Nút E ▼

buttonEUp

controller.buttonEUp.pressed(callback, arg) — Nút E ▲

buttonFDown

controller.buttonFDown.pressed(callback, arg) — Nút F ▼

buttonFUp

controller.buttonFUp.pressed(callback, arg) — Nút F ▲

buttonL3

controller.buttonL3.pressed(callback, arg) — Nút Cần điều khiển bên trái, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonLDown

controller.buttonLDown.pressed(callback, arg) — Nút L ▼

buttonLUp

controller.buttonLUp.pressed(callback, arg) — Nút L ▲

buttonR3

controller.buttonR3.pressed(callback, arg) — Nút Cần điều khiển bên phải, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonRDown

controller.buttonRDown.pressed(callback, arg) — Nút R ▼

buttonRUp

controller.buttonRUp.pressed(callback, arg) — Nút R ▲

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 E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.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:

Hình ảnh mặt trước và mặt sau của Bộ điều khiển IQ thế hệ thứ 2 với tất cả các nút được tô sáng màu vàng. Bề mặt của bộ điều khiển có hai nút cần điều khiển ở góc trên bên trái và bên phải, với nút E lên và xuống bên dưới cần điều khiển bên trái và nút F lên và xuống bên dưới cần điều khiển bên phải. Ở mặt sau của bộ điều khiển là các nút L lên và xuống và R lên và xuống ở hai bên trái và phải tương ứng.

Cái nút

Yêu cầu

buttonEDown

controller.buttonEDown.released(callback, arg) — Nút E ▼

buttonEUp

controller.buttonEUp.released(callback, arg) — Nút E ▲

buttonFDown

controller.buttonFDown.released(callback, arg) — Nút F ▼

buttonFUp

controller.buttonFUp.released(callback, arg) — Nút F ▲

buttonL3

controller.buttonL3.released(callback, arg) — Nút Cần điều khiển bên trái, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonLDown

controller.buttonLDown.released(callback, arg) — Nút L ▼

buttonLUp

controller.buttonLUp.released(callback, arg) — Nút L ▲

buttonR3

controller.buttonR3.released(callback, arg) — Nút Cần điều khiển bên phải, chỉ dành cho bộ điều khiển IQ (thế hệ thứ 2).

buttonRDown

controller.buttonRDown.released(callback, arg) — Nút R ▼

buttonRUp

controller.buttonRUp.released(callback, arg) — Nút R ▲

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.

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

controller.buttonEUp.released(stop_driving)

.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 IQ thế hệ thứ 2 với bốn trục cần điều khiển được đánh dấu. Trên cần điều khiển bên trái, Trục A là trục dọc và Trục B là trục ngang. Trên cần điều khiển bên phải, Trục C là trục ngang và Trục D là trục dọc.

Trục

Yêu cầu

axisA

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

axisB

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

axisC

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

axisD

controller.axisD.changed(callback, arg) — Trục dọc của cần điều khiển bên phả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 right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

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

Thông số

Sự miêu tả

Hàm tạo này không có tham số.

# Create a Controller object
my_controller = Controller()