本编程基于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()
答案 0 :(得分:0)
您的代码存在的一个问题是您在每个方法后调用GPIO.cleanup()
。这也会清除您使用GPIO.setmode(GPIO.BOARD)
设置的GPIO引脚编号系统,因此如果您多次调用这些方法会导致问题。最好在脚本结束时只调用GPIO.cleanup()
一次。在这些方法中,您可以在睡眠后将引脚转为低电平,以便在运行电机达到所需时间后停止电机。
如果您发布运行代码时看到的实际错误,有人可能会帮助您进一步调试。