parseInt und parseFloat über Serial1

#4924949
Lesenswert?

Hallo Forum,

ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX) 
Integer- und Floatzahlen übertragen. Ich habe das mit parseInt() 
versucht. Da kommt aber nichts an. Hier die Programme:
Der eine Leonarde sendet:
1
void setup() {
2
    Serial.begin(9600);
3
}
4

5
void loop() {
6
    Serial1.println(222);
7
}

Der andere Leonardo empfängt die Daten:
1
void setup() {
2
    Serial.begin(9600);
3
}
4

5
void loop() {
6
    int fff;
7
    fff = Serial1.parseInt();
8
    Serial.print(fff);
9
    Serial.println();
10
}

Die Ausgabe ist immer 0.
Die Verbindung zwischen den beiden Arduinos funktioniert aber.

Die Abfragen parseInt/parseFloat sind eigentlich ohnehin zu langsam. 
Gibt es da eine bessere Methode ?
Persönliche Seite #4925026
Lesenswert?

Hallo,

(ich vermeide Arduino wo es nur geht und habe deswegen auch wenig Ahnung 
von der API, aber)

parseInt() kingt so, als ob aus mehreren ASCII-Zeichen ein Int 
zusammengebaut wird, also aus
1
"1234" /* entspricht */ '1', '2', '3', '4'
 wird
1
(int)1234

das bedeutet aber auch, dass man eine ASCII codierte Zahl senden muss, 
also
nicht
1
Serial1.println(222);
 sondern
1
Serial1.println("222"); /* als stringin Anfuehrungszeichen */

Die (sehr wahrscheinlich) schnellere Methode wäre die 
Standard-C-Funktion atoi().

Mit freundlichen grüßen,
N.G.
#4925264
Lesenswert?

Belo L. schrieb:
> ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX)
> Integer- und Floatzahlen übertragen. Ich habe das mit parseInt()
> versucht. Da kommt aber nichts an.
Hast Du die RX/TX-Leitungen zwischen den Schnittstellen der Boards 
gekreuzt?

Und wie lang sind die Leitungen zwischen den Boards?
Breadboard-Jumperkabel mit 20cm Länge, oder was?
Gast #4925266
Lesenswert?

yesitsme schrieb:
> Es wird beim Senden Serial initialisiert und Serial*1* benutzt.
> Funktioniert das so? Ähnliches auch beim Empfangen.
>
> Hast du schon das Senden und Empfangen von Strings probiert?
Jürgen S. schrieb:
> Belo L. schrieb:
>> ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX)
>> Integer- und Floatzahlen übertragen. Ich habe das mit parseInt()
>> versucht. Da kommt aber nichts an.
> Hast Du die RX/TX-Leitungen zwischen den Schnittstellen der Boards
> gekreuzt?
>
> Und wie lang sind die Leitungen zwischen den Boards?
> Breadboard-Jumperkabel mit 20cm Länge, oder was?


Belo L. schrieb:
> Die Verbindung zwischen den beiden Arduinos funktioniert aber.
#4925603
Lesenswert?

ui, vielen Dank für die Antworten. Sorry für die späte Antwort. Ich 
hatte wohl Thread beobachten nicht eingeschaltet und wurde deswegen 
nicht benachrichtigt.

Inzwischen klappt es. Weiß nicht mehr genau, was es war. Vielleicht, 
weil ich Seral initialisiert habe und auf Serial1 geschrieben habe.

Vielen Dank, waren nützliche Hinweise.

Belo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren