HOWTO · Arduino

So drucken Sie in Arduino auf die Konsole

Dieses Tutorial behandelt das Drucken von Text oder Variablen auf der Konsole mit dem seriellen Monitor der Arduino IDE.

Auf dieser Seite

Die Konsole, oft als serieller Monitor bezeichnet, dient als virtuelles Fenster in den Betrieb Ihres Arduino.

Sie ermöglicht es Ihnen, Informationen von Ihrem Mikrocontroller an Ihren Computer zu senden und im Gegenzug Daten zu empfangen. Diese Zwei-Wege-Kommunikation ist ein leistungsstarkes Werkzeug für Anfänger und erfahrene Arduino-Enthusiasten gleichermaßen.

Dieses Tutorial behandelt das Drucken von Text oder Variablen auf der Konsole mit dem seriellen Monitor der Arduino IDE. Beginnend mit den Grundlagen der Verwendung von Serial.print() und Serial.println() schreiten wir zu fortgeschritteneren Strategien fort, wie der Verwendung von Serial.write() zur Übertragung von Binärdaten.

Auf die Konsole drucken mit dem seriellen Monitor in Arduino

Die Arduino IDE hat unten eine Konsole, aber wir können nichts auf ihr drucken. Die Konsole dient nur dazu, die Informationen bei der Code-Überprüfung und Kompilierung anzuzeigen.

Die Konsole zeigt die Speichernutzung des Codes in Bytes und die Fehler beim Überprüfen oder Hochladen des Codes an. Um den in einer Variablen gespeicherten Wert zu drucken oder anzuzeigen, können wir den seriellen Monitor der Arduino IDE verwenden.

Der serielle Monitor ist ein integriertes Werkzeug der Arduino IDE, mit dem Sie mit Ihrem Arduino-Board kommunizieren können. Er bietet eine bequeme Möglichkeit, Daten von Ihrem Arduino an Ihren Computer zu senden und Daten von Ihrem Computer an Ihren Arduino zu empfangen.

Wir können den seriellen Monitor über die Registerkarte Tools in der Symbolleiste der Arduino IDE starten.

serial monitor in tools tab

Note
Wir können den seriellen Monitor nur ausführen, wenn das Arduino-Board mit der Arduino IDE verbunden ist.

Die Funktionen Serial.print() und Serial.println() auf dem seriellen Monitor verwenden

Wir können die Funktion Serial.begin() verwenden, um die serielle Kommunikation mit einer bestimmten Baudrate oder Geschwindigkeit zu starten. Wir können die Funktionen Serial.print() und Serial.println() verwenden, um Text und Variablen auf dem seriellen Monitor zu drucken.

Syntax von Serial.print() und Serial.println():

Serial.print(data);
Serial.println(data);

Parameter:

  • data: Die Daten, die Sie an die serielle Schnittstelle senden möchten. Diese können verschiedenen Typs sein, darunter Ganzzahlen, Gleitkommazahlen, Zeichen und Zeichenketten.

Zusätzliche Parameter (optional):

  • format: Mit diesem Parameter können Sie das Format angeben, in dem die Daten gedruckt werden sollen. Es kann eines der folgenden sein:
    1. DEC: Als Dezimalzahl drucken.
    2. BIN: Als Binärzahl drucken.
    3. OCT: Als Oktalzahl drucken.
    4. HEX: Als Hexadezimalzahl drucken.

Der Unterschied zwischen Serial.print() und Serial.println() besteht darin, dass die Funktion print() die Variable druckt und der Cursor auf derselben Zeile bleibt, während der Cursor bei der Funktion println() nach dem Drucken der Variable in die nächste Zeile wechselt.

Angenommen, wir möchten zwei Variablen in derselben Zeile und die dritte Variable in der nächsten Zeile drucken. In diesem Fall verwenden wir die Funktion print(), um die erste Variable zu drucken, dann die Funktion println(), um die zweite Variable zu drucken und den Cursor in die nächste Zeile zu bewegen, und dann erneut die Funktion print(), um die dritte Variable zu drucken.

Definieren wir einige Variablen und drucken sie auf dem seriellen Monitor. Siehe den folgenden Code.

Beispiel:

int My_Int = 10;
unsigned long My_TimeStamp = 1416803716;
const char *My_CharArray = {"This is My_CharArray"};
float My_Float = 3.14159266759;

void setup() {
  Serial.begin(9600);
  Serial.println(My_Int);
  Serial.println(My_TimeStamp);
  Serial.println(My_CharArray);
  Serial.print(My_Float, 5);  // prints to five places right of the decimal
}
void loop() {
  // put your code here to run repeatedly
}

