Bộ điều khiển#

Giới thiệu#

Bộ điều khiển máy bay không người lái VEX AIR có bố cục 12 nút và hai cần điều khiển. Các đầu vào này cho phép máy bay không người lái phát hiện các lần nhấn nút và chuyển động của cần điều khiển, mang lại khả năng điều khiển tương tác và nhạy bén.

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

Các tham số lấy dữ liệu – Đọc trạng thái nút bấm, cần điều khiển và kết nối.

  • pressing – Trả về nếu một nút cụ thể hiện đang được nhấn.

  • position – Trả về vị trí của cần điều khiển dọc theo một trục được chỉ định.

  • is_drone_connected – Trả về trạng thái kết nối của bộ điều khiển với máy bay không người lái.

  • get_battery_level – Trả về mức pin của bộ điều khiển.

Hàm gọi lại – Phản hồi các thay đổi đầu vào từ nút bấm hoặc cần điều khiển.

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

Người nhận#

pressing#

Phương thức pressing trả về giá trị Boolean cho biết 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ư button5 (xem danh sách đầy đủ các đối tượng nút bên dưới).

  • 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 tám nút có sẵn, được đánh số từ 5 đến 12, có thể được sử dụng với phương pháp này, như minh họa bên dưới:

Cái nút

Yêu cầu

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Bộ điều khiển máy bay không người lái VEX AIR hiển thị các nút từ 5 đến 12. Nút 5 và 6 nằm ở phía sau bên phải của bộ điều khiển, vuông góc với cần điều khiển. Nút 7 và 8 nằm ở vị trí tương tự bên trái. Các nút từ 9 đến 12 nằm ở mặt dưới của bộ điều khiển, với nút 9 ở góc trên bên phải phía trên nút 10, và nút 11 ở góc trên bên trái phía trên nút 12.

Thông số

Sự miêu tả

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

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Fly using the controller sticks
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    # Capture an image from the forward camera when button 5 is pressed.
    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

position#

position trả về vị trí của trục được chỉ định của cần điều khiển, dưới dạng phần trăm từ –100% đến 100%.

Cách sử dụng:

Một trong bốn trục có sẵn, được đánh số từ 1 đến 4, có thể được sử dụng với phương pháp này.

Trục

Yêu cầu

axis1

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

axis2

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

axis3

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

axis4

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

Bộ điều khiển máy bay không người lái VEX AIR với nhãn Trục 1 và 2 được tô sáng xung quanh cần điều khiển bên trái, và nhãn Trục 3 và 4 được tô sáng xung quanh 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ố.

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

is_drone_connected#

is_drone_connected trả về giá trị Boolean cho biết máy bay không người lái có được kết nối hay không.

  • True - Máy bay không người lái đã được kết nối.

  • False - Máy bay không người lái không được kết nối.

Cách sử dụng:

controller.is_drone_connected()

Thông số

Sự miêu tả

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

# Print controller connection status on screen.
while True:
    if controller.is_drone_connected():
        controller.screen.clear_screen()
        controller.screen.set_cursor(1, 1)
        controller.screen.print("Controller connected")
    wait(0.5, SECONDS)

get_battery_level#

get_battery_level trả về mức pin của Bộ điều khiển, dưới dạng phần trăm từ 0% đến 100%.

Cách sử dụng:

controller.get_battery_level()

Thông số

Sự miêu tả

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

# Show controller's battery level.
if controller.get_battery_level() > 50:
    controller.screen.print("Battery level ok")
else:
    controller.screen.print("Battery level low")

Cuộc gọi lại#

pressed#

Lệnh 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 tám nút có sẵn, được đánh số từ 5 đến 12, có thể được sử dụng với phương pháp này.

Cái nút

Yêu cầu

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Bộ điều khiển máy bay không người lái VEX AIR hiển thị các nút từ 5 đến 12. Nút 5 và 6 nằm ở phía sau bên phải của bộ điều khiển, vuông góc với cần điều khiển. Nút 7 và 8 nằm ở vị trí tương tự bên trái. Các nút từ 9 đến 12 nằm ở mặt dưới của bộ điều khiển, với nút 9 ở góc trên bên phải phía trên nút 10, và nút 11 ở góc trên bên trái phía trên nút 12.

Thông 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 tuple 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.

# Take a picture when button 5 is pressed.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Run take_picture each time button 5 is pressed.
controller.button5.pressed(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

released#

Lệnh 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 tám nút có sẵn, được đánh số từ 5 đến 12, có thể được sử dụng với phương pháp này.

Cái nút

Yêu cầu

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Bộ điều khiển máy bay không người lái VEX AIR hiển thị các nút từ 5 đến 12. Nút 5 và 6 nằm ở phía sau bên phải của bộ điều khiển, vuông góc với cần điều khiển. Nút 7 và 8 nằm ở vị trí tương tự bên trái. Các nút từ 9 đến 12 nằm ở mặt dưới của bộ điều khiển, với nút 9 ở góc trên bên phải phía trên nút 10, và nút 11 ở góc trên bên trái phía trên nút 12.

Thông 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 tuple chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng hàm có tham số để biết thêm thông tin.

# Take a picture when button 5 is released.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Run take_picture each time button 5 is released.
controller.button5.released(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

changed#

Lệnh 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 bốn trục có sẵn, được đánh số từ 1 đến 4, có thể được sử dụng với phương pháp này.

Trục

Yêu cầu

axis1

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

axis2

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

axis3

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

axis4

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

Bộ điều khiển máy bay không người lái VEX AIR với nhãn Trục 1 và 2 được tô sáng xung quanh cần điều khiển bên trái, và nhãn Trục 3 và 4 được tô sáng xung quanh cần điều khiển bên phải.

Thông 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 tuple chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng hàm có tham số để biết thêm thông tin.

# Move forward when the left joystick moves.
def on_axis1_changed():
    drone.move_for(direction=0, distance=200, velocity=50, units=MM)

drone.take_off(climb_to=500)
controller.axis1.changed(on_axis1_changed)