Skip to main content

Bài 2: Sử dụng khối [Chờ cho đến khi]

Trong Bài học này, bạn sẽ tạo một dự án bằng cách sử dụng Cảm biến cản và khối [Chờ cho đến]. Trong thử thách nhỏ này, bạn sẽ áp dụng những kỹ năng này để di chuyển từ đầu Mê cung tường đến chữ 'A'.

Góc nhìn từ bên hông của Sân chơi mê cung tường với Robot VR ngay trước bức tường, cho thấy các bức tường có ba chiều và robot có thể va chạm vào chúng.

Kết quả học tập

  • Xác định rằng các khối không chờ đợi sẽ tiếp tục xử lý ngăn xếp ngay cả khi hành vi của khối chưa hoàn tất.
  • Xác định rằng khối chờ sẽ tạm dừng ngăn xếp cho đến khi hành vi của khối đó hoàn tất.
  • Xác định rằng việc làm nổi bật quá trình thực hiện dự án sẽ trực quan hóa các khối đang chờ và không chờ.
  • Xác định khối [Chờ cho đến khi] là khối Điều khiển chấp nhận các giá trị Boolean.
  • Xác định rằng khối [Chờ cho đến khi] sẽ kiểm tra nhiều lần một điều kiện Boolean và sẽ không chuyển sang khối tiếp theo cho đến khi điều kiện báo cáo là ĐÚNG.
  • Xác định rằng khối [Chờ cho đến khi] được sử dụng với khối không chờ (ví dụ: Drive) để kiểm tra tình trạng cảm biến.
  • Xác định khối <Pressing bumper> báo cáo giá trị ĐÚNG hoặc SAI trong khối [Chờ cho đến].
  • Xác định khối [Lái xe tới] và [Rẽ tới] là khối đặc biệt có thể chờ hoặc không chờ.
  • Mô tả cách tạo một dự án có Robot VR di chuyển về phía trước cho đến khi Cảm biến cản được nhấn.

Đặt tên và lưu dự án

  • Bắt đầu một dự án mới trong VEXcode VR và đặt tên cho dự án Unit4Lesson2.
Hộp tên dự án ở giữa Thanh công cụ VR VEXcode, được đánh dấu bằng hộp màu đỏ, bên trái nút Chọn sân chơi.

[Chờ cho đến khi] Khối

Khối [Chờ cho đến khi] là khối Điều khiển chấp nhận các điều kiện Boolean. [Chờ cho đến khi] các khối kiểm tra điều kiện Boolean nhiều lần và kiểm soát luồng dự án. Một dự án sẽ không di chuyển đến khối tiếp theo trong ngăn xếp cho đến khi điều kiện trong khối [Chờ cho đến khi] được báo cáo là ĐÚNG. Các khối [Chờ cho đến khi] được sử dụng kết hợp với các khối không chờ như [Lái] hoặc [Rẽ].

Để bạn biết

Các khối không chờ và chờ xác định thời điểm khối tiếp theo bắt đầu một hành vi. Các khối chờ, như [Lái tới] và [Rẽ tới], hoàn tất hành vi của chúng trước khi chuyển sang khối tiếp theo trong ngăn xếp. Các khối không chờ, chẳng hạn như [Lái] và [Rẽ], tiếp tục di chuyển đến khối tiếp theo trong ngăn xếp ngay cả khi hành vi của khối không chờ chưa hoàn tất.

Một số khối nhất định, như [Lái tới] và [Rẽ tới] có thể là khối chờ hoặc không chờ. Chọn mũi tên trên khối sẽ chuyển khối từ trạng thái chờ sang trạng thái không chờ.

Một ổ đĩa cho khối được hiển thị với mũi tên ở bên phải khối đóng và mở. Phía trên cùng, ổ đĩa cho khối đọc Truyền động về phía trước 200mm. Ở phía dưới, khối đó được mở rộng để có dòng chữ Tiến về phía trước 200mm và đừng đợi.

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

Khối không chờ Switch sẽ thêm tham số "wait=False" vào cuối khối. "wait=False" là lệnh Python yêu cầu khối không đợi và tiếp tục di chuyển đến các khối tiếp theo trong ngăn xếp.

