Go Down

Topic: Wie serielle Daten vom Arduino in Processing zu float konvertieren (Read 745 times) previous topic - next topic

spaceball

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)

uwefed

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

spaceball

Hallo Uwe
Quote
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

spaceball

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

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

Danke
Reinhard

uwefed

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

Go Up