我的 pigpio pin 工厂有问题但是随着时间的推移,我想我解决了一个问题,但基本上我的代码可以运行,但它不能正确执行。我不确定我做错了什么,它只是忽略了。我该如何解决它?
Python 3.7.3 (/usr/bin/python3)
>>> %Run Robot.py
from gpiozero.pins.pigpio import PiGPIOFactory
from gpiozero import PWMOutputDevice, DistanceSensor
import time
from time import sleep
factory = PiGPIOFactory()
sensor1 = DistanceSensor(echo=24,trigger=23, pin_factory=factory)
#LEFT Motor
PWM_FORWARD_LEFT_PIN=13 #IN1-LEFT motor Forward input
PWM_REVERSE_LEFT_PIN=19 #IN2 LEFT motor Reverse input
forwardLeft=PWMOutputDevice(PWM_FORWARD_LEFT_PIN,True,0,1000)
reverseLeft=PWMOutputDevice(PWM_REVERSE_LEFT_PIN,True,0,1000)
#RIGHT Motor
PWM_FORWARD_RIGHT_PIN=5 #IN1-RIGHT motor Forward input
PWM_REVERSE_RIGHT_PIN=6 #IN2-RIGHT motor Reverse input
forwardRight=PWMOutputDevice(PWM_FORWARD_RIGHT_PIN,True,0,1000)
reverseRight=PWMOutputDevice(PWM_REVERSE_RIGHT_PIN,True,0,1000)
def stop():
forwardLeft.value=0
reverseLeft.value=0
forwardRight.value=0
reverseRight.value=0
def forward():
forwardLeft.value=0.5
reverseLeft.value=0
forwardRight.value=0.4
reverseRight.value=0
def reverse():
forwardLeft.value=0
reverseLeft.value=0.5
forwardRight.value=0
reverseRight.value=0.4
def left():
forwardLeft.value=0.2
reverseLeft.value=0
forwardRight.value=0.6
reverseRight.value=0
def right():
forwardLeft.value=.6
reverseLeft.value=0
forwardRight.value=0.2
reverseRight.value=0
while True:
#distance is returned in meters
distance_to_object = sensor1.distance * 100
#Avoid objects less then 40 cm away
if distance_to_object <= 40:
reverse()
time.sleep(0.5)
right() #right turn
time.sleep(0.5) #0.25seconds
else:
forward() #keep moving forward
time.sleep(0.1) #0.1 seconds