用于在Rasberry Pi上切换LED的精确计时器

时间:2016-01-23 03:32:39

标签: python timer raspberry-pi

我正在使用GPIO库为raspberry pi创建一个python程序,并使用它来控制LED闪烁到音乐。我无法保持眨眼和音乐同步。我目前的代码:

for wval, bval, gval, yval, rval in data_gen:
    set_leds(whites, wval)
    set_leds(blues, bval)
    set_leds(greens, gval)
    set_leds(yellows, yval)
    set_leds(reds, rval)
    sleep(GRAPH_TIME)

在此代码中,

  • GRAPH_TIME是LED的刷新率,以秒为单位。目前设置为0.01,给我100hz的刷新率。
  • data_gen是一个nx5x3数组,其中n是以秒为单位的歌曲长度除以GRAPH_TIME.5x3代表5种颜色,每种颜色3个LED。每个条目的范围为0 - 100,表示LED的值。这些是通过将歌曲分成n个部分然后在每个部分执行fft并分离结果以获得LED的值来实现的。
  • set_leds是将某种颜色的所有LED设置为各自值的功能。

正如您所猜测的那样,问题是set_led函数需要时间来执行,而睡眠函数不是很准确。因此,由于歌曲是由外部程序连续播放的,大约一分钟后LED会明显偏离音乐。

python中有什么东西,也许是使用某种多线程,可以让我准确地让计时器保持运行?

1 个答案:

答案 0 :(得分:0)

创建一个线程:

import threading

def blabla:
time.sleep (1)

thread = threading.Thread(target=blabla)#set the target to the function we made
thread.start()#start thread