python – 独立于其他命令每5分钟运行一部分代码
作者:互联网
我想打开,保持打开状态6秒钟,每5分钟关闭一个继电器,其余代码正常运行.
例如:
GPIO.output(18, 1)
sleep(6)
GPIO.output(18, 0)
sleep(300)
但没有其他程序堆栈在此延迟.我的Python代码是:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(37, GPIO.OUT)
Hologram = '/home/pi/Hologram/Hologram.mp4'
from subprocess import Popen
firstTimeOpen=0
while True:
doorIsOpen = GPIO.input(13)
if doorIsOpen==0 and firstTimeOpen == 0:
firstTimeOpen=1
GPIO.output(7, 0)
GPIO.output(37, 0)
sleep(0.5)
if doorIsOpen==1 and firstTimeOpen == 1:
GPIO.output(7, 1)
GPIO.output(37, 1)
omxp = Popen(['omxplayer' ,Hologram])
sleep(87)
GPIO.output(7, 0)
GPIO.output(37, 0)
firstTimeOpen=0
sleep(0.5)
解决方法:
线程提供了一种方便的方法.我通常创建一个threading.Thread子类,其run方法是要在单独的线程中运行的代码.所以你会想要这样的东西:
class BackgroundRunner(threading.thread):
def run(self):
while True:
GPIO.output(18, 1)
sleep(6)
GPIO.output(18, 0)
sleep(300)
然后,在开始运行主代码之前,请使用
bg_runner = BackgroundRunner()
bg_runner.start()
标签:raspberry-pi3,python 来源: https://codeday.me/bug/20190727/1554259.html