簡體   English   中英

運行我的機器人的python代碼會返回語法錯誤,但我不知道該錯誤是什么

[英]Running the python code of my robot returned a syntax error and I do not know what the error is

我在避開機器人作為學校項目的障礙。 我正在嘗試在下面運行此Python代碼,但是出現了語法錯誤。 機器人應該移動,但不能工作,因此機器人也沒有運動。 我找不到此錯誤的原因。 您能建議我在代碼中有什么問題嗎?

import RPi.GPIO as GPIO  #Import GPIO library
import time              #Import time library
import traceback
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)   #GPIO are set in BCM format
TRIG = 24
ECHO = 27
##led = 22
m11 = 4
m12 = 26
m21 = 22
m22 = 23
GPIO.setup(TRIG,GPIO.OUT)   #Initialize GPIO Pin as outputs
GPIO.setup(ECHO,GPIO.IN)    #Initialize GPIO Pin as input
##GPIO.setup(led,GPIO.OUT)                  
GPIO.setup(m11,GPIO.OUT)
GPIO.setup(m12,GPIO.OUT)
GPIO.setup(m21,GPIO.OUT)
GPIO.setup(m22,GPIO.OUT)
##GPIO.output(led, True)
time.sleep(5)
def stop(): ##Stops the robot
    print("STOP")
    GPIO.output(m11, False)
    GPIO.output(m12, False)
    GPIO.output(m21, False)
    GPIO.output(m22, False)
def forward(): ##The robot moves forward
    GPIO.output(m11, True)
    GPIO.output(m12, False)
    GPIO.output(m21, True)
    GPIO.output(m22, False)
    print("Forward")
def back(): ##The robot moves backwards
    GPIO.output(m11, False)
    GPIO.output(m12, True)
    GPIO.output(m21, False)
    GPIO.output(m22, True)
    print("Back")
def left(): ##The robot turns to the left
    GPIO.output(m11, False)
    GPIO.output(m12, False)
    GPIO.output(m21, True)
    GPIO.output(m22, False)
    print("Left")
def right(): ##The robot turns to the right
    GPIO.output(m11, True)
    GPIO.output(m12, False)
    GPIO.output(m21, False)
    GPIO.output(m22, False)
    print("Right")
stop()
count = 0

try:
    while(True):
        i = 0
        avgDistance = 0
        for i in range(5):
            GPIO.output(TRIG, False)  #Set TRIG as LOW
            time.sleep(0.1)           #Delay
            GPIO.output(TRIG, True)   #Set TRIG as HIGH
            time.sleep(0.00001)       #Delay of 0.00001 seconds
            GPIO.output(TRIG, False)  #Set TRIG as LOW
        while(GPIO.input(ECHO)==False): #Check whether the ECHO is LOW             
            pulse_start = time.time()
        while(GPIO.input(ECHO)==True): #Check whether the ECHO is HIGH
            pulse_end = time.time()
        pulse_duration = pulse_end - pulse_start #time to get back the pulse to sensor
        distance = pulse_duration * 17150        #Multiply pulse duration by 17150 (34300/2) to get distance
        distance = round(distance,2)  #Round to two decimal points
        avgDistance = avgDistance + distance
        avgDistance = avgDistance / 5
        print(avgDistance)
        flag = 0
        if(avgDistance < 15): #Check whether the distance is within 15 cm range
            count = count + 1
            stop()
            time.sleep(1)
            back()
            time.sleep(1.5)
        if((count%3 == 1) & (flag == 0)):
            right()
            flag = 1
        else:
            left()
            flag = 0
            time.sleep(1.5)
            stop()
            time.sleep(1)
        else:
            forward()
            flag = 0
except Exception:
    traceback.print_exc()
finally:
    GPIO.cleanup()

您有兩個關閉else塊,縮進不良,可能是您的意思:

    ...
    if(avgDistance < 15): #Check whether the distance is within 15 cm range
        count = count + 1
        stop()
        time.sleep(1)
        back()
        time.sleep(1.5)
        if((count%3 == 1) & (flag == 0)):
            right()
            flag = 1
        else:
            left()
            flag = 0
            time.sleep(1.5)
            stop()
            time.sleep(1)
    else:
        forward()
        flag = 0
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM