簡體   English   中英

Python精確計時器,用於在Rasberry Pi上切換LED

[英]Python Accurate timer for switching LED on Rasberry 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函數需要花費時間才能執行,而sleep函數不是很准確。 因此,由於歌曲是由外部程序連續播放的,因此大約一分鍾后,LED會明顯偏離音樂。

python中是否有任何東西,也許使用某種多線程,可以讓我准確地保持計時器運行?

要創建線程,請執行以下操作:

import threading

def blabla:
time.sleep (1)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM