Зупинка на лінії
У попередньому модулі ви написали та протестували функцію, яка могла точно визначити, чи датчик відбиття бачить лінію. У цьому завданні ви використаєте цю функцію, щоб змусити робота зупинятися, коли він бачить лінію.
XRP зупиняється, коли бачить лінію.
Розглянемо попереднє завдання — використання циклу while для проходження певної відстані:
from XRPLib.defaults import *
while drivetrain.get_left_encoder_position() < 20:
drivetrain.set_speed(5, 5)
drivetrain.stop()
У цьому коді перевіряється умова
drivetrain.get_left_encoder_position() < 20 що означає, що робот буде рухатися вперед зі швидкістю 5 см/с, поки лівий енкодер не прочитає відстань 20 см. Цей код можна легко модифікувати, щоб замінити поточну умову на умову, яка використовує функцію, яку ви написали.
Спробуйте
Змініть приклад коду, щоб використовувати вашу функцію (is_over_line()) як
умову для циклу.
Якщо вам потрібно «інвертувати» значення вашої функції (перетворити «False» на
True, а True в False), ви можете використати оператор not *перед викликом функції, наприклад: not is_over_line(). Цей код робить саме те, що й має робити: повертає True, коли робот не знаходиться над лінією.
Після того, як ви протестували свій код і переконалися, що він відповідає завданням,
створіть нову функцію під назвою drive_until_line() і вставте в неї свій код.
Не видаляйте цю функцію, вона знадобиться вам пізніше!
Виклик
Для додаткового виклику спробуйте написати код, який дозволить роботу проїхати кілька ліній і зупинитися на них. Робот повинен проїхати лінію, зупинитися на деякий час, скажімо, на дві секунди, а потім знову рушити до наступної лінії. Цей цикл повинен повторюватися нескінченно.
Порада
Вам потрібно буде написати логіку, яка буде обробляти виїзд робота за межі лінії! Вашого коду з основної активності може бути недостатньо для обробки цього! Подумайте, що буде робити ваш код, якщо він почне роботу вже на лінії.

