这个GPIO代码有什么错误

时间:2017-06-06 08:13:47

标签: python-2.7 raspberry-pi3

本编程基于L293D电机驱动器 例如,Pi 16,18,22中的引脚是与一侧电机相关的引脚 它有pinA和pinB用于打开任一方向的引脚pinE使得电机位于引脚22

from time import sleep
import thread
import RPi.GPIO as GPIO
class Motion:
    #this class is used to define the different motion of the wheel.
    def __init__(self,pinA,pinB,pinE):
        GPIO.setmode(GPIO.BOARD)
        Motor1A = pinA;
        Motor1B = pinB;
        Motor1E = pinE;
        GPIO.setup(Motor1A,GPIO.OUT)
        GPIO.setup(Motor1B,GPIO.OUT)
        GPIO.setup(Motor1E,GPIO.OUT)
    def forward(self):
        print "Moving Forward"
        GPIO.output(Motor1A,GPIO.HIGH)
        GPIO.output(Motor1B,GPIO.LOW)
        GPIO.output(Motor1E,GPIO.HIGH)
        GPIO.cleanup()
    sleep(2)
    def backword(self):
        print "Moving Backword"
        GPIO.output(Motor1A,GPIO.LOW)
        GPIO.output(Motor1B,GPIO.HIGH)
        GPIO.output(Motor1E,GPIO.HIGH)
        GPIO.cleanup()
    sleep(2)
    def stop(self):
        print "No Movements, Stoped"
        GPIO.output(Motor1E,GPIO.LOW)
        GPIO.cleanup()

1 个答案:

答案 0 :(得分:0)

您的代码存在的一个问题是您在每个方法后调用GPIO.cleanup()。这也会清除您使用GPIO.setmode(GPIO.BOARD)设置的GPIO引脚编号系统,因此如果您多次调用这些方法会导致问题。最好在脚本结束时只调用GPIO.cleanup()一次。在这些方法中,您可以在睡眠后将引脚转为低电平,以便在运行电机达到所需时间后停止电机。

如果您发布运行代码时看到的实际错误,有人可能会帮助您进一步调试。