Программирование Myro - Заставить робота остановиться, когда он увидит препятствие
Я использую робота писанины и пишу код на Python. Я пытаюсь заставить его остановиться, когда он видит препятствие
Поэтому я создал переменные для левого датчика препятствий, центрального датчика препятствий и правого датчика препятствий
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
Тогда если заявление
if (left < 6400 & center < 6400 & right < 6400):
forward(1,1)
else:
stop()
По сути, идея заключается в том, что если датчики читают менее 6400, он должен двигаться вперед, в противном случае он должен остановиться. При тестировании писанины с senses
Я заметил, что если поднести робота к объекту, он будет показывать около 6400.
Вот что у меня есть для main()
код
def main():
while True:
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
lir = getIR(0)
rir = getIR(1)
if (left < 6400 & center < 6400 & right < 6400):
forward(1,1)
else:
stop()
Почему мой робот не отвечает? Код Python не показывает никаких ошибок, когда я помещаю его в оболочку, но с моим роботом ничего не происходит.
РЕДАКТИРОВАТЬ:
Некоторые изменения кода. Пока робот будет двигаться, но он не остановится. Мои утверждения if и else неверны?
center = getObstacle(1)
def main():
if (center < 5400):
forward(0.5)
else:
stop()
2 ответа
Похоже, вы были близки с вашим исходным кодом:
def main():
while True:
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
#lir = getIR(0)
#rir = getIR(1)
if (left < 6400 and center < 6400 and right < 6400):
forward(1, 0.1)
else:
stop()
break
Этот цикл оба измерения left
, center
а также right
и выполняет сравнения каждый раз в цикле. Я изменил звонок forward
двигаться только на одну десятую секунды, прежде чем делать больше измерений. Также, когда условие не выполняется, робот и петля останавливаются.
Кстати, кажется, вы не используете lir
а также rir
,
&
является побитовым оператором
and
является логическим оператором И
Итак, ваше состояние должно быть:
if (left < 6400 and center < 6400 and right < 6400):
forward(1,1)
else:
stop()