ArrayIndexOutOfBoundsException: 0
с указанием на строкуarduino = new Arduino(this, Arduino.list()[0], 57600);
Функция Arduino.list() [0] возвращает список устройств, обнаруженных на Serial и выбирает для работы самое первое устройство. Указанная выше ошибка возникает потому, что список имен устройств с Ubuntu не совпадает с ожидаемым Processing'ом.
Поможем ему в поиске. Посмотрим в Arduino IDE, где сидит наша плата:
Это /dev/ttyACM0. Добавим такую символьную ссылку на это устройство, чтобы Processing его опознал. Для этого в терминале выполним от имени суперпользователя команду
ln -s /dev/ttyACM0 /dev/ttySA0
Найдем информацию об устройстве, воторая позволит нам это сделать. Для этого в терминале выполним команду
udevadm info -a -p $(udevadm info -q path -n ttyACM0)
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4': KERNELS=="2-1.4" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="" ATTRS{bNumInterfaces}==" 2" ATTRS{bConfigurationValue}=="1" ATTRS{bmAttributes}=="c0" ATTRS{bMaxPower}=="100mA" ATTRS{urbnum}=="17" ATTRS{idVendor}=="2341" ATTRS{idProduct}=="0043" ATTRS{bcdDevice}=="0001" ATTRS{bDeviceClass}=="02" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{bNumConfigurations}=="1" ATTRS{bMaxPacketSize0}=="8" ATTRS{speed}=="12" ATTRS{busnum}=="2" ATTRS{devnum}=="11" ATTRS{devpath}=="1.4" ATTRS{version}==" 1.10" ATTRS{maxchild}=="0" ATTRS{quirks}=="0x0" ATTRS{avoid_reset_quirk}=="0" ATTRS{authorized}=="1" ATTRS{manufacturer}=="Arduino (www.arduino.cc)" ATTRS{serial}=="7413736383735181D081"
SUBSYSTEMS=="usb" ATTRS{serial}=="7413736383735181D081"
gedit /etc/udev/rules.d/42-arduino.rules
SUBSYSTEMS=="usb", ATTRS{serial}=="7413736383735181D081", SYMLINK+="ttySA0"
restart udev
ls /dev/ | grep ttySA
This is very important. https://imgur.com/a/YlPKklk https://imgur.com/a/LSDygXQ https://imgur.com/a/cV9q9IT https://imgur.com/a/PJodCCk https://imgur.com/a/ljk68FV https://imgur.com/a/DtDq62n https://imgur.com/a/0tmUHDH
ОтветитьУдалить