GPIO引脚变高时,停止循环。

时间:2019-05-01 20:09:31

标签: python-3.x raspberry-pi

我有一个带DRV8825驱动器芯片的步进电机连接到我的Raspberry Pi。我的目标是当传感器检测到金属(如止动块)时,电动机停止旋转。

使用代码,我使电机转动了4圈,然后停止。 当传感器检测到金属并且我开始“转向”时,电机不旋转。 因此Sensor可以正常工作。

我想要的是,电动机每旋转一步,回路就会检查一次传感器。

希望任何人都可以帮助我:)

GPIO.input(26) #Gets a signal from the sensor when metal is detected


def turnforward():
    while True:

        if (GPIO.input(26) == False): #False= Sensor sends LOW
            for i in range(800): # 800 steps = 4 rounds
                        GPIO.output(pinStep, True)
                        time.sleep(0.0018)
                        GPIO.output(pinStep, False)
            break # without the break the for loop in infinite
        else:
            break

1 个答案:

答案 0 :(得分:2)

尝试将您的传感器检查放入循环中

def turnforward():
    for i in range(800): # 800 steps = 4 rounds
        if (GPIO.input(26) == True): #False= Sensor sends LOW::My failure!
             break
        GPIO.output(pinStep, True)
        time.sleep(0.0018)
        GPIO.output(pinStep, False)