Pages: [1]   Go Down
Author Topic: Wie serielle Daten vom Arduino in Processing zu float konvertieren  (Read 539 times)
0 Members and 1 Guest are viewing this topic.
Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20275
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20275
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: