因此,我正在尝试学习python的PyFirmata模块,该模块允许我们用Python编写代码并将其上传到Arduino开发板。
我正在从这个网站上学习它。
导致内置LED闪烁的代码:
import pyfirmata
import time
board = pyfirmata.Arduino('/dev/ttyACM0') #This Line gives error
while True:
board.digital[13].write(1)
time.sleep(1)
board.digital[13].write(0)
time.sleep(1)
但是,当我运行它(在Sublime Text 3中)时,出现此错误:
raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port '/dev/ttyACM0': FileNotFoundError(2, 'The
system cannot find the path specified.', None, 3)
[Finished in 7.0s]
有人可以帮我解决此错误吗?
您尝试访问的端口不存在,或者您的程序没有访问该端口的权限。
首先检查端口是否存在。如果您已安装Arduino软件,则可以从中进行检查。万一丢失,则应显示另一个端口,如/dev/ttyACM*
,其中*
为任意数字。选择它并尝试运行。如果存在,但该程序仍然无法正常运行,请访问arduino官方网站。
这个问题用两个命令解决。打开终端并输入:
ls -l /dev/ttyACM*
然后,您将获得如下内容:
crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0
这里我们需要的是dialout
。在上面的命令之后,键入以下命令,然后重新启动设备。
sudo usermod -a -G your_username
这应该可行,但是在某些情况下却不可行。然后,您需要将端口添加到根访问权限:
================================================== ========================== cd ~/etc/udev/rules.d
在此目录中,创建一个新.rules
文件,并向其中添加以下内容:
KERNEL=="ttyACM0", MODE="0666"
这应该工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句