Программа работает в терминале, однако при загрузке через rc.local работает неправильно - PullRequest
0 голосов
/ 04 февраля 2019

, когда программа запускается через rc.local на raspberry pi 3, светодиод автоматически горит, но после нажатия кнопки включения он проходит цикл и работает правильно.Индикатор должен быть выключен при загрузке, а затем реагировать на нажатие кнопки, а не на включение после загрузки.Через терминал все работает правильно.Спасибо за вашу помощь!

Уже пытались поместить команду сна перед строкой в ​​rc.local, чтобы запустить программу, чтобы система полностью загрузилась, однако она все еще делала то же самое.Несколько раз перевернули реле между нормально разомкнутым и нормально замкнутым, вместе с кодом все еще не работает.

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)

Ожидаемые результаты: светодиод не горит, пока не нажата кнопка включения, затем проходит через10-секундный таймер и выключается, однако, светодиод также можно выключить во время таймера, нажав кнопку выключения.Это работает через терминал, но не работает при загрузке через rc.local.Через rc.local светодиод включается автоматически до тех пор, пока не будет нажата кнопка включения, затем запустится таймер и могут произойти другие действия.

...