【发布时间】:2018-08-27 15:57:09
【问题描述】:
你好,有没有 time.sleep 的替代品? 因为我想让我的 LED 以准确的赫兹频率闪烁,这是因为调用 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)
【问题讨论】:
-
这需要有多精确?因为在像 Linux 这样的抢占式多任务操作系统下运行时,您的精确度存在硬性限制......
-
@MatteoItalia 应该尽可能精确。 p.s.我正在使用 Raspbian Stretch Lite 在 RasPi 上运行脚本
-
为了尽可能精确,您必须放弃 Linux,并在计算机器周期的裸机上编写汇编代码(可能在比现代 Cortex A 更简单的机器上)。同样,这里实际需要什么样的精度?
-
@MatteoItalia 我真的不能说,我只是被告知不要在睡眠时这样做,因为它不够精确。但我不知道有哪些方法和可用的精度水平
标签: python timer raspberry-pi sleep