Trong dự án xBot này, chúng ta sẽ cùng lập trình biến xBot thành robot đậu xe thông minh – Có thể tìm chỗ trống đậu xe dựa vào khả năng nhận diện vật cản.
Cách làm như sau:
#Bật đèn màu xanh trên xBot led_onboard.show(1, hex_to_rgb('#00ff00')) led_onboard.show(2, hex_to_rgb('#00ff00')) # Nhấn nút để bắt đầu wait_for(lambda: (btn_onboard.is_pressed())) while True: # Dò vạch đen if line_array.read(0) == (0, 1, 1, 0): robot.forward(25) # Nếu phát hiện vạch đen thì kiểm tra xem vị trí đậu xe này còn trống hay không elif line_array.read(0) == (1, 1, 1, 1): speaker.play(['G3:1'], wait=True) if not (line_array.read(0) == (0, 1, 1, 0)): robot.set_wheel_speed(0, 30) wait_for(lambda: (line_array.read(0) == (0, 1, 1, 0))) robot.backward(25,0.3) robot.stop() time.sleep(0.5) robot.forward(25,0.5) robot.turn_left_angle(90) time.sleep(0.5) # Nếu vị trí không còn thì xoay trái về trục chính. Nếu không thì đậu vào và kết thúc chương trình if ultrasonic.distance_cm(1) < 10: robot.turn_right_angle(90) else: robot.forward(30,0.8) speaker.play(POWER_DOWN, wait=True) led_onboard.show(0, (0, 0, 0)) break elif (line_array.read(0) == (1, 1, 0, 0)) or (line_array.read(0) == (1, 0, 0, 0)): robot.turn_left(30) elif (line_array.read(0) == (0, 0, 1, 1)) or (line_array.read(0) == (0, 0, 0, 1)): robot.turn_right(30) else: robot.forward(25)
Đổi đèn LED thành màu xanh và chờ đến khi nút được nhấn, chương trình sẽ bắt đầu với vòng lặp lại while True.
Chúng ta sẽ lập trình để xBot di chuyển theo line:
Nếu xBot phát hiện vạch chắn ngang (cả 4 mắt đều phát hiện vạch đen), ta cho xBot phát âm thanh để báo hiệu:
Nếu vị trí của xBot chưa thực sự thẳng hàng với vạch đen (2 mắt đọc s2, s3 không thấy vạch đen), ta cho quay động cơ phải cho đến khi xBot thực sự thẳng hàng.
Sau đó, cho xBot lùi lại một chút để bánh sau xBot trùng với vạch đen chắn ngang (bạn có thể tinh chỉnh tốc độ và thời gian lùi sao cho phù hợp nhất với robot của mình nhé).
Sau khi xBot đã vào đúng vị trí, ta cho xBot dừng di chuyển và bắt đầu đi tới trong 0,5 giây, sau đó rẽ trái một góc 90 độ để kiểm tra trong bãi xe đã có xe khác hay chưa.
Kiểm tra khoảng cách tới vật cản phía trước để biết trong bãi đã có xe đậu hay chưa: