ESP8266 - LCD

Dieses Tutorial zeigt Ihnen, wie Sie ein LCD-Display mit dem ESP8266 verwenden und wie Sie den ESP8266 programmieren, um Text und Sonderzeichen auf dem LCD anzuzeigen.

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×LCD I2C
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über LCD I2C 16×2

Der I2C-LCD ist eine bessere Alternative zum Standard-LCD. Mit nur 4 Pins ist es einfach, eine Verbindung zum ESP8266 herzustellen. Ein integriertes Potentiometer erleichtert das Einstellen des Kontrasts des LCDs.

Die LCD-I2C-Pinbelegung

Das LCD-I2C-Modul verwendet eine I2C-Schnittstelle, um sich mit dem ESP8266 zu verbinden. Es hat 4 Pins:

  • GND-Pin: Dieser Pin sollte mit GND (0V) verbunden werden.
  • VCC-Pin: Dies ist die Spannungsversorgung für das LCD und sollte mit VCC (5V) verbunden werden.
  • SDA-Pin: Dies ist das I2C-Datensignal.
  • SCL-Pin: Dies ist das I2C-Taktsignal.
LCD-I2C-Pinbelegung

LCD-Koordinate

Das LCD I2C 16x2 hat insgesamt 16 Spalten und 2 Zeilen. Die Spalten und Zeilen beginnen bei 0.

ESP8266 NodeMCU LCD I²C Koordinate

Verdrahtungsdiagramm

ESP8266 NodeMCU LCD I2C-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

LCD I2C ESP8266
Vin Vin
GND GND
SDA D2 (GPIO4)
SCL D1 (GPIO5)

Wie man LCD über I2C programmiert

Die LiquidCrystal_I2C-Bibliothek muss eingebunden werden, um das LCD verwenden zu können.

  • LCD einrichten:

Das LCD muss eingerichtet werden, bevor es verwendet werden kann.

  • Schreibe auf das LCD:

Das Schreiben auf das LCD wird durch die LiquidCrystal_I2C-Bibliothek vereinfacht.

#include <LiquidCrystal_I2C.h> // Bibliothek für LCD
  • Deklarieren Sie ein Objekt der Klasse LiquidCrystal_I2C und geben Sie dessen I2C-Adresse, die Anzahl der Spalten und die Anzahl der Zeilen an.
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-Adresse 0x27, 16 Spalten und 2 Zeilen
  • Starten Sie das LCD.
lcd.init(); //Initialisiere das LCD lcd.backlight(); //Hintergrundbeleuchtung einschalten
  • Setze den Cursor an die gewünschte Position (Spaltenindex, Zeilenindex)
lcd.setCursor(column_index, row_index);
  • Eine Nachricht auf dem LCD-Bildschirm anzeigen.
lcd.print("Hello World!");

Entdecken Sie die Möglichkeiten, was mit LCD erreicht werden kann, indem Sie den Abschnitt „Do More with LCD“ ansehen.

※ Notiz:

Die Adresse des LCD kann je nach Hersteller variieren. In unserem Code haben wir 0x27 verwendet, was vom Hersteller DIYables angegeben ist.

ESP8266-Quellcode

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-Adresse 0x27, 16 Spalten und 2 Zeilen void setup() { lcd.init(); // Initialisiere das LCD-I2C-Display lcd.backlight(); } void loop() { lcd.clear(); // Anzeige löschen lcd.setCursor(0, 0); // Cursor an die Position (0, 0) verschieben lcd.print("Arduino"); // Nachricht an der Position (0, 0) ausgeben lcd.setCursor(2, 1); // Cursor an die Position (2, 1) verschieben lcd.print("GetStarted.com"); // Nachricht an der Position (2, 1) ausgeben delay(2000); // Die obigen Meldungen für zwei Sekunden anzeigen lcd.clear(); // Anzeige löschen lcd.setCursor(3, 0); // Cursor an die Position (3, 0) verschieben lcd.print("DIYables"); // Nachricht an der Position (3, 0) ausgeben lcd.setCursor(0, 1); // Cursor an die Position (0, 1) verschieben lcd.print("www.diyables.io"); // Nachricht an der Position (0, 1) ausgeben delay(2000); // Die obigen Meldungen für zwei Sekunden anzeigen }

Schnelle Schritte

Um mit dem ESP8266 in der Arduino-IDE loszulegen, befolgen Sie diese Schritte:

  • Schau dir die Anleitung zur Einrichtung der ESP8266-Umgebung in der Arduino-IDE an, falls du ESP8266 zum ersten Mal verwendest.
  • Verbinde die Komponenten wie im Diagramm gezeigt.
  • Verbinde das ESP8266-Board mit deinem Computer über ein USB-Kabel.
  • Öffne die Arduino-IDE auf deinem Computer.
  • Wähle das korrekte ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E Modul), und den jeweiligen COM-Port.
  • Klicke auf das Libraries-Symbol in der linken Leiste der Arduino IDE.
  • Suche nach "LiquidCrystal I2C" und finde die von Frank de Brabander erstellte LiquidCrystal_I2C-Bibliothek.
  • Klicke dann auf die Install-Schaltfläche, um die Bibliothek hinzuzufügen.
ESP8266 NodeMCU LiquidCrystal I2C-Bibliothek
  • Kopieren Sie den Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code zu kompilieren und auf den ESP8266 hochzuladen.
  • Überprüfen Sie das Ergebnis auf dem LCD.
ESP8266 NodeMCU zeigt Text auf dem LCD an
  • Von Bildern
  • Experimentieren Sie mit dem Ändern der Wörter und der Platzierung von Bildern

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Mehr mit LCD

