我的Raspberry pi 3B +女巫有一个python程序,通过使用Arduino-mk通过bash命令更新Arduino mega2560和Arduino Uno。每个Arduino都有自己的代码文件夹,其中包含其代码(.ino)和一个Makefile,如下所示:
ARDUINO_DIR = /usr/share/arduino
ARDUINO_PORT = /dev/ttyUSB0 (here is the problem)
USER_LIB_PATH = /home/pi/sketchbook/libraries
BOARD_TAG = mega2560 (Uno for the uno one)
include /usr/share/arduino/Arduino.mk
当我调用以下命令时:
os.system("(cd ~/sketchbook/mega; make upload clean)")
只有 mega 连接在 USB 端口上即可正常工作,并且 mega 被编程(仅与 Uno 相同)。 但是当我尝试完成这两项工作时:
os.system("(cd ~/sketchbook/mega; make upload clean)")
os.system("(cd ~/sketchbook/uno; make upload clean)")
arduino-mk 无法对 Uno 进行编程(多次超时)。
起初,Makefile中的第二行是:
ARDUINO_PORT = /dev/ttyAMC0
但它不起作用,所以我在网上检查了一下,发现一些 Arduino 副本在以下情况下效果更好:
ARDUINO_PORT = /dev/ttyUSB0
然后它工作了,但我无法得到任何结果,ttyUSB1到ttyUSB3(我希望它能像Windows上的COM端口一样工作)。
我还注意到,如果我继续使用 ttyUSB0 进行测试并尝试使用每个物理 USB 端口并工作,那么 ttyUSB0 指的是四个物理端口,对吗?
请问我怎样才能得到一个特定的端口名称? 或者有没有其他方法可以让Arduino-mk工作?
一次插入一个设备并查看ls -l /dev/serial/by-id/
的输出,您应该会看到指向实际设备节点的符号链接,但为您的特定设备唯一命名。
然后,您可以在相应的生成文件中设置ARDUINO_PORT=/dev/serial/by-id/unique_name
。