Skip to main content

Bài 3: Khi phát hiện màu đỏ

Không có lệnh nào cho Robot VR biết phải làm gì khi phát hiện màu đỏ. Để tránh đường viền màu đỏ, VR Robot phải đảo ngược và rẽ khi phát hiện màu đỏ, giống như trong video này.

Tệp video
  • Thêm chú thích vào cuối vòng lặpwhileđể chỉ ra điều gì sẽ xảy ra khi Cảm biến mắt xuống phát hiện đường viền màu đỏ. Dự án của bạn bây giờ sẽ trông như thế này:

    def main():
    	# Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện
    	khi không down_eye.detect(RED):
    		# Cảm biến khoảng cách có phát hiện ra lâu đài không?
    		
    		if front_distance.found_object():
    			# Phát hiện lâu đài va chạm bằng Cảm biến khoảng cách
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Quay để tìm lâu đài bằng Cảm biến khoảng cách
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
    		
    	# Lùi lại và quay khi phát hiện đường viền màu đỏ
  • Thêm lệnh drive_forturn_for bên dưới bình luận để cho phép Robot VR đảo ngược và rẽ khi Cảm biến mắt xuống phát hiện màu đỏ.

    def main():
    	# Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện
    	khi không down_eye.detect(RED):
    		# Cảm biến khoảng cách có phát hiện ra lâu đài không?
    		
    		if front_distance.found_object():
    			# Phát hiện lâu đài va chạm bởi Cảm biến khoảng cách
    			drivetrain.drive(FORWARD)
    		
    		else:
    			# Quay để tìm lâu đài bằng Cảm biến khoảng cách
    			drivetrain.turn(RIGHT)
    			
    		wait(5, MSEC)
    		
    	# Lùi lại và quay khi phát hiện đường viền màu đỏ
    	drivetrain.drive_for(REVERSE, 300, MM)
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
  • Mở Dynamic Castle Crasher Playgroundnếu nó chưa được mở và chạy dự án. Liệu Robot VR có hoạt động như bạn mong muốn không?
  • Khi dự án này được chạy, có hai điều kiện được kiểm tra. Đầu tiên là tình trạng của Cảm biến mắt xuống phát hiện màu đỏ bên trong vòng lặp while. Lưu ý rằng luồng dự án sẽ chuyển sang điều kiện tiếp theo của đối tượng được phát hiện CHỈ nếu Cảm biến mắt xuống không nhìn thấy màu đỏ. Nếu Cảm biến mắt nhìn xuống phát hiện màu đỏ, luồng dự án sẽ bỏ qua câu lệnh if else và chuyển sang lái xe lùi và rẽ.
    Bài học này trình bày mã dự án Python cùng sơ đồ thể hiện luồng dự án ở bên cạnh. Nội dung là Điều kiện đầu tiên được kiểm tra: Cảm biến mắt nhìn xuống phát hiện màu đỏ trong màu cam, biểu thị sự bắt đầu của vòng lặp. Có một vòng mũi tên màu đỏ khi Cảm biến mắt xuống phát hiện màu đỏ, sẽ báo cáo là Đúng và Dự án sẽ thoát khỏi chế độ xem lặp lại. Nếu báo cáo sai, mã sẽ chuyển đến câu lệnh if then và tiếp tục lặp lại cho đến khi Cảm biến mắt xuống phát hiện màu đỏ.
 
  • Điều kiện thứ hai được kiểm tra là câu lệnhif else. Trong khi Cảm biến mắt xuống không phát hiện màu đỏ, dự án sẽ tiếp tục trong vòng lặpwhileđể kiểm tra tình trạng của Cảm biến khoảng cách. Robot VR sẽ sử dụng dữ liệu từ Cảm biến khoảng cách để đưa ra quyết định tiến về phía trước hay rẽ phải. Bài học này trình bày mã dự án Python cùng sơ đồ thể hiện luồng dự án ở bên cạnh. Nó ghi Điều kiện thứ hai được kiểm tra: Cảm biến khoảng cách phát hiện vật thể. Nó cho thấy điều gì xảy ra nếu điều kiện thứ hai được chọn và nếu báo cáo là đúng, Robot VR sẽ tiến về phía trước và nếu điều kiện thứ hai báo cáo là sai, Robot VR sẽ rẽ phải.
  • Tuy nhiên, khi Cảm biến mắt xuống phát hiện màu đỏ, Robot VR sẽ lái ngược lại, rẽ rồi dừng lại vì đó là điểm kết thúc của quy trình dự án. Không có vòng lặp nào được sử dụng để lặp lại các hành vi.

    Góc nhìn từ trên xuống của sân chơi Dynamic Castle Crashed cho thấy một số lâu đài bị đổ, trong khi robot VR đã đảo ngược và quay lại sau khi vượt qua đường viền màu đỏ, do đó nó quay mặt về phía trung tâm của sân chơi một lần nữa.

Thêm vòng lặp vô hạn while

  • Cần có một vòng lặp vô hạn whileđể các hành vi được lặp lại trong một vòng lặp. Kéo hoặc nhập vòng lặp while vào đầu dự án và đặt điều kiện thành True để tạo vòng lặp vô hạn. Sau đó, sao chép và dán mã trước đó vào vòng lặp vô hạn while. Đảm bảo rằng các lệnh được thụt lề đúng cách dưới các tiêu đề chính xác, nếu không, dự án có thể không chạy như mong đợi. Dự án của bạn bây giờ sẽ trông như thế này:

    def main():
    
    	while True:
    		# Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện
    		while not down_eye.detect(RED):
    			# Cảm biến khoảng cách có phát hiện ra lâu đài không?
    		
    			if front_distance.found_object():
    				# Phát hiện lâu đài va chạm bởi Cảm biến khoảng cách
    				drivetrain.drive(FORWARD)
    		
    			else:
    				# Quay để tìm lâu đài bằng Cảm biến khoảng cách
    				drivetrain.turn(RIGHT)
    			
    			wait(5, MSEC)
    		
    		# Lùi lại và quay khi phát hiện đường viền màu đỏ
    		drivetrain.drive_for(REVERSE, 300, MM)
    		drivetrain.turn_for(RIGHT, 90, DEGREES)
    
  • Mở Dynamic Castle Crasher Playgroundnếu nó chưa được mở và chạy dự án. Liệu Robot VR có hoạt động như bạn mong muốn không? 
  • Khi dự án này được chạy, VR Robot sẽ lái về phía lâu đài được phát hiện và rẽ phải nếu không có lâu đài nào được báo cáo. Khi cảm biến mắt nhìn xuống phát hiện màu đỏ, VR Robot sẽ lùi lại, quay đầu và tiếp tục lái về phía một lâu đài khác.

    Góc nhìn từ trên xuống của sân chơi Dynamic Castle Crasher cho thấy Robot VR đã lật đổ nhiều lâu đài trong sân chơi và hiện đang di chuyển về phía lâu đài còn sót lại cuối cùng.

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