Skip to main content

Bài 3: Lái xe đến số '31'

Trong Bài học này, Robot VR sẽ di chuyển đến số '31' rồi quay lại số '1' trên Sân chơi Bản đồ lưới số số!

Góc nhìn từ trên xuống của sân chơi Bản đồ lưới số, với số 31 được đánh dấu bằng hộp màu đỏ. Robot VR bắt đầu từ ô số 1 và ô số 31 cách ô số 1 ba ô phía trên.

Lưu ý rằng Robot VR sẽ di chuyển dọc theo trục Y để di chuyển đến số '31' trên Sân chơi Bản đồ lưới số .

Góc nhìn từ trên xuống của sân chơi Bản đồ lưới số, với ô số 31 được đánh dấu bằng hộp đen. Một đường thẳng biểu thị các phép đo trên trục Y, với khoảng cách đầu tiên là -900 mm trên trục Y và khoảng cách tiếp theo là -700, tiếp tục tăng thêm 200 mỗi lần. Khoảng trống số 31 nằm ở vị trí Y là -300 mm.

Robot VR sẽ di chuyển đến vị trí số '31' trên Sân chơi bản đồ lưới số . Tuy nhiên, trước khi VR Robot có thể điều hướng đến số đó, VR Robot phải được cho biết vị trí của số đó. Tọa độ của số '31' là (-900, -300).

Góc nhìn từ trên xuống của sân chơi Bản đồ lưới số, với hai chỉ báo trục đánh dấu vị trí của ô số 31. Robot VR bắt đầu ở vị trí -900 X và -900 Y, trong khi không gian số 31 nằm ở vị trí -900 X và -300 Y.
  • Kéo khối [Ổ đĩa] không chờ vào không gian làm việc.

    Một dự án khối VEXcode VR mới bắt đầu bằng khối When Started theo sau là khối Drive Forward.
  • Đính kèm khối [Chờ cho đến] bên dưới khối [Ổ đĩa].

    Tiếp tục dự án khối VEXcode VR, hiện có thêm khối Wait Until sau khối Drive Forward. Toàn bộ dự án hiện có nội dung là Khi bắt đầu, Tiến về phía trước và Đợi cho đến khi. Khối Wait Until có tham số boolean rỗng.
  • Kéo khối báo cáo Boolean <Greater than> vào khối [Chờ cho đến].

    Tiếp tục dự án khối VEXcode VR, hiện có khối Lớn hơn được chèn vào khối Chờ cho đến. Toàn bộ dự án hiện có nội dung là Khi bắt đầu, Lái về phía trước theo sau là khối Đợi cho đến khi có khối Lớn hơn trong đó có nội dung là 'khoảng trống Lớn hơn 50'.
  • Lưu ý rằng khối <Greater than> được sử dụng thay cho khối <Less than> vì Robot VR đang lái xe lên từ dưới cùng của Sân chơi. Robot VR bắt đầu ở giá trị Y là -900 milimét (mm). Khi Robot VR tiến về phía trước, giá trị Y sẽ tăng lên.

    Cùng góc nhìn từ trên xuống của sân chơi Bản đồ lưới số với hai chỉ báo trục đánh dấu vị trí của ô số 31 như trước đó. Robot VR bắt đầu ở vị trí -900 X và -900 Y, trong khi không gian số 31 nằm ở vị trí -900 X và -300 Y.
  • Kéo khối (Vị trí của Robot) vào khối <Greater than>.

    Tiếp tục dự án khối VEXcode VR, hiện có khối Vị trí của Robot được chèn vào khối Lớn hơn. Toàn bộ dự án hiện có nội dung là Khi bắt đầu, tiến về phía trước và đợi cho đến khi vị trí X của Robot tính bằng milimét lớn hơn 50.
  • Đặt tham số của khối (Vị trí của Robot) thành “Y” và tham số của khối <Greater than> thành -300.

    Tiếp tục dự án khối VEXcode VR, hiện tại trục của khối Vị trí Robot được thay đổi từ X thành Y và tham số thứ hai của khối Lớn hơn được thay đổi từ 50 thành -300. Toàn bộ dự án hiện có nội dung là Khi bắt đầu, tiến về phía trước và đợi cho đến khi vị trí Y của Robot tính bằng milimét lớn hơn -300.
  • Kéo khối [Dừng lái xe] và thêm vào dự án.

    Tiếp tục dự án khối VEXcode VR, hiện có thêm khối Dừng lái xe bên dưới khối Chờ cho đến khi. Toàn bộ dự án hiện có nội dung là Khi bắt đầu, tiến về phía trước và đợi cho đến khi vị trí Y của Robot tính bằng milimét lớn hơn -300. Cuối cùng, hãy ngừng lái xe.
  • Khởi chạy Sân chơi bản đồ lưới số nếu nó chưa được mở và chạy dự án.
  • Xem Robot VR lái xe đến số '31' trên Sân chơi bản đồ lưới số .

    Góc nhìn từ trên xuống của sân chơi Bản đồ lưới số với robot VR nằm trên ô số 31.
  • Trong dự án này, Robot VR sẽ di chuyển đến số '31' trên Sân chơi bản đồ lưới số . Vì giá trị Y tăng dần khi Robot VR di chuyển đến số '31' nên dự án sử dụng khối <Greater than>.
  • Robot VR sẽ dừng lại khi giá trị Y của nó bằng lớn hơn so với giá trị Y của tọa độ chứa số được chỉ định. Vì giá trị Y của số '31' là -300, nên Robot VR sẽ dừng lái khi giá trị Y lớn hơn -300.
