Zum Inhalt springen

Arduino print – Serial Print Funktion

Die Arduino print Funktion Serial.print() ermöglicht es, Daten über die serielle Schnittstelle zu senden. Dabei kann es sich z. B. um Sensorwerte oder Rechenergebnisse von Funktionen handeln. Der folgende Befehl sendet den String (Zeichenkette) »Hallo Welt« über die serielle Schnittstelle:

Serial.print("Hallo Welt");

Voraussetzung ist, dass die serielle Schnittstelle vorher im Setup gestartet wurde. Das geschieht mit dem Befehl Serial.begin(9600). Der Wert in den Klammern ist die Baud-Rate, also die Übertragungsgeschwindigkeit. Es gibt unterschiedliche Standard-Baud-Raten, z.B. 9600 oder auch 112500. (Erstere ist sehr langsam und führt schnell zu Verzögerungen im Programmablauf oder der Verarbeitung serieller Signale.)

Die Baud-Rate muss auf Sender- und Empfängerseite, also vom Arduino zum seriellen Monitor, gleich sein. Im Seriellen Monitor der Arduino Software lässt sie sich im Auswahlfeld unten rechts einstellen.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Das folgende Beispiel sendet die aktuellen Millisekunden an die serielle Schnittstelle.

void setup(){
  Serial.begin(9600);      // startet serielle Kommunikation mit einer Baud-Rate von 9600
}

void loop(){
  Serial.print(millis());  // sendet aktuelle Millisekunden 
  Serial.print(" ");       // sendet ein Leerzeichen
  delay(10);               // kurze Pause
}

Arduino print – Daten anzeigen

Anzeigen lassen kann man sich die Daten z. B. im seriellen Monitor der Arduino-Software (Menü>Werkzeuge>Serieller Monitor).

Arduino Serial Print

Im Gegensatz zu Serial.println() erzeugt Serial.print() keinen Zeilenumbruch. Das bedeutet, dass alle Informationen hintereinander im seriellen Monitor ausgegeben werden.

Für das Debuggen kann das durchaus hilfreich sein:

Serial.print(millis());  // sendet aktuelle Millisekunden 
Serial.print("\t Sensor1=");  // erzeugt einen Tab-Stop
Serial.print(sensorWert1);  // Ausgabe Sensorwert
Serial.print("\t Sensor2=");  // erzeugt einen Tab-Stop
Serial.print(sensorWert2);  // Ausgabe Sensorwert
Serial.print("\t Sensor3=");  // erzeugt einen Tab-Stop
Serial.println(sensorWert3);  // Ausgabe Sensorwert und neue Zeile

Diese Konstruktion erzeugt einen gut lesbaren Output:

12003  Sensorwert1=147  Sensorwert2=328  Sensorwert3=189
12013  Sensorwert1=143  Sensorwert2=328  Sensorwert3=190
12024  Sensorwert1=149  Sensorwert2=328  Sensorwert3=189

Leider ist es in Arduino nicht möglich, mehrere Werte mit nur einem Befehlsaufruf von Serial.print zu senden. Serial.print(„Wert 1=“ + wert1) funktioniert nicht, auch wenn ähnliche Konstruktionen in anderen Programmiersprachen ganz normal sind.

»Grafische« Ausgabe

Im seriellen Monitor selbst lässt sich keine grafische Ausgabe erzeugen, allerdings kann man hier zu einem kleinen Trick greifen.

Beispiel: Ein Fotowiderstand wird ausgelesen und soll eine Art grafischer Ausgabe erzeugen. Wir lesen also seinen Wert ganz normal per analogRead ein. Dann lassen wir per for-Schleife Sternchen entsprechend dem Sensorwert ausgeben. Die for-Schleife wird so lange durchlaufen, bis der Sensorwert/10 erreicht ist. Bei jedem Durchlauf wird ein * der Zeile zugefügt. Nach der for-Schleife sorgt ein println(„“) für einen Zeilenumbruch.

void setup(){
  Serial.begin(112500);      // startet serielle Kommunikation mit einer Baud-Rate von 112500
}

void loop(){
  int sensorWert = analogRead(0);  // liest einen Fotowiderstand aus
  for (int i=0; i<(sensorWert/10); i++){
    Serial.print("*");
  }
  Serial.println("");  // sendet einen Zeilenumbruch
  delay(10);               // kurze Pause
}

Beispiele

Mehr Infos zur seriellen Kommunikation findest du auf Wikipedia.


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
Alex
3 Jahre zuvor

Serial.print(“Wert 1=” + wert1) funktioniert nicht …

Kann man aber umgehen indem der erste Wert mit einer Variablen definiert wird – etwa so:
String Test=““;
Serial.print(Test+“Wert 1=” + wert1)

Ali
Antworte an  Alex
3 Jahre zuvor

oder
Serial.print(“Wert 1=” + String(wert1));

2
0
Ich würde mich über deine Meinung freuen.x