ich beschäftige mich gerade mit der grafischen Darstellung am PC von Werten die vom Arduino gesendet werden....
Ich verwende die IDE Version 1.8.13 und Processing Version 4.0b1.
Leider bekomme ich beim Ausführen immer folgende Fehlermeldung:
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 1
import processing.serial.*;
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
void setup()
{
size(200, 200);
// I know that the first port in the serial list on my mac
// is always my FTDI adaptor, so I open Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[2];
myPort = new Serial(this, portName, 9600);
}
Der ComPort ist beim Arduino auf 2 eingestellt. Unter Werkzeuge: ComPort ist das zu sehen und auch im Hardware Manager. Auch beim Auslesen der Geräte im Processing bekomme ich die Angabe COM 2.
Wo könnte der Fehler liegen? Was könnte ich versuchen?
// display the known Serial ports
printArray(Serial.list());
Es ist wahrscheinlich, dass Ihr Serial.list() Array keinen Eintrag für #2 hat String portName = Serial.list()[2];
=>
import processing.serial.*;
Serial myPort; // Create object from Serial class
void setup()
{
size(200, 200);
printArray(Serial.list()); // Überprüfen Sie, was Sie hier sehen und notieren Sie den Index, der Ihrem Arduino entspricht.
String portName = Serial.list()[5];
myPort = new Serial(this, portName, 9600);
}
PS: natürlich sollten Sie den Serial Monitor nicht in der Arduino IDE geöffnet haben
Ich habe den seriellen Monitor vom Arduino nicht geöffnet....Allerdings das gleiche Bild.
Arduino auf ComPort 1
Fehlermeldung:
[0] "COM1"
ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
Programm sieht wie folgt aus:
import processing.serial.*;
Serial myPort; // Create object from Serial class
void setup()
{
size(200, 200);
printArray(Serial.list()); // Überprüfen Sie, was Sie hier sehen und notieren Sie den Index, der Ihrem Arduino entspricht.
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
}
Was ist die vollständige Ausgabe in der Konsole für Processing?
➜ was sehen Sie von printArray(Serial.list());
wenn es nur ist [0] "COM1"
dann bedeutet dies, dass das Verarbeitungsprogramm Ihren Arduino nicht sieht. es sieht nur COM1 als Eintrag #0, also wenn Sie Eintrag #1 mit Serial.list()[1] fragen, bekommen Sie den Java-Absturz.