Sơ đồ trực quan hóa luồng logic trong dự án VEXcode VR Blocks. Dự án bắt đầu bằng khối Khi bắt đầu và sau đó bắt đầu lái về phía trước, và giữ lệnh đó cho đến khi Vị trí Y của cảm biến Robot tính bằng milimét lớn hơn -300, sau đó khối Dừng lái sẽ kết thúc lệnh Lái về phía trước.

Sử dụng khối chuyển đổi 

Trong Bài học này, bạn đã học cách sử dụng khối VEXcode [Chờ cho đến khi] với điều kiện Boolean để ra lệnh cho robot đợi cho đến khi robot đạt đến vị trí lớn hơn -300 trên trục Y trước khi chuyển sang hành vi tiếp theo.

Hình ảnh bên dưới hiển thị khối VEXcode bên cạnh khối Switch chứa lệnh Python cho cùng hành vi. 

So sánh khối Chờ đến khi VEXcode VR và khối chuyển đổi tương ứng. Khối VR ghi 'Chờ cho đến khi vị trí Y của Robot tính bằng milimét lớn hơn -300'. Mã Python của khối chuyển đổi có nội dung là 'while not location.position(Y, MM) > -300: wait(5, MSEC)'. Lệnh wait được thụt vào bên dưới lệnh while not.Trong khối Switch,while not location.position(Y, MM) > -300:là lệnh Python đầu tiên kiểm tra xem vị trí của robot dọc theo trục X có lớn hơn -300 hay không.

Lệnh thụt lề thứ hai,wait (5, MSEC),tạm dừng thực thi vòng lặp có điều kiện trong 5 mili giây.

Trong VEXcode VR, lệnh wait luôn được thêm vào vòng lặp có điều kiện. Mục đích của lệnh wait là để đảm bảo VEXcode VR có thể chạy dự án đúng như mong muốn, do nền tảng VEXcode VR là nền tảng dựa trên web. Không bao giờ nên xóa lệnh wait khi sử dụng vòng lặp có điều kiện, nếu không dự án của bạn có thể không chạy như mong đợi. 

Trong ví dụ này, dự án kiểm tra xem vị trí của robot có lớn hơn giá trị Y là -300 sau mỗi 5 MSEC hay không. Dòng mã này được thụt vào bên dưới dòng mã đầu tiên vì lệnh này là hành vi sẽ lặp lại cho đến khi điều kiện (giá trị tọa độ Y lớn hơn -300) được đáp ứng. 

Chọn nút Tiếp theo để tiếp tục phần còn lại của Bài học này.