Khối Switch tương đương được hiển thị với lệnh điều khiển là lệnh chờ và lệnh không chờ. Ở trên cùng, lệnh Python trong khối Switch đọc drivetrain dot drive_for (FORWARD, 200, MM). Ở phía dưới, lệnh tương tự được mở rộng để đọc drivetrain dot drive _ cho (FORWARD, 200, MM, wait = false).

  • Kéo khối [Ổ đĩa] không chờ vào không gian làm việc.

    Một dự án VEXcode VR mới với khối Khi bắt đầu có khối ổ đĩa được gắn vào và được đặt để chuyển tiếp.
  • Đính kèm khối [Chờ cho đến] bên dưới khối [Ổ đĩa].

    Cùng một dự án nhưng phải chờ cho đến khi khối được thêm vào cuối ngăn xếp. Tham số của khối Chờ cho đến khi trống.
  • Khối [Chờ cho đến khi] chấp nhận các điều kiện Boolean. Dự án này sẽ sử dụng Cảm biến cản để lái xe qua Mê cung tường Sân chơi. Kéo khối Boolean <Pressing bumper> vào khối [Chờ cho đến].

    Cùng một dự án với khối Bumper được thêm vào tham số của khối Wait until. Dự án hiện có nội dung là Khi bắt đầu, lái về phía trước, đợi cho đến khi nhấn cản trái.
  • Kéo khối [Dừng lái xe] và thêm vào dự án.

    Cùng một dự án với khối dừng lái xe được thêm vào bên dưới khối chờ cho đến. Dự án hiện có nội dung là Khi bắt đầu, lái về phía trước, đợi cho đến khi nhấn vào cản bên trái, sau đó dừng lái.
  • Khởi chạy Wall Maze Playground nếu nó chưa mở và chạy dự án.
  • Xem Robot VR di chuyển từ đầu Mê cung tường và dừng lại khi Cảm biến cản được ấn vào tường.
  • Khối [Drive] cho phép Robot VR tiếp tục di chuyển về phía trước trong khi kiểm tra tình trạng của Cảm biến cản bằng khối <Pressing bumper>. Khi số <Pressing bumper> báo cáo là ĐÚNG, Robot VR sẽ di chuyển đến khối tiếp theo trong ngăn xếp và dừng lái.

    Dự án VEXcode VR trong bài học này được chia nhỏ để thể hiện luồng dự án. Khối Khi bắt đầu được theo sau bởi khối truyền động về phía trước. Một mũi tên màu vàng hướng xuống từ khối dẫn động về phía trước tại khối Chờ cho đến khi nhấn cản trái. Bên phải khối là 2 mũi tên cong màu đỏ biểu thị chuyển động tròn và dòng chữ "không nhấn (sai)" cho biết điều gì xảy ra khi rô-bốt tiến về phía trước và công tắc cản không được nhấn. Bên dưới khối Chờ cho đến khi, một mũi tên màu xanh lá cây hướng xuống khối dừng lái với dòng chữ "đã nhấn (đúng)" cho biết dự án sẽ di chuyển đến khối dừng lái khi công tắc cản được nhấn.

    Để bạn biết

    Để theo dõi hình ảnh trực quan về các khối chờ và không chờ, hãy xem chức năng tô sáng thực thi mã trong VEXcode VR. Khi bắt đầu dự án này, điểm nổi bật màu xanh lá cây sẽ xuất hiện xung quanh khối [Chờ cho đến khi] cho đến khi điều kiện được đáp ứng. Điều này là do khối [Chờ cho đến khi] là khối chờ. Điểm nổi bật màu xanh lá cây sẽ xuất hiện để bỏ qua các khối không chờ vì các lệnh này được thực thi nhanh chóng.

    Dự án VEXcode VR từ bài học này với hộp chú thích màu đỏ xung quanh khối Chờ cho đến, cho biết đây là khối đang chờ.

     

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

    Đây là khối Switch chứa lệnh [Wait until] với <Bumper pressed>  Phóng viên Boolean.

    Dự án VEXcode VR như trên, nhưng khối Chờ cho đến khi được thay thế bằng khối Chuyển đổi. Lệnh Python trong khối Switch đọc while not left_bumper.pressed(): ở dòng đầu tiên. Sau đó thụt lề bên dưới khối Python đọc wait (5, msec).

    while not left_bumper.pressed():là lệnh Python kiểm tra xem cản bên trái có đang được nhấn hay không.

    wait (5, MSEC)là lệnh Python tạm dừng thực hiện kiểm tra trong 5 mili giây (MSEC), do đó dự án sẽ kiểm tra xem thanh cản bên trái có được nhấn hay không sau mỗi 5 MSEC. 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 (trong trường hợp này là nhấn nút cản trái) được đáp ứng.

    Trong VEXcode VR, lệnh wait luôn được thêm vào bằng một 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, vì dự án của bạn có thể không chạy như mong muốn.

    Khi nhấn vào thanh cản bên trái, robot sẽ dừng lái.

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.