我正在开发带有树莓派的机器人。为了检测障碍物,我正在使用FC-51
红外传感器。这是我当前的代码。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
ObstaclePin = 18
tServoPin = 15
GPIO.setup(tServoPin, GPIO.OUT)
GPIO.setup(ObstaclePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(tServoPin, GPIO.OUT)
tPwm = GPIO.PWM(tServoPin, 50)
tPwm.start(0)
def loop():
while True:
if (0 == GPIO.input(ObstaclePin)):
print ("Barrier is detected !")
#turn_right(tPwm)
def turn_right(tPwm):
for i in range(90, 180):
positiont = 1./18.*(i)+2
tPwm.ChangeDutyCycle(positiont)
time.sleep(0.02)
for i in range(180, 90, -1):
positiont = 1./18.*(i)+2
tPwm.ChangeDutyCycle(positiont)
time.sleep(0.05)
def destroy():
GPIO.cleanup()
if __name__ == '__main__': # Program start from here
try:
loop()
except KeyboardInterrupt:
destroy()
上面的代码可以正常工作。但是,当我取消对turn_right
功能中的loop()
行的注释时,即使首次检测后没有障碍物,红外传感器也会持续点亮灯泡。
我不明白这背后的逻辑。
我在这里做错什么了吗?
任何帮助都会很棒 提前非常感谢您!