【问题标题】:Python Accurate timer for switching LED on Rasberry Pi用于在 Raspberry Pi 上切换 LED 的 Python 精确计时器
【发布时间】:2016-01-23 03:32:38
【问题描述】:

我正在使用 GPIO 库为树莓派创建一个 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 函数执行需要时间,而 sleep 函数不是很准确。因此,由于歌曲是由外部程序连续播放的,一分钟左右后 LED 会明显偏离音乐。

python 中是否有任何东西,可能使用某种多线程,可以让我准确地保持计时器运行?

【问题讨论】:

标签: python timer raspberry-pi


【解决方案1】:

要使线程这样做:

import threading

def blabla:
time.sleep (1)

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

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多