Điều khiển#

Giới thiệu#

Lập trình điều khiển bằng Python cho phép bạn ra lệnh cho robot khi nào cần chờ, khi nào cần lặp lại hành động, cách đưa ra quyết định và khi nào cần kết thúc dự án.

Dưới đây là danh sách các điều khiển có sẵn, bao gồm các phương thức và từ khóa cốt lõi của Python:

  • wait – Tạm dừng dự án trong một khoảng thời gian nhất định.

  • for – Lặp lại mã cho mỗi mục trong một chuỗi.

  • if – Chạy mã nếu điều kiện đúng.

  • if/else – Chạy mã khác nhau tùy thuộc vào điều kiện.

  • if/elif/else – Kiểm tra nhiều điều kiện theo thứ tự.

  • while – Lặp lại mã khi một điều kiện đúng.

  • break – Thoát khỏi vòng lặp ngay lập tức.

  • quit – Kết thúc dự án đang chạy.

  • pass – Trình giữ chỗ được sử dụng khi không cần hành động nào.

wait#

wait tạm dừng trong một khoảng thời gian cụ thể trước khi chuyển sang dòng mã tiếp theo.

Usage:
wait(time, units)

Thông số

Sự miêu tả

time

Khoảng thời gian chờ đợi, được thể hiện dưới dạng số nguyên dương hoặc số thập phân.

units

Đơn vị biểu thị thời gian chờ: MSEC (mặc định) – mili giây, hoặc SECONDS

# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

for#

for lặp lại một tập hợp các hành động một số lần cụ thể. for có thể được sử dụng để lặp qua các mục trong danh sách, bộ dữ liệu, từ điển, tập hợp, chuỗi hoặc cho một số vòng lặp được chỉ định với range.

Cách sử dụng:

for value in expression_list:
    pass

Các thành phần

Sự miêu tả

value

Một biến tạm thời lưu trữ phần tử hiện tại trong vòng lặp.

expression_list

Tập hợp các phần tử được lặp qua (ví dụ: danh sách, chuỗi, phạm vi).

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
    controller.screen.print(color)
    controller.screen.next_row()

if#

if chạy khối mã thụt lề nếu điều kiện là True.

Cách sử dụng:

if condition:
    pass

Các thành phần

Sự miêu tả

condition

Một biểu thức hoặc biến được kiểm tra khi câu lệnh được thực thi. Nếu nó là True, mã bên trong khối if sẽ được thực thi; nếu nó là False, khối đó sẽ bị bỏ qua.

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

    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

if/else#

if và else xác định khối mã thụt lề nào sẽ chạy dựa trên việc điều kiện là True hay False.

Cách sử dụng:

if condition:
    pass
else:
    pass

Các thành phần

Sự miêu tả

condition

Một biểu thức hoặc biến được kiểm tra khi câu lệnh được thực thi. Nếu nó là True, mã bên trong khối if sẽ được thực thi; nếu nó là False, mã bên trong khối else sẽ được thực thi thay thế.

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

if/elif/else#

Cấu trúc if/elif/else lựa chọn khối mã thụt lề nào sẽ được thực thi dựa trên các điều kiện:

  • if chạy khối lệnh của nó nếu điều kiện là True.

  • elif chỉ kiểm tra các điều kiện bổ sung nếu tất cả các điều kiện trước đó đều là FalseCó thể sử dụng nhiều câu lệnh elif.

  • else chỉ chạy khối lệnh của nó nếu không có điều kiện nào trong các điều kiện trước đó là True.

Cách sử dụng:

if condition:
    pass
elif condition:
    pass
else:
    pass

Các thành phần

Sự miêu tả

condition

Một biểu thức hoặc biến được kiểm tra khi câu lệnh được thực thi. Điều kiện đầu tiên đúng ( True sẽ xác định khối lệnh nào được thực thi; nếu không có điều kiện nào đúng True, thì khối lệnh ( else sẽ được thực thi.

# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
    position = controller.axis1.position()
    if position > 0:
        drone.climb(direction=UP, velocity=50)
    elif position < 0:
        drone.climb(direction=DOWN, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

while#

Vòng lặp while sẽ chạy mã liên tục miễn là điều kiện TrueNó cũng có thể được sử dụng như một vòng lặp “vĩnh viễn” bằng cách sử dụng True làm điều kiện, hoặc một vòng lặp “chờ cho đến khi” bằng cách thêm not vào điều kiện, như được hiển thị trong các ví dụ bên dưới.

Cách sử dụng:

while condition:
    pass

Các thành phần

Sự miêu tả

condition

Một biểu thức hoặc biến được kiểm tra trước mỗi lần lặp. Nếu nó bằng True, vòng lặp tiếp tục; nếu nó bằng False, vòng lặp dừng lại.

# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
    drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()

break#

break thoát khỏi vòng lặp ngay lập tức. break có thể được sử dụng để thoát khỏi các vòng lặp mà nếu không sẽ lặp vô hạn.

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        break
    wait(5, MSEC)
drone.land()

quit#

quit kết thúc một dự án đang chạy.

Usage:
quit()

Thông số

Sự miêu tả

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

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        quit()
    wait(5, MSEC)
drone.land()

pass#

pass là một ký tự giữ chỗ cho mã lệnh trong tương lai và có thể được sử dụng để tránh lỗi trong các vòng lặp rỗng, câu lệnh điều kiện và hàm.

if condition:
    pass

def function():
    pass