问题描述
这是我使用的代码:
TACL
当我在终端中运行代码时,这就是我得到的
import multiprocessing
import pygame
from pygame.locals import *
from pygame import midi
from pyfirmata import Arduino
from time import sleep
board = Arduino('/dev/cu.usbmodem14101')
servo = board.get_pin('d:9:s')
def ardu (x,y,z):
for pos in range(120,68,-1):
servo.write(pos)
sleep(x)
print('downwards motion completed')
sleep(y)
print('sleep done')
for pos in range(68,120):
servo.write(pos)
sleep(z)
print('upwards motion completed')
def aud():
pygame.midi.init()
list = []
input_device = pygame.midi.Input(0)
while len(list) < 4:
if input_device.poll() == True:
event = input_device.read(1)[0]
data = event[0]
list.append(data[2])
list.append(event[1])
time = (list[3] - list[1])/1000
print(list[0],time)
def run(x,z):
p1 = multiprocessing.Process(target = aud)
p2 = multiprocessing.Process(target = ardu,args = [x,z,])
p1.start()
p2.start()
p1.join()
p2.join()
if __name__ == '__main__':
run(.000483,.25,.000483)
pygame.midi.quit()
程序没有执行完,我必须按 control + c 才能退出
虽然打印出“向上运动完成”,但电机从未真正上升,它卡在 120 度。
我尝试过的:我尝试从单独的文件中调用 ardu 和 aud 函数并从那里调用它们。这会导致在终端中弹出另一个 pygame 错误。我也试过将 pygame 2.0.1 (SDL 2.0.14,Python 3.8.7)
Hello from the pygame community. https://www.pygame.org/contribute.html
pygame 2.0.1 (SDL 2.0.14,Python 3.8.7)
Hello from the pygame community. https://www.pygame.org/contribute.html
downwards motion completed
sleep done
upwards motion completed
放在不同的地方。
此时,我不知道该怎么办:(
正确运行此代码会在终端中产生类似的结果
pygame.midi.init()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)