Wie serielle Daten vom Arduino in Processing zu float konvertieren

Hallo Leute,
Ich versuch grad die Werte von meinem Beschleunigungssensor in Processing auszuwerten.

Ich schick mit dem Arduino die 3 Werte über die serielle Schnittstelle:

Serial.print(xxx, DEC);
Serial.print(",");
Serial.print(yyy, DEC);
Serial.print(",");
Serial.print(zzz, DEC);
Serial.println();

Ich krieg auch die Daten im Processing und splitte Sie in die 3 Teile auf:

String[] a = split(serial, ',');
println(a[0]);
println(a[1]);
println(a[2]);

Raus kommt z.B.:
-39
4012
220

Das sind die 3 Achsenwerte.
Wie wandle ich nun aber die Werte vom String in 3 separate float-Werte?

thx Reinhard

PS.: Wenn ich
float f=float(a[0]);
probiere, krieg ich folgende Fehlermeldung:
Exception in thread "Animation Thread" java.lang.NullPointerException
at
processing__from_Arduino.draw(processing__from_Arduino.java:60)
at processing.core.PApplet.handleDraw(PApplet.java:2266)
at
processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
at processing.core.PApplet.run(PApplet.java:2140)
at java.lang.Thread.run(Thread.java:662)

Du gibst ein /0 nach dem Wert und dann mit atof.
Grüße Uwe

Hallo Uwe

Du gibst ein /0 nach dem Wert und dann mit atof.

Wo genau muss das /0 hin?
Auf Arduino- oder Processing-Seite?
Serial.print(xxx/0, DEC); ????
println(a[0]/0); ???
Ehrlich gesagt, glaub ich, bin ich da total auf dem Holzweg!
Was macht das /0 ?

Danke
Reinhard

Ha!
Das "float f=float(a[0]);" funktioniert doch.
Ich hatte das float außerhalb der Schleife angewandt, in der a[0] definiert war... :blush:

@Uwe
Wenn Du mir trotzdem das /0 noch erklären könntest?

Danke
Reinhard

Das Array muß terminiert (das Ende angezeigt) sein damit atof weiß wieviele Elemente das Array hat. Die Terminierung ist der Wert null oder anders geschrieben /0.

also
a[0]=100;
a[1]=0;
f = atof(a);

Grüße Uwe