Dieser Code beginnt mit der Deklaration mehrerer Variablen unterschiedlicher Datentypen. In setup() wird die serielle Kommunikation mit einer Baudrate von 9600 eingerichtet. Anschließend werden die Werte der Variablen mit Serial.print() und Serial.println() gedruckt.

Wenn wir die Variablen nur einmal auf dem seriellen Monitor drucken möchten, können wir die Funktion Serial.print() innerhalb der Funktion setup() verwenden, da sie nur einmal ausgeführt wird, wenn das Arduino-Board eingeschaltet wird.

Wenn wir eine Variable kontinuierlich drucken möchten, müssen wir sie innerhalb der Funktion loop() drucken, da der darin enthaltene Code in einer Schleife ausgeführt wird, solange der Arduino eingeschaltet ist. Mit dem seriellen Monitor können wir Variablen aller Datentypen drucken.

Ausgabe:

10
1416803716
This is My_CharArray
3.14159

Wir können auch das zweite Argument in der Funktion Serial.print() definieren (wie im obigen Beispielcode), das das Format für das Drucken des Variablenwerts ist.

Im Fall eines Ganzzahl- oder long-Datentyps können wir beispielsweise definieren, in welchem Zahlensystem wir die Anzeige wünschen, wie BIN für binär und DEC für dezimal. Standardmäßig wird die Zahl im dezimalen Zahlensystem angezeigt.

Im Fall einer Gleitkommazahl können wir die Anzahl der Dezimalstellen der Zahl definieren, die wir auf dem seriellen Monitor drucken möchten. Weitere Details zur Funktion Serial.print() finden Sie unter diesem Link.

Die Funktion Serial.write() verwenden, um Binärdaten an den seriellen Monitor zu senden

Die Daten innerhalb der Funktion Serial.print() werden in eine ASCII-Darstellung umgewandelt. Wenn wir die Daten als Byte-Strom senden möchten, können wir anstelle der Funktion Serial.print() die Serial.write() Funktion verwenden.

In der Arduino-Programmierung wird die Funktion Serial.write() verwendet, um Binärdaten über die serielle Verbindung zu senden. Sie ermöglicht es Ihnen, ein Byte oder eine Reihe von Bytes direkt und ohne Interpretation zu senden.

Das ist besonders nützlich, wenn Sie Rohdaten oder Steuercodes übertragen müssen.

Syntax:

Serial.write(data);

Parameter:

  • data: Das Byte oder Datenarray, das Sie über die serielle Verbindung senden möchten. Es kann ein einzelnes Byte (vorzeichenloses char) oder ein Array von Bytes sein.

Zusätzliche Parameter (optional):

  • length: Die Anzahl der Bytes, die aus dem Array gesendet werden sollen. Dieser Parameter wird verwendet, wenn ein Datenarray gesendet wird.

Serial.write() ermöglicht das Senden von Binärdaten an die Konsole. Es ist nützlich, wenn Sie mit Nicht-Text-Daten arbeiten oder mit anderen Geräten kommunizieren, die eine binäre Kommunikation erfordern.

Beispiel:

void loop() {
  byte data[] = {0x48, 0x65, 0x6C, 0x6C, 0x6F};  // ASCII values of "Hello"
  Serial.write(data, sizeof(data));
  delay(1000);
}

Dieser Code sendet die ASCII-Werte von 'H', 'e', 'l', 'l' und 'o' nacheinander an den seriellen Monitor, mit einer Verzögerung von 1 Sekunde zwischen jeder Übertragung. Wenn Sie diesen Code ausführen und den seriellen Monitor öffnen, erscheint "Hello" in der Konsole.

Fazit

Zusammenfassend lässt sich sagen, dass das Drucken auf die Konsole dem Einsatz eines leistungsstarken Debugging- und Überwachungswerkzeugs gleichkommt. In dieser Anleitung haben wir verschiedene Methoden mit dem seriellen Monitor untersucht, von den grundlegenden Funktionen Serial.print() und Serial.println() bis hin zu fortgeschrittenen Strategien wie der Übertragung von Binärdaten mit Serial.write().

Sie können nahtlos zwischen Ihrem Arduino und Ihrem Computer kommunizieren, wenn Sie diese Techniken verstehen und effektiv einsetzen. Das eröffnet Möglichkeiten, von der Überwachung von Sensordaten in Echtzeit bis zur Fehlersuche in komplizierter Code-Logik.