gpt4 book ai didi

python - 用python点亮led灯

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:40 25 4
gpt4 key购买 nike

在我的钢琴和 python 的帮助下,我正在尝试用 adafruit 点亮我的 dotstar led strip!

我正在从键盘获取我需要的信息,然后我尝试用 python 点亮它。唯一的问题是,这是一个巨大的延迟。如果我一次按下多个键,输入的信息就会变得太慢。

如果我删除点亮我的 LED 的代码,它运行良好,完全没有延迟。有什么办法可以加快速度吗?

我是 python 的新手,所以任何提示都会非常有帮助!

到目前为止,这是我的代码:

import pygame.midi
import board
import adafruit_dotstar as dotstar
dots = dotstar.DotStar(board.MOSI, board.SCK, 120, brightness=1)

def print_devices():
for n in range(pygame.midi.get_count()):
print (n,pygame.midi.get_device_info(n))

if __name__ == '__main__':
pygame.midi.init()
print_devices()



def number_to_note(number):
notes = ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']
return notes[number%12]

def number_to_note(number):
notes = ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']
return notes[number%12]

def readInput(input_device):
while True:
if input_device.poll():
event = input_device.read(1)[0]
data = event[0]
timestamp = event[1]
note_number = data[1]
velocity = data[2]
print (number_to_note(note_number), velocity)
dots[0] = (100, 255, 100)


if __name__ == '__main__':
pygame.midi.init()
my_input = pygame.midi.Input(3)
readInput(my_input

最佳答案

尝试线程化led函数

import threading
Import time
lock = threading.Lock()
def feedLED(dots,color):
with lock:
Start=time.time()
dots[0] = color
print('led', time.time()-Start)

While循环中实现

...
timestamp = event[1]
note_number = data[1]
velocity = data[2]
print (number_to_note(note_number), velocity)
color = (100, 255, 100)
threading.Thread(target = feedLED, args = (dots,color)).start()
...

但是,我感觉你设置有误,因为这个操作应该很快。

关于python - 用python点亮led灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54784512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com