Skip to main content

Bài 4: Luồng dự án với các vòng lặp lồng nhau

Thu thập hai đĩa tiếp theo

  • Bây giờ, khi VR Robot đang đối mặt với các đĩa đỏ, VR Robot sẽ cần phải lặp lại các hành vi tương tự đã sử dụng để thu thập đĩa xanh, để nhặt và di chuyển đĩa đỏ. Hành vi lái xe về phía trước để nhặt đĩa, quay lại và lái xe trở lại mục tiêu cùng màu để thả đĩa xuống.

    Góc nhìn từ trên xuống của Sân chơi Di chuyển đĩa với các mũi tên chấm bi chỉ đường đi của Robot VR từ mục tiêu màu đỏ để thu thập đĩa màu đỏ và thả vào mục tiêu, sau đó chỉ sang bên phải để di chuyển đến mục tiêu màu xanh lá cây.
  • Sau khi đĩa đỏ đầu tiên được di chuyển, VR Robot sẽ phải di chuyển đến mục tiêu màu xanh lá cây và thực hiện các hành động tương tự như đã dùng để di chuyển đĩa xanh và đĩa đỏ để di chuyển đĩa xanh lá cây đầu tiên.

    Góc nhìn từ trên xuống của Sân chơi Di chuyển đĩa khi bắt đầu, với các mũi tên chấm chấm chỉ đường mà robot cần di chuyển để thu thập từng đĩa. Các mũi tên chỉ đến và đi từ mỗi mục tiêu đến đĩa đầu tiên, và các mũi tên bên phải bổ sung chỉ giữa mỗi khu vực mục tiêu.
  • Để lặp lại các hành vi nhiều lần, có thể sử dụng vòng lặp cho.
    Lệnh vòng lặp Python VEXcode VR trong định nghĩa chính. Lệnh đọc giá trị trong phạm vi có dấu hai chấm trong ngoặc đơn là 10 ở dòng đầu tiên, sau đó thụt lề bên dưới lệnh wait đọc wait có dấu hai chấm trong ngoặc đơn là 5, MSEC.
  • Thêm vòng lặp for vào đầu dự án, phía trên bình luận đầu tiên và đặt tham số hàm range thành '3'. Đảm bảo vòng lặp cho được thụt vào trong định nghĩa chính.

    def main():
        cho repeat_count trong phạm vi(3):
            wait(5, MSEC)
  • Để sao chép mã vào vòng lặpfor, bạn cần chú ý cẩn thận đến phần thụt lề. Đầu tiên, thêm khoảng trắng trước lệnhwaitđể vòng lặp trông như thế này:

    def main():
        cho repeat_count trong phạm vi(3):
    
    
            
            wait(5, MSEC)
  • Tiếp theo, chọn các lệnh để đưa vào vòng lặpforvà sao chép và dán chúng phía trên lệnhwait. Lưu ý rằng thụt lề sẽ không đúng sau khi chỉ sao chép và dán. Đường chỉ báo màu xám của vòng lặpchobị hỏng và bị ngắt kết nối khỏi lệnhchờ. Đây là dấu hiệu trực quan cho thấy dự án của bạn sẽ không thực hiện như mong đợi.Dự án ở trên, sao chép và dán vào vòng lặp for, với thụt lề không chính xác. Thụt lề đúng sẽ được hiển thị ở khối mã tiếp theo.
  • Chọn các lệnh bên trong vòng lặpforvà sử dụng 'Tab' để thụt lề đúng các lệnh trong vòng lặp. Khi thụt lề đúng cách, đường chỉ báo màu xám sẽ kết nối vòng lặp forvới lệnh waitđể hiển thị ranh giới của vòng lặp bên ngoài. Khi hoàn tất, dự án của bạn sẽ trông như thế này: 

    def main():
        cho repeat_count trong phạm vi(3):
            # 1. Truyền dữ liệu vào đĩa bằng Cảm biến Down Eye
            khi không sử dụng down_eye.near_object():
                drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain.stop()
    
            # 2. Nhấc đĩa
            nam châm.kích hoạt(BOOST)
    
            # 3. Lái xe đến đích bằng Cảm biến khoảng cách
            drivetrain.turn_to_heading(180, DEGREES)
            while front_distance.get_distance(MM) > 200:
                drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain. dừng()
    
            # 4. Thả đĩa vào mục tiêu
            magnet.energize(DROP)
            drivetrain.drive_for(REVERSE, 100, MM)
    
            # 5. Quay đầu và lái đến mục tiêu tiếp theo
            drivetrain.turn_to_heading(90, DEGREES)
            drivetrain.drive_for(FORWARD, 800, MM)
    
            # 6. Quay sang đĩa
            drivetrain.turn_to_heading(0, DEGREES)  
    
        wait(5, MSEC)
  • Xem video bên dưới để biết cách di chuyển các lệnh và điều chỉnh thụt lề như mô tả ở trên. Trong đoạn video clip, sáu phần bình luận của dự án được đánh dấu nổi bật và Menu ngữ cảnh được mở ra. Tùy chọn 'Cắt' được chọn, sau đó con trỏ được đặt bên dưới lệnh vòng lặp for . Menu ngữ cảnh được mở lại và 'Dán' được chọn. Các lệnh sau đó nằm trong vòng lặp for nhưng thụt lề không đúng cách. Sáu phần bình luận được tô sáng lại và nhấn phím 'Tab' trên bàn phím để thụt lề dự án đúng cách trong vòng lặp.
Tập tin video
  • Mở Disk Mover Playgroundnếu nó chưa mở và chạy dự án.
  • Khi dự án này được chạy, VR Robot sẽ nhặt và thả một đĩa của mỗi màu vào mục tiêu có màu tương ứng.

    Góc nhìn từ trên xuống của Robot VR ở cuối dự án, với một đĩa màu tương ứng trong mục tiêu phù hợp và Robot VR hướng về bức tường bên phải ở rìa mục tiêu màu xanh lá cây ở góc dưới bên phải.

Để bạn biết

Lưu ý rằng Robot VR tiếp tục đâm vào tường. Hành vi này là điều được mong đợi vì dự án đã hướng dẫn Robot VR rẽ phải và lái về phía mục tiêu tiếp theo ba lần. Lần đầu tiên lái xe từ đèn xanh sang đèn đỏ. Thứ hai là từ màu đỏ đến màu xanh lá cây, và thứ ba là từ màu xanh lá cây vào tường, vì không có mục tiêu màu nào khác. Dừng dự án khi Robot VR chạm vào tường. Dự án có thể được cải thiện để VR Robot dừng lại sau khi nhặt và di chuyển đĩa màu xanh lá cây, nhưng điều này sẽ làm tăng độ phức tạp chung của dự án.

Góc nhìn từ trên xuống của Robot VR ở cuối dự án, với nút Dừng trong cửa sổ Sân chơi được tô sáng ở góc bên trái. Trên Sân chơi, một đĩa màu tương ứng sẽ nằm trong mục tiêu phù hợp và Robot VR hướng về bức tường bên phải ở giữa mục tiêu màu xanh lá cây khi nút dừng được nhấn.

 

 

Câu hỏi

Vui lòng chọn liên kết bên dưới để truy cập bài kiểm tra bài học.

Google Doc / .docx / .pdf