4. Bài 1: Cùng di chuyển nào
Mục tiêu:
Hiểu về động cơ DC, cách khai báo robot di chuyển trên ORC Control Hub và các khối lệnh giúp xBot Evo di chuyển theo ý muốn.
1. Động cơ trên xBot Evo
xBot Evo di chuyển được nhờ 2 động cơ DC bên trái và bên phải. Khi 2 động cơ quay cùng chiều, robot đi tới hoặc lùi. Khi 2 động cơ quay ngược chiều nhau, robot quay trái hoặc quay phải.
Theo hướng dẫn lắp ráp, động cơ bên trái nối vào cổng M1 và động cơ bên phải nối vào cổng M2 trên ORC Control Hub.

2. Điều khiển từng động cơ
Các khối lệnh làm việc với động cơ nằm trong danh mục ĐỘNG CƠ, phần Động cơ DC.

-
Khai báo động cơ: chọn cổng mà động cơ được nối vào (M1, M2,…). Nếu động cơ quay ngược với mong muốn, bật lựa chọn đảo chiều quay.

-
Quay động cơ với tốc độ chỉ định: tốc độ từ -100 đến 100.
◼ Tốc độ > 0: động cơ quay theo chiều kim đồng hồ (nhìn thẳng vào bánh xe).
◼ Tốc độ < 0: động cơ quay ngược chiều kim đồng hồ.
◼ Giá trị tốc độ càng lớn thì động cơ quay càng nhanh.

-
Quay động cơ trong một khoảng thời gian: hết thời gian thì động cơ dừng lại.

Chương trình mẫu: khi nhấn nút BOOT, quay 2 động cơ tới 2 giây, quay ngược 2 giây rồi dừng lại.

Bạn sẽ thấy 2 bánh xe quay ngược chiều nhau dù cùng tốc độ dương. Đó là vì 2 động cơ được lắp đối xứng ở 2 bên robot. Ở phần tiếp theo, khi khai báo robot di chuyển, thư viện sẽ tự xử lý vấn đề này cho bạn.
3. Khai báo robot di chuyển
Thay vì điều khiển từng động cơ, chúng ta khai báo một robot di chuyển gồm 2 động cơ, sau đó chỉ cần ra lệnh tới, lùi, trái, phải. Các khối lệnh nằm trong danh mục DI CHUYỂN.

-
Khai báo robot: chọn chế độ 2 động cơ (2WD), động cơ bên trái là động cơ gắn ở M1, động cơ bên phải là động cơ gắn ở M2.
-
Di chuyển liên tục: robot di chuyển tới, lùi, quay trái, quay phải cho đến khi có lệnh mới.

-
Di chuyển theo thời gian: robot di chuyển trong số giây chỉ định rồi dừng lại.

-
Quay theo thời gian:

-
Dừng robot: dừng theo quán tính (dừng) hoặc khóa bánh dừng ngay lập tức (phanh).

4. Viết chương trình di chuyển
- Chương trình 1: Khi nhấn nút BOOT, xBot Evo đi tới 2 giây, lùi lại 2 giây, quay trái 1 giây và quay phải 1 giây.

Chương trình Python
import yolo_uno
from mdv2 import *
from motor import *
from drivebase import *
from abutton import *
md_v2 = MotorDriverV2()
motor1 = DCMotor(md_v2, M1, reversed=False)
motor2 = DCMotor(md_v2, M2, reversed=False)
robot = DriveBase(MODE_2WD, m1=motor1, m2=motor2, m3=None, m4=None)
btn_BOOT = aButton(BOOT_PIN)
async def on_BOOT_pressed():
await robot.forward_for(2, unit=SECOND, then=STOP)
await robot.backward_for(2, unit=SECOND, then=STOP)
await robot.turn_left_for(1, unit=SECOND, then=STOP)
await robot.turn_right_for(1, unit=SECOND, then=STOP)
def deinit():
robot.stop()
yolo_uno.deinit = deinit
async def setup():
robot.speed(70, min_speed=40)
btn_BOOT.pressed(on_BOOT_pressed)
async def main():
await setup()
while True:
await asleep_ms(100)
run_loop(main())- Chương trình 2: Khi nhấn nút BOOT, xBot Evo đi theo hình vuông: đi tới 2 giây rồi quay phải, lặp lại 4 lần.
Gợi ý: dùng khối lệnh lặp lại 4 lần, bên trong gồm khối lệnh đi tới 2 giây và quay phải. Bạn cần thử và chỉnh thời gian quay phải sao cho robot quay được một góc vuông. Thời gian này phụ thuộc vào mặt sàn và lượng pin còn lại.
Ghi chú:
- Khi chọn tốc độ quá thấp, lực quay không đủ mạnh, robot sẽ đứng im. Hãy tăng tốc độ lên.
- Nếu robot di chuyển ngược hướng mong muốn, kiểm tra lại dây động cơ đã cắm đúng cổng M1 (trái), M2 (phải) chưa, hoặc bật đảo chiều quay cho động cơ bị ngược.
- Robot sẽ khó đi hình vuông thật chính xác khi quay theo thời gian. Ở bài sau, chúng ta sẽ dùng cảm biến góc để giải quyết vấn đề này.
5. Câu hỏi ôn tập
- Động cơ trái và động cơ phải của xBot Evo được nối vào cổng nào?
- Tốc độ động cơ nhận giá trị trong khoảng nào? Tốc độ âm có ý nghĩa gì?
- Sự khác nhau giữa dừng robot bằng dừng và bằng phanh là gì?
