Hệ thống truyền động#
Giới thiệu#
Robot 123 có hệ thống truyền động hai bánh cho phép nó di chuyển và rẽ. Các phương pháp điều khiển hệ thống truyền động kiểm soát cách robot di chuyển.
Hệ thống truyền động có thể đo khoảng cách theo hai cách: bước và mm (milimet). Một bước tương ứng với một ô vuông trên máy đo khoảng cách 123 Field.
Có rất nhiều cách để lập trình hệ thống truyền động. Dưới đây là danh sách tất cả các phương pháp lập trình hệ thống truyền động:
Thao tác — Di chuyển và xoay robot.
drive— Di chuyển robot tiến hoặc lùi mãi mãi.drive_for— Di chuyển robot tiến hoặc lùi một khoảng cách cụ thể.drive_until— Di chuyển robot tiến hoặc lùi cho đến khi nó phát hiện vật thể, va chạm hoặc đường kẻ.turn— Xoay robot sang trái hoặc phải mãi mãi.turn_for— Xoay robot sang trái hoặc phải một số độ cụ thể.turn_to_heading— Xoay robot để hướng về một hướng cụ thể từ -359 đến 359 độ.stop— Dừng chuyển động của robot.
Bộ điều chỉnh — Điều chỉnh các thiết lập hệ thống truyền động.
set_timeout— Đặt thời gian robot sẽ cố gắng hoàn thành một chuyển động.set_heading— Thay đổi hướng hiện tại của robot thành một hướng mới.
Người nhận hàng — Kiểm tra trạng thái di chuyển.
is_stopped— Trả về giá trị Boolean cho biết robot đã dừng di chuyển hay chưa.get_heading— Trả về hướng hiện tại của robot từ 0 đến 359 độ.
Hành động#
drive#
Phím drive cho phép robot di chuyển tiến hoặc lùi liên tục. Robot sẽ tiếp tục di chuyển cho đến khi nhận được lệnh khác, chẳng hạn như rẽ hoặc dừng lại.
Usage:
robot.drive(direction)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng di chuyển của robot: |
# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()
drive_for#
Lệnh drive_for di chuyển robot tiến hoặc lùi một khoảng cách cụ thể. Chương trình sẽ đợi cho đến khi robot hoàn thành việc di chuyển trước khi dòng mã tiếp theo được thực thi.
Usage:
robot.drive_for(direction, distance, unit)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng di chuyển của robot: |
|
Quãng đường robot di chuyển. Có thể là số nguyên hoặc số thập phân. |
|
Đơn vị khoảng cách: |
# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)
drive_until#
drive_until di chuyển robot tiến hoặc lùi cho đến khi phát hiện vật cản, va chạm hoặc vạch kẻ đường.
Usage:
robot.drive_until(direction)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng di chuyển của robot: |
# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)
turn#
turn sẽ khiến robot quay sang trái hoặc phải liên tục. Robot sẽ tiếp tục quay cho đến khi nhận được lệnh thực hiện hành động khác, chẳng hạn như lái xe hoặc dừng lại.
Usage:
robot.turn(direction)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()
turn_for#
Lệnh turn_for cho phép robot quay sang trái hoặc phải một số độ nhất định. Chương trình sẽ chờ cho đến khi robot quay xong trước khi thực thi dòng mã tiếp theo.
Usage:
robot.turn_for(direction, degrees)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng quay của robot: |
|
Số độ cần xoay. Số này có thể là số nguyên hoặc số thập phân. |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
turn_to_heading#
turn_to_heading xoay robot để hướng về một hướng cụ thể từ -359 đến 359 độ. Robot sẽ quay theo hướng ngắn nhất để đạt được hướng mục tiêu.
Hướng ban đầu là 0 độ.
Dự án sẽ chờ cho đến khi robot hoàn thành việc quay trước khi dòng mã tiếp theo được thực thi.
Usage:
robot.turn_to_heading(heading)
Thông số |
Sự miêu tả |
|---|---|
|
Hướng mà robot nên quay, từ -359 đến 359 độ. |
# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)
stop#
stop dừng chuyển động của robot.
Usage:
robot.stop()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()
Biến đổi#
set_timeout#
set_timeout thiết lập số giây mà robot sẽ cố gắng hoàn thành một chuyển động. Nếu robot không thể hoàn thành trong thời gian đó, nó sẽ ngừng cố gắng và chuyển sang dòng mã tiếp theo. Điều này giúp robot không bị kẹt ở một chuyển động nào đó.
Usage:
robot.set_timeout(time, unit)
Thông số |
Sự miêu tả |
|---|---|
|
Khoảng thời gian cho phép thực hiện một chuyển động. Khoảng thời gian này có thể là số nguyên hoặc số thập phân. |
|
Đơn vị thời gian: |
# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)
set_heading#
Lệnh set_heading thay đổi hướng hiện tại của robot thành một giá trị hướng mới.
Ví dụ, nếu robot đã quay mặt sang phải, việc đặt hướng về 0 độ sẽ biến vị trí quay mặt sang phải đó thành 0 độ mới.
Usage:
robot.set_heading(heading)
Thông số |
Sự miêu tả |
|---|---|
|
Giá trị hướng, tính bằng độ, cần thiết lập cho robot. |
# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)
Người nhận#
is_stopped#
is_stopped trả về một Boolean báo cáo xem robot đã dừng di chuyển hay chưa.
True— Robot đã dừng lại.False— Robot vẫn đang di chuyển.
Usage:
robot.is_stopped()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
if robot.is_stopped():
robot.led.glow(BLUE)
else:
robot.led.glow(GREEN)
wait(0.05, SECONDS)
get_heading#
get_heading trả về hướng mà robot hiện đang đối mặt dưới dạng số nguyên từ 0 đến 359 độ.
Hướng di chuyển ban đầu của robot là 0 độ.
Usage:
robot.get_heading()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())