该程序可在终端中运行,但是在通过rc.local引导时无法正常运行

时间:2019-02-04 16:20:31

标签: python button raspberry-pi3 relay

当程序在raspberry pi 3上的rc.local中运行时,LED会自动点亮,但是一旦按下on按钮,它就会循环并正确运行。 LED需要在启动时关闭,然后在按下按钮时作出反应,而不是在启动后再打开。通过终端,一切正常。感谢您的帮助!

已经尝试过在rc.local中的一行之前放置一个sleep命令来运行该程序,以使系统完全启动,但是它仍然做同样的事情。在常开和常闭之间已将继电器颠倒了几次,并且代码仍然不起作用。

from time import sleep
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
buttonOn=16
buttonOff=12
LED1=22
GPIO.setup(buttonOn,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(buttonOff,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(LED1,GPIO.OUT,)
BS1=False
Default=1.2
def countdown(x):
       while x > 0:
            GPIO.output(LED1,True)
            BS1=True
            print x/5
            x = x - 1
            if (GPIO.input(buttonOff)==1 and BS1==True):
                    GPIO.output(LED1,False)
                    BS1=False
                    print("Off button pressed")
                    break
            if x == 0:
                    GPIO.output(LED1,False)
                    print("Timer finished")
                    BS1=False
                    break
            sleep(.2)

while(1):
     if (GPIO.input(buttonOn)==1 and GPIO.input(buttonOff)==0 and BS1==False):
             BS1=False
             print("Power off")
             sleep(.2)
     elif (GPIO.input(buttonOn)==0 and BS1==False and Default==1.2):
             print("Default")
             countdown(50)
             Default=1.1
     elif (GPIO.input(buttonOn)==0 and BS1==False and Default!=1.2):
             print("On button pressed")
             Time=int(input('ENTER A TIME: '))
             Time=Time*5
             countdown(Time)
             sleep(.2)
     elif (GPIO.input(buttonOff)==1 and BS1==True):
             print("Off button pressed")
             BS1=False
             sleep(.2)

预期结果是LED一直关闭直到按下开按钮,然后运行10秒钟计时器然后熄灭,但是,也可以在计时器期间通过按off按钮来关闭LED。这可以通过终端运行,但不能通过rc.local引导。通过rc.local,LED会自动点亮,直到按下“打开”按钮,然后计时器开始计时,并可能发生其他操作。

0 个答案:

没有答案