[Gelöst] Serielle Ausgabe zwei Variablen gleichzeitig

Hallo miteinander,

ich versuche gerade auf Serielle Eingaben zu reagieren:

mein Code bisher:

void setup() {
  // initialize serial:
  Serial.begin(9600);
}

void loop() {
  // wenn was vom Seriellerschnittstelle kommt dann soll es gelesen werden:
  while (Serial.available() > 0) {

    // nach dem nächsten int suchen(mann kann werte mit space komma etc. trennen):
    int PIN         = Serial.parseInt();
    int Vorlaufzeit = Serial.parseInt();
    int dauer       = Serial.parseInt();

    Serial.println("PIN, Vorlaufzeit, dauer");
    Serial.println(PIN + ", " + Vorlaufzeit + ", " + dauer);
  }
}

Leider habe ich in der Zeile

    Serial.println(PIN + ", " + Vorlaufzeit + ", " + dauer);

einen Fehler :frowning:
anstelle des + habe ich versucht . (Punkt) , (Komma)
leider bekomme ich immer einen Fehler :frowning:
wie kann ich denn die Drei Daten in einer zeile ausgeben? oder geht das nicht?
dann müsste ich das mit
Serial.print machen.

ich finde es sieht schöner aus wenn ich das in einer Zeile drin stehen habe.

Über ein Feedback freue ich mich wie immer.

Gruß
Mücke

Konkatenieren mit + geht nur mit Objekten. Wie der String Klasse, die dabei Schweizer Käse aus deinem RAM macht!

Zwei Möglichkeiten:
1.) Das einfachste ist du lädst dir Streaming.h herunter:
http://arduiniana.org/libraries/streaming/

Die Lib überlad den << Operator mit inline Funktionen und gaukelt einem damit C++ Output Streams vor. Damit kannst du das schreiben:

Serial << PIN <<  ", " << Vorlaufzeit << ", " << dauer << endl;

Der Code der dabei rausspringt ist aber genau der gleiche. Ist mir ein Rätsel wieso das nicht in der IDE enthalten ist.

Die SdFat Lib hat sogar echte I/O Streams. Ist aber nicht unbedingt nötig.

2.) Du legst einen Puffer im RAM an und verwendest snprintf():
http://www.cplusplus.com/reference/cstdio/snprintf/
http://www.cplusplus.com/reference/cstdio/printf/

char buffer[21];       //ensprechend anpassen! Auf minimal die Länge des Strings + 1!
snprintf_P(buffer, sizeof(buffer), PSTR("%d,%d,%d"), PIN, vorlaufzeit, dauer);

Hier noch in der besseren _P Version die den Format-String im Flash lässt. Für die normale Version einfach das PSTR() weglassen

Da gibt es auch noch mehr Optionen. Du kannst z.B. die Zahlen auf eine konstante Länge formatieren, was bei manchen Ausgaben praktisch ist. Vor allem wenn man Dinge auf SD Karten loggt. Aber auch bei Serial, wenn man schöne Spalten haben will

Hey,

also da ist glaube ich das mit dem "Streaming.h" die schönste Alternative für mich.
ich möchte das nur zur Überprüfung ausgeben.

Danke für die vielen infos.

DANKE.