Während der Arbeit mit Arduino müssen wir mehrere Daten auf einem seriellen Monitor drucken. Normalerweise Serie.drucken Die Funktion wird verwendet, aber heute werden wir eine andere Funktion namens Sprintf hervorheben und so aussehen, wie diese Funktion beim Drucken mehrerer Variablen in einer einzelnen Zeile auf dem seriellen Monitor hilft.
Verwendung von Serien.drucken()
Wenn wir eine Variable oder ein Ausgabeergebnis drucken möchten, verwenden wir normalerweise seriell.print () oder seriell.println (), um jedes Ergebnis in der nächsten Zeile zu drucken. Nehmen wir an, wenn wir mehrere Variablen haben, müssen wir je nach Gesamtvariablerzahlen eine Anzahl von Zeilen für den seriellen Druck schreiben.
Hier ist das Beispiel, das die Verwendung von Serien veranschaulicht.drucken():
Im obigen Beispiel haben wir drei Variablen 'Ganzzahlen A, B und C initialisiert. Um alle drei Variablen auf einem seriellen Monitor zu drucken. Hier haben wir drei Variablen verwendet, die uns dazu veranlassten, sechs Codezeilen zu schreiben, um uns auf dem Serienmonitor zu zeigen. Stellen Sie sich nun vor.
Wenn die Sprintf () -Funktion hereinkommt, diskutieren wir, wie alle drei Variablen in einer einzelnen Codezeile gedruckt werden können.
Drucken Sie mehrere Variablen mit Arduino Sprintf () Funktion aus
Der Sprintf () steht im Allgemeinen für “Stringdruck”. Im Gegensatz zum normalen seriellen Druck zeigt es nicht direkt die Ausgabe von Variablen auf dem seriellen Monitor. Zuerst werden die Ausgaben in einer bestimmten Zeichenvariablen gespeichert Puffer.
Der Sprintf () Ermöglicht dem Benutzer, eine formatierte Ausgabe an ein Zeichen -Array zu senden, in dem das Ergebnis gespeichert wird. Um die Zeichenfolge zu zeigen, in der Variablen formatiert sind, die Serie.Print () -Funktion wird verwendet.
Int Sprintf (char * str, const char * Format,…);
So verwenden Sie Arduino Sprintf ()
Der Sprintf () ist praktisch, wenn wir mehrere Variablen in einer einzigen Zeile drucken müssen. Hier ist die grundlegende Syntax des Schreibens mehrerer Variablen mit Sprintf ():
Zeichenpuffer [40];
Sprintf (Puffer, "Summe der Zahl %d und Zahl %d ist %d", a, b, c);
Serie.println (puffer);
Beispielcode
Jetzt drucken wir den obigen Code mit dem Sprintf () Funktion.
Lassen Sie uns jetzt jede Codezeile im Detail untersuchen.
Zunächst in Code initialisieren wir die serielle Kommunikation mithilfe der seriellen.begin () und die Baud -Rate auf 9600 festlegen. Später initialisiert der Schleifenabschnitt drei Variablen A, B und C. Die Summe der ersten beiden Variablen A und B werden in der dritten Variablen c gespeichert. Komm jetzt zum Hauptteil des Code.
Zeichenpuffer [40];
Die Größe des Zeichenarrays muss so groß sein, wie es problemlos Ausgabevariablen und Text speichern kann. Zählen Sie die Anzahl der Zeichen, die zum Speichern benötigt werden, und machen Sie den Puffer mit genau der gleichen Größe her.
Sprintf (Puffer, "Summe der Zahl %d und Zahl %d ist %d", a, b, c);
Die nächste Zeile im Code ist die tatsächliche Sprintf () -Funktion. Es braucht 2 Argumente; Das erste Argument speichert den Charakter im Pufferarray. Das zweite Argument ist die Zeichenfolge, die wir erstellen wollen. Hier, um die Variable in der von uns verwendeten Zeichenfolge anzuzeigen Formatspezifizierer.
Formatspezifizierer ist das Prozentzeichen, gefolgt von dem bekannten Brief als Formatcharakter. Zeichenspezifizierer sind der Brief nach % Sign. Beide geben den Sprint () an, welcher Datentyp für die verfügbaren Daten verwendet wird.
Einige gemeinsame Zeichenspezifizierer sind:
Charakter | Datentyp |
---|---|
d oder ich | Signierte Dezimalbezahlung |
u | Unsigned Decimal Ganzzahl |
S | Zeichenfolge |
Im obigen Beispiel haben wir drei Formatspezifizierer initialisiert %D Das heißt, wir möchten, dass 3 Variablen in der Ausgangszeichenfolge gespeichert werden Signierte Dezimalbezahlung. Um die Werte für diese drei Variablen zu erhalten, werden 3 Argumente direkt nach der Zeichenfolge hinzugefügt. Für jeden Formatspezifizierer müssen wir einen separaten Wert übergeben und jede von ihnen durch Komma getrennt.
Notiz: Die Funktionen Sprintf () in Arduino können schwimmende Punktwerte nicht verarbeiten. Also, wenn wir eine Dezimalzahl drucken müssen, ungefähr 3 wie 3.14 oder 12.12, zuerst müssen wir diesen Schwimmerwert in eine Zeichenfolge konvertieren und dann auf dem Bildschirm drucken. Eine Funktion dtoStrf () wird üblicherweise dafür verwendet.
Abschluss
Während des Programmierens des Arduino -Boards müssen wir nach allen verfügbaren Techniken und Funktionen suchen, die unseren Code optimieren können. Ein minimalistischer und effizienter Code hilft, Arduino schnell auszuführen. Während wir Daten auf dem seriellen Monitor drucken, verwenden wir die serielle Druckfunktion, aber hier haben wir behandelt, wie Sprint () -Funktion Arduino dabei helfen kann, mehrere Variablen über eine einzelne Zeile zu drucken.