Benutzerdefiniertes Zeichen

lcd.print() erlaubt nur ASCII-Zeichen. Um ein Sonderzeichen oder Symbol anzuzeigen (z. B. Herz, Angry Bird), verwenden Sie den Zeichengenerator.

Ein 16x2-LCD kann 32 Zeichen anzeigen. Jedes Zeichen besteht aus 40 Pixeln, mit 8 Zeilen und 5 Spalten.

ESP8266 NodeMCU LCD 16×2 Pixel

Der Charaktergenerator erzeugt einen Charakter, der 40 Pixel groß ist. Um ihn zu verwenden, folgen Sie einfach diesen Schritten:

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-Adresse 0x27, 16 Spalten und 2 Zeilen byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialisiere das LCD I2C-Display lcd.backlight(); lcd.createChar(0, customChar); // Erzeuge ein neues benutzerdefiniertes Zeichen lcd.setCursor(2, 0); // Cursor auf (2, 0) setzen lcd.write((byte)0); // Gib das benutzerdefinierte Zeichen an (2, 0) aus } void loop() { }

Das auf dem LCD-Bildschirm angezeigte Ergebnis ist:

Das auf dem LCD angezeigte Ergebnis ist:

LCD benutzerdefiniertes Zeichen

Mehrere benutzerdefinierte Zeichen

Wir können höchstens 8 benutzerdefinierte Zeichen erstellen, die von 0 bis 7 nummeriert sind. Im folgenden Beispiel werden drei davon erstellt und angezeigt.

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-Adresse 0x27, 16 Spalten und 2 Zeilen byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialisiere das LCD I2C-Display lcd.backlight(); lcd.createChar(0, customChar0); // Erstelle ein neues benutzerdefiniertes Zeichen (Index 0) lcd.createChar(1, customChar1); // Erstelle ein neues benutzerdefiniertes Zeichen (Index 1) lcd.createChar(2, customChar2); // Erstelle ein neues benutzerdefiniertes Zeichen (Index 2) lcd.setCursor(2, 0); // Cursorposition auf (2, 0) setzen lcd.write((byte)0); // Drucke das benutzerdefinierte Zeichen 0 an der Position (2, 0) lcd.setCursor(4, 0); // Cursorposition auf (4, 0) setzen lcd.write((byte)1); // Drucke das benutzerdefinierte Zeichen 1 an der Position (4, 0) lcd.setCursor(6, 0); // Cursorposition auf (6, 0) setzen lcd.write((byte)2); // Drucke das benutzerdefinierte Zeichen 2 an der Position (6, 0) } void loop() { }

Das auf dem LCD angezeigte Ergebnis ist: . Das auf dem LCD gezeigte Ergebnis ist:

LCD mehrere benutzerdefinierte Zeichen

Zusammenfassung: wie man ein benutzerdefiniertes Zeichen auf dem LCD verwendet

  • Verwenden Sie den Zeichengenerator, um Binärcode für Ihren benutzerdefinierten Charakter zu erzeugen.
  • Kopieren Sie den Binärcode, der im vorherigen Schritt erzeugt wurde, und deklarieren Sie ihn.
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Definieren Sie einen von Ihnen entworfenen Charakter in der setup()-Routine und weisen ihm einen numerischen Wert zwischen 0 und 7 zu.
lcd.createChar(index, customChar);
  • Zeige das benutzerdefinierte Zeichen jederzeit auf dem LCD an, entweder in der setup()- oder loop()-Funktion.
lcd.setCursor(column, row); // Cursor an eine gewünschte Position verschieben lcd.write((byte)index); // Gebe das benutzerdefinierte Zeichen an der gewünschten Position aus

Andere Funktionen

  • Gib "Hello World" aus

Fügen Sie die folgenden Funktionen nacheinander in die loop()-Funktion ein:

  • Lösche das LCD-Display
  • Warte 5000 Millisekunden
  • Gib "Hello World" aus
lcd.clear();
  • Positionieren Sie den Cursor in der oberen linken Ecke des LCD-Bildschirms.
lcd.home();
  • Positionieren Sie den Cursor in einer bestimmten Spalte und Zeile.
lcd.setCursor(column, row);
  • Zeige den Cursor auf dem LCD-Bildschirm an.
lcd.cursor();
  • Macht den LCD-Cursor unsichtbar.
lcd.noCursor();
  • Den LCD-Cursor blinken lassen.
lcd.blink()
  • Deaktiviere das Blinken des LCD-Cursors.
lcd.noBlink()

Fordere dich selbst heraus

Verwenden Sie ein LCD-Display, um eines der folgenden Projekte zu realisieren:

Fehlerbehebung bei LCD I2C

  1. Passen Sie den Kontrast des LCDs an, indem Sie das Potentiometer auf der Rückseite des LCDs drehen.
  2. Je nach Hersteller kann die I2C-Adresse des LCDs variieren. In der Regel lautet die Standard-I2C-Adresse des LCDs entweder 0x27 oder 0x3F. Versuchen Sie diese Werte nacheinander. Falls dies nicht funktioniert, führen Sie den untenstehenden Code aus, um die I2C-Adresse zu bestimmen.
// I2C address scanner program #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

Die Ausgabe, die im Seriemonitor angezeigt wird, ist: .

Der Effekt, der im Seriemonitor sichtbar ist, ist: .

Was im Seriemonitor erscheint, ist:

COM6
Send
Scanning... I2C device found at address 0x3F ! done Scanning... I2C device found at address 0x3F ! done
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!