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