无法使用stino和Ubuntu 12.04(精确穿山甲)将代码上传到Arduino Uno

Luc*_*ini 5 arduino sublimetext2 ubuntu-12.04

我已经成功地在Sublime Text 2 上安装了stino ,但是当我尝试将我的代码上传到Arduino Uno时,输出如下:

上传/home/lucas/Arduino_Build/programa_teste/programa_teste.hex到Arduino的乌诺...
AVRDUDE:ser_open():无法打开设备"的/ dev/ttyACM0":权限被拒绝
的ioctl( "TIOCMGET"):不适当的IOCTL用于设备
[Stino - 上传时出错.]

我安装了Arduino IDE,它工作正常,只有Sublime Text无法上传代码.

zmo*_*zmo 4

好吧,正如 @Bibhas 所说,你的问题是/dev/ttyACM0权限错误,这与 Arduino 或 sublime text 无关。Linux 内核默认创建字符设备,无需用户权限。

\n\n

但好消息是它可以改变!

\n\n

快速而简单的解决方案是将当前用户添加到dialout组中:

\n\n
sudo adduser YOU dialout\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中 YOU 是您的用户名,然后注销并重新登录以使这些新权限传播到您的 shell 中。

\n\n

暗示:

\n\n

有一个稍微复杂一点的解决方案,就是创建一个 udev 规则,例如:

\n\n

/etc/udev/rules.d/48-arduino.rules

\n\n
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="arduino_end"\nSUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", MODE="660", GROUP="arduino", SYMLINK+="arduino.leonardo"\nLABEL="arduino_end"\n
Run Code Online (Sandbox Code Playgroud)\n\n

它创建一个/dev/arduino由 arduino 组可读可写的设备,您需要创建该设备(或者您可以使用默认dialout组,这完全没问题):

\n\n
addgroup arduino\nadduser YOU arduino\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后重新加载您的规则:

\n\n
sudo udevadm control --reload-rules\n
Run Code Online (Sandbox Code Playgroud)\n\n

第二个提示的好处是,当您拔下重新插入 arduino 时,您不会让它奇怪地更改设备编号,它将保留名称。如果您没有使用 arduino leonardo,您可以使用 lsusb 检查您的设备 idvendor/idproduct:

\n\n
% lsusb                \n\xe2\x80\xa6                      \xe2\x86\x93\xe2\x86\x93\xe2\x86\x93\xe2\x86\x93 \xe2\x86\x93\xe2\x86\x93\xe2\x86\x93\xe2\x86\x93\nBus 006 Device 105: ID 2341:0036 Arduino SA \n\xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n\n

华泰

\n