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
ОтветитьУдалить