0
我正在爲使用GPIO庫的樹莓派創建一個python程序,並使用它來控制LED閃爍到音樂。儘管如此,我仍然無法保持閃爍和音樂同步。我當前的代碼:Python準確定時器,用於在Rasberry Pi上切換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中是否有任何東西,也許使用某種多線程,可以讓我準確地保持定時器運行?
你有那麼它適應於設置LED所花費的時間來計算睡眠時間。基本上計算直到理想的喚醒點和睡眠時間的時間。 –
相關:[如何在python中定期運行函數](http://stackoverflow.com/q/24174924/4279) – jfs