Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
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.inounter dem Pfad3in1-kit\basic_project\5.12.serial_read.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die Bibliothek
LiquidCrystal I2Cverwendet. 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 SieAeingeben und 4 Zeichen, wenn SieABeingeben.Serial.read()nimmt das erste Zeichen aus dem eingehenden Stream. Wenn Sie zum BeispielABeingeben 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.