Python - 替代 time.sleep
Python - Alternative to time.sleep
您好,有 time.sleep 的替代方案吗?
因为我想让我的 LED 以精确的 Hz 数量闪烁,所以无法调用 time.sleep 也需要时间,所以闪烁需要比预期更多的时间。
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
from threading import Thread
GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.IN)
def blink(port, hz):
GPIO.setup(port, GPIO.OUT)
while True:
if GPIO.input(32) == 1: //lever activated?
GPIO.output(port, GPIO.HIGH)
time.sleep(0.5/hz)
GPIO.output(port, GPIO.LOW)
time.sleep(0.5/hz)
else:
GPIO.output(port, GPIO.LOW)
#to make it easier to add new LED
def start(port, hz):
Thread(target=blink, args=(port, hz)).start()
#to add LED insert start(GPIOport, Hz)
start(15, 2)
start(16, 4)
start(18, 6)
start(22, 12)
start(29, 24)
要保持频率,请像这样使用睡眠:
time.sleep(desired_time - time.time())
这样小的延迟就不会累加了。
dtm = time.time()
pulse = 0.5/Hz
while True:
dtm += pulse
time.sleep(dtm - time.time())
# LED ON
dtm += pulse
time.sleep(dtm - time.time())
# LED OFF
如果确切的占空比(即 on/off 比率)不是问题,您可以简化循环:
while True:
time.sleep(pulse)
# LED ON
dtm += 2*pulse
time.sleep(dtm - time.time())
# LED OFF
更新,stop/resume 闪烁,查看评论,presudocode
pulse = 0.5/Hz
while True:
dtm = time.time()
while input32 == 1:
... blink LEDs ...
while not input32 == 1:
time.sleep(0.1)
您好,有 time.sleep 的替代方案吗? 因为我想让我的 LED 以精确的 Hz 数量闪烁,所以无法调用 time.sleep 也需要时间,所以闪烁需要比预期更多的时间。
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
from threading import Thread
GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.IN)
def blink(port, hz):
GPIO.setup(port, GPIO.OUT)
while True:
if GPIO.input(32) == 1: //lever activated?
GPIO.output(port, GPIO.HIGH)
time.sleep(0.5/hz)
GPIO.output(port, GPIO.LOW)
time.sleep(0.5/hz)
else:
GPIO.output(port, GPIO.LOW)
#to make it easier to add new LED
def start(port, hz):
Thread(target=blink, args=(port, hz)).start()
#to add LED insert start(GPIOport, Hz)
start(15, 2)
start(16, 4)
start(18, 6)
start(22, 12)
start(29, 24)
要保持频率,请像这样使用睡眠:
time.sleep(desired_time - time.time())
这样小的延迟就不会累加了。
dtm = time.time()
pulse = 0.5/Hz
while True:
dtm += pulse
time.sleep(dtm - time.time())
# LED ON
dtm += pulse
time.sleep(dtm - time.time())
# LED OFF
如果确切的占空比(即 on/off 比率)不是问题,您可以简化循环:
while True:
time.sleep(pulse)
# LED ON
dtm += 2*pulse
time.sleep(dtm - time.time())
# LED OFF
更新,stop/resume 闪烁,查看评论,presudocode
pulse = 0.5/Hz
while True:
dtm = time.time()
while input32 == 1:
... blink LEDs ...
while not input32 == 1:
time.sleep(0.1)