5.12 Serielle Lektüre¶
Vielleicht haben Sie dies bemerkt, als Sie die Funktion Serial.print()
verwendet haben.
Da es eine Ausgabe gibt, gibt es auch eine Eingabe? Wofür ist das Textfeld im Seriellen Monitor?
Ja, Sie haben richtig geraten. Es gibt Möglichkeiten, Programme und Schaltungen durch Eingabe von Informationen über das Textfeld des seriellen Monitors zu steuern.
In diesem Projekt verwenden wir das I2C LCD1602, um den im Seriellen Monitor eingegebenen Text anzuzeigen und die Verwendung von Serial.read()
kennenzulernen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan
Verdrahtung
Code
Bemerkung
Öffnen Sie die Datei
5.12.serial_read.ino
unter dem Pfad3in1-kit\basic_project\5.12.serial_read
.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die Bibliothek
LiquidCrystal I2C
verwendet. Sie können sie aus dem Library Manager installieren.
Nachdem der Code erfolgreich hochgeladen wurde, können Sie Text in das Textfeld des seriellen Monitors eingeben, und das LCD zeigt die Informationen an.
Wie funktioniert das?
void loop() { // wenn Zeichen über die serielle Schnittstelle ankommen... if (Serial.available()) { // warten Sie kurz, damit die gesamte Nachricht ankommt delay(100); // den Bildschirm leeren lcd.clear(); // lesen Sie alle verfügbaren Zeichen while (Serial.available() > 0) { // zeigt jedes Zeichen auf dem LCD an lcd.write(Serial.read()); } } }
Serial.available()
kann die Anzahl der Zeichen in dem eingehenden Stream erhalten, wenn Sie etwas aus dem Textfeld eingeben. Da es in der Eingabe zwei Abschlusszeichen gibt, haben Sie tatsächlich 3 Zeichen, wenn SieA
eingeben und 4 Zeichen, wenn SieAB
eingeben.Serial.read()
nimmt das erste Zeichen aus dem eingehenden Stream. Wenn Sie zum BeispielAB
eingeben undSerial.read()
nur einmal aufrufen, erhalten Sie das ZeichenA
; Beim zweiten Aufruf erhalten SieB
; beim dritten und vierten Anruf erhalten Sie zwei Endsymbole; das Aufrufen dieser Funktion, wenn keine Zeichen im Eingabestream verfügbar sind, führt zu einem Fehler.
Zusammenfassend ist es üblich, die beiden oben genannten Funktionen zu kombinieren und mit einer while
-Schleife alle bei jedem Eingabevorgang eingegebenen Zeichen zu lesen.
while (Serial.available() > 0) { Serial.print(Serial.read()); }
Übrigens, wenn Sie Serial.read()
nicht verwenden, um Zeichen aus dem eingehenden Stream zu erhalten, werden die Zeichen des eingehenden Streams aufgestapelt. Zum Beispiel, wenn Sie A
gefolgt von AB
eingeben, wird der eingehende Stream 7 Zeichen anhäufen.