访问类内外的GPIO引脚

时间:2014-12-04 10:24:20

标签: python multithreading raspberry-pi gpio

我有一个脚本可以访问多组GPIO引脚,用于LED控制和电机控制。 电机控制的一个方面包含在用于线程的类中,另一个方面是一个单独的函数,它也访问相同的GPIO引脚。 我是否需要将所有电机控制器拉入同一级别,或者我可以从两个位置访问它们吗?

def MotorControl(direction,fspeed,bspeed):
  print "Controlling them pins"
  if direction == "fwd":
    bck.ChangeDutyCycle(0)
    fwd.ChangeDutyCycle(fspeed)
    print "forward at" + str(fspeed) + "%"
    return
 if direction == "bwd":
    bck.ChangeDutyCycle(bspeed)
    fwd.ChangeDutyCycle(0)
    print "back at" + str(bspeed) +  "%"
    return

class sliderControl(threading.Thread):
    GPIO.setmode(GPIO.BCM)
    GPIO_PWM1=14
    GPIO_PWM2=15
    GPIO_SW1=11

    GPIO.setup(GPIO_PWM1,GPIO.OUT)
    fwd = GPIO.PWM(GPIO_PWM1, 250)
    fwd.start(0)
    GPIO.setup(GPIO_PWM2,GPIO.OUT)
    bck = GPIO.PWM(GPIO_PWM2, 250)
    bck.start(0)
    #Setup input for switch monitoring
    GPIO.setup(GPIO_SW1, GPIO.IN, pull_up_down=GPIO.PUD_UP)


    def __init__(self,stop_event):
            super(sliderControl,self).__init__()
            self.stop_event = stop_event
            GPIO.cleanup()
    def run(self):
            while   self.stop_event:
                    print 'forward loop'
                    bck.ChangeDutyCycle(10)
                    fwd.ChangeDutyCycle(0)
                    time.sleep(5)
                    print 'backwards loop'
                    bck.ChangeDutyCycle(0)
                    fwd.ChangeDutyCycle(20)
                    time.sleep(5)

1 个答案:

答案 0 :(得分:0)

我不禁感到以下代码:

GPIO_PWM1=14
GPIO_PWM2=15
GPIO_SW1=11

会更好地作为整个程序顶部的常量,此时你可以从程序的任何地方调用它们输出到它们,然后整个问题就不复存在了。