Python 代码不执行。没有显示错误(树莓派)

问题描述 投票:0回答:1

我的 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
python raspberry-pi robot gpiozero pigpio
1个回答
1
投票

通过阅读文档,您可能错过了对

PWMOutputDevice.on()
的呼叫。因此,也许可以在四个实例中分别调用
.on()

© www.soinside.com 2019 - 2024. All rights reserved.