Программирование 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()
Другие вопросы по тегам