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


    4 Gedanken zu „Arduino print – Serial Print Funktion“

    1. 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)

    2. Pingback: Tic-Tac-Toe mit dem Arduino selber bauen - reichelt Magazin

    3. Pingback: Tic-Tac-Toe mit dem Arduino – reichelt Magazin

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.

     

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