Python 保姆伺服控制
*Nanpy允许Raspi通过python拥有Arduino从机 现在我在使用保姆伺服软件包时遇到了极大的困难,我无法让它正常运行。我用它来制造一个机器人,由计算机无线控制,这就是我的代码:Python 保姆伺服控制,python,arduino,raspberry-pi,servo,Python,Arduino,Raspberry Pi,Servo,*Nanpy允许Raspi通过python拥有Arduino从机 现在我在使用保姆伺服软件包时遇到了极大的困难,我无法让它正常运行。我用它来制造一个机器人,由计算机无线控制,这就是我的代码: from nanpy import (ArduinoApi, SerialManager) import pygame from nanpy import Servo import time pygame.init() a=0 d=0 window = pygame.display.set_mode(
from nanpy import (ArduinoApi, SerialManager)
import pygame
from nanpy import Servo
import time
pygame.init()
a=0
d=0
window = pygame.display.set_mode((800,600))
pygame.display.set_caption("Console")
try :
connection = SerialManager()
ard = ArduinoApi(connection = connection)
run = True
except:
print("Connection Failed!")
servoA = Servo(2)
servoD = Servo(4)
while run :
for event in pygame.event.get():
keys = pygame.key.get_pressed()
# if (event.type==pygame.KEYDOWN):
if keys[pygame.K_s] and keys[pygame.K_a]:
a=a-1
servoA.write(a)
elif keys[pygame.K_s] and keys[pygame.K_d]:
d=d-1
servoD.write(d)
elif keys[pygame.K_w]:
a=a+1
d=d+1
servoD.write(d)
servoA.write(a)
elif keys[pygame.K_s]:
a=a-1
d=d-1
servoD.write(d)
servoA.write(a)
elif keys[pygame.K_d]:
d=d+1
servoD.write(d)
elif keys[pygame.K_a]:
a=a+1
servoA.write(a)
elif keys[pygame.K_t]:
run=False
pygame.quit()
这是python shell抛出的错误:
Traceback (most recent call last):
File "/home/pi/Desktop/nanpy/RobotCode.py", line 28, in <module>
servoA = Servo(2)
File "/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/servo.py", line 9, in __init__
self.id = self.call('new', pin)
File "/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py", line 150, in call
return _call(self.namespace, self.id, args, self.connection)
File "/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py", line 47, in _call
ret = return_value(connection)
File "/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py", line 18, in return_value
return serial_manager.readline().replace('\r\n', '')
File "/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/serialmanager.py", line 101, in readline
raise SerialManagerError('Serial timeout!')
nanpy.serialmanager.SerialManagerError: Serial timeout!
回溯(最近一次呼叫最后一次):
文件“/home/pi/Desktop/nanpy/RobotCode.py”,第28行,在
伺服A=伺服(2)
文件“/usr/local/lib/python3.4/dist-packages/nanpy-0.9.6-py3.4.egg/nanpy/servo.py”,第9行,在__
self.id=self.call('new',pin)
文件“/usr/local/lib/python3.4/dist packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py”,第150行,调用中
return\u调用(self.namespace、self.id、args、self.connection)
文件“/usr/local/lib/python3.4/dist packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py”,第47行,在调用
ret=返回值(连接)
文件“/usr/local/lib/python3.4/dist packages/nanpy-0.9.6-py3.4.egg/nanpy/arduinoboard.py”,第18行,返回值
返回serial_manager.readline()。替换('\r\n','')
readline中的文件“/usr/local/lib/python3.4/dist packages/nanpy-0.9.6-py3.4.egg/nanpy/serialmanager.py”,第101行
引发SerialManager错误('串行超时!')
nanpy.serialmanager.serialmanager错误:串行超时!
如何修复此问题,和/或我做错了什么?您需要指定Arduino的端口。因此,你可以试试:
connection=SerialManager(设备='/dev/ttyACM0')
或者您正在使用的任何端口。更新配置文件以使用伺服,并使用IDE将其上载到arduino,然后运行此程序
您可以在nanpy固件/nanpy文件夹中找到cfg.h文件。是否已将nanpy固件加载到Arduino?是的,我在安装参考中使用了此视频: