我在尝试使用 python 与 Arduino 进行通信时遇到错误,我正在使用 Arduino 模块,并且遇到无法打开端口错误,但我可以从 Arduino IDE 与我的 Arduino 进行通信。
from Arduino import Arduino
import time
board = Arduino(port="/dev/cu.usbmodem14201") # plugged in via USB, serial com at rate 115200
board.pinMode(13, "OUTPUT")
while True:
board.digitalWrite(13, "LOW")
time.sleep(1)
board.digitalWrite(13, "HIGH")
time.sleep(1)
这是我的错误
serial.serialutil.SerialException: [Errno 2] could not open port /dev/cu.usbmodem14201: [Errno 2] No such file or directory: '/dev/cu.usbmodem14201'
当我尝试使用 pyfirmata 时,出现错误
这是我的代码:
import pyfirmata
import time
board = pyfirmata.Arduino('/dev/cu.usbmodem14201')
led = board.get_pin('d:13:o')
while True:
led.write(1)
time.time(1)
led.write(0)
time.time(1)
我的 pyfirmata 错误:
AttributeError: partially initialized module 'pyfirmata' has no attribute 'Arduino' (most likely due to a circular import)
作为前言,我已经与 Arduino 进行了一些串行通信,但还没有广泛使用 Arduino 库。
如果您还没有这样做,我建议您考虑一下 PySerial 库。这可能有助于解决 Mac 和主板之间串行连接的初始问题。这并不能完全解决您直接写入 LED 的需求,但同时可以作为替代方案。您可以使用来自 Mac 的传入串行通信来指导 Arduino 上的某些操作。
我使用过的一个很棒的教程可以在这里找到: https://create.arduino.cc/projecthub/ansh2919/serial-communication- Between-python-and-arduino-e7cce0
另一个问题可能是您的串行监视器可能处于活动状态,这会阻止设备之间通过 Python 进行串行通信。
向chatgpt询问此错误。它表明最新版本的“pyfirmata”应该已经解决了“pyfirmata.py”源代码下“inspect.getargspec”的问题。它应该用“inspect.getfullargspec”替换它您可以尝试打开终端并运行以下命令,用“pip install --upgrade pyfirmata”更新“pyfirmata”