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 Serielles Lesen

Vielleicht haben Sie dies bemerkt, wenn Sie die Funktion Serial.print() verwendet haben. Wo es Drucken gibt, gibt es auch Lesen? Wofür wird das Textfeld im Serial Monitor verwendet? Richtig geraten, es gibt Möglichkeiten, Programme und Schaltungen durch Eingabe von Informationen über das Textfeld im Serial Monitor zu steuern.

In diesem Projekt werden wir das I2C LCD1602 verwenden, um den im Serial Monitor eingegebenen Text anzuzeigen und die Verwendung von Serial.read() zu erleben.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 Minima

-

Jumper-Kabel

KAUFEN

I2C LCD1602

KAUFEN

Schaltplan

../_images/circuit_7.1_lcd1602.png

Verdrahtung

../_images/5.11_lcd_bb.png

Code

Bemerkung

  • Öffnen Sie die Datei 5.12.serial_read.ino im Pfad 3in1-kit\learning_project\5.12.serial_read.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Die Bibliothek LiquidCrystal I2C wird hier verwendet. Sie können sie aus dem Library Manager installieren.

    ../_images/lib_liquidcrystal_i2c.png

Nachdem der Code erfolgreich hochgeladen wurde, können Sie Text in das Textfeld des Serial Monitors eingeben, und das LCD wird die Informationen anzeigen.

Wie funktioniert das?

void loop()
{
// when characters arrive over the serial port...
    if (Serial.available()) {
        // wait a bit for the entire message to arrive
        delay(100);
        // clear the screen
        lcd.clear();
        // read all the available characters
        while (Serial.available() > 0) {
            // display each character to the LCD
            lcd.write(Serial.read());
        }
    }
}
  • Mit Serial.available() können Sie die Anzahl der verfügbaren Zeichen im eingehenden Stream abrufen, wenn Sie etwas aus dem Textfeld eingeben. Da es zwei Terminator in der Eingabe gibt, haben Sie tatsächlich 3 Zeichen, wenn Sie A eingeben, und 4 Zeichen, wenn Sie AB eingeben.

  • Serial.read() nimmt das erste Zeichen aus dem eingehenden Stream. Wenn Sie beispielsweise AB eingegeben haben und Serial.read() nur einmal aufrufen, erhalten Sie das Zeichen A; beim zweiten Aufruf erhalten Sie B; beim dritten und vierten Aufruf erhalten Sie zwei Endsymbole. Wenn dieser Funktion aufgerufen wird und im Eingabestream keine Zeichen verfügbar sind, führt dies zu einem Fehler.

Zusammenfassend wird häufig kombiniert, die beiden oben genannten, indem eine while Schleife verwendet wird, um alle jedes Mal 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 holen, werden die Zeichen des eingehenden Streams zusammengefügt. Zum Beispiel, wenn Sie A gefolgt von AB eingeben, wird der eingehende Stream 7 Zeichen ansammeln.