Esp32UnoBoard mit LCDisplayI2C

Quellen

www.randomnerdtutorials.com : How to Use I2C LCD with ESP32
github - johnrickman : LiquidCrystal_I2C

Übersicht

Das LCDisplayI2C-Modul zusammen mit dem Esp32UnoBoard (bzw. Esp32Module) bietet
dem Benutzer eine einfache Möglichkeit zur Darstellung von Texten.
Die Verbindung und Programmierung des ESP32 mit dem LCDisplay erfolgt dabei über den I2C-Bus.

Eigenschaften des LCDisplayI2Cs:

  •  Darstellung von 20 Zeichen in 4 Zeilen
  •  andere Display-Typen bieten weitere Darstellungsmöglichkeiten (1x16 / 2x16 / ...)
  •  I2C-2Draht-Interface
  •  Hardware-einstellbare Helligkeit / Kontrast
  •  Umfangreiche (Rickman-)Library, welche hier angepasst verwendet wird

Nachteile des LCDisplayI2Cs:

  •  LCDisplay-(Rickman-)Library(vgl. weiter unten) "bremst" schnelle Rechungen aus!
  •  keine Grafik-Programmierung
  •  kein Touch-Screen

Hardware

Ein LCDisplay mit 4 Rows/Zeilen und 20 Columns/Spalten:
2207161132_LCDisplay.png
LCDisplay mit 4 Rows/Zeilen und 20 Columns/Spalten (80 Zeichen)
mit I2C-Bus-Adapterplatine auf der Rückseite:
2207161136_LCDisplayBackI2C.png
LCDisplay-Rückseite mit PCF8574T-I2C-Adapter
wird mit einer +5V-Spannungsversorgung über den I2C-Bus an ein ESP32UnoBoard angeschlossen.

Wiring

Verdrahtung von ESP32UnoBoard mit LCDisplayI2C-Modul:

ESP32UnoBoard mit LCDisplayI2C-Modul

Software

Arduino-Library: LiquidCrystal_I2C

Vorsicht bei der Benutzung der LCD-Library für den Arduino-Uno: I2C Liquid Crystal Displays
Diese Library ist nicht kompatibel zum Esp32!!!

Rickman-Library: LiquidCrystal_I2C

Alternativ verwenden wir die Library github - johnrickman : LiquidCrystal_I2C
bzw. benutzen/strukturieren/ergänzen/umbennen den Inhalt der beiden Kern-Dateien
"LiquidCrystal_I2C.cpp" und "LiquidCrystal_I2C.h"
aus der Original-Library und erhalten so die neuen Bibliotheks-Dateien:
"LCDisplayI2C.cpp" und "LCDisplayI2C.h" .

Demo-Projekt: Esp32LCDisplayI2C

Das Demo-Programm main.cpp des VSCode-Projekts "Esp32LCDisplayI2C"
zeigt die exemplarische Funktionsweise der Ansteuerung des LCDisplays:

  •  Einbinden der Header-Datei "#include "LCDisplayI2C.h"
  •  Initialisierung in "void setup(void)" und einmalige vierzeilige Welcome-Ausgabe
  •  Periodische Main-Loop: Löschen des Displays
  •  und spalten-versetzte Ausgabe von "Hello World!"

  #include "LCDisplayI2C.h"

  CLCDisplayI2C LCDisplayI2C(0x27, 20, 4);

  void setup() 
  {
    Serial.begin(115200);
    delay(333);
    //
    Wire.begin();
    LCDisplayI2C.Init();
    LCDisplayI2C.BacklightOn();
    delay(333);
    Serial.println("\r\n*** Esp32LCDisplayI2C");  
    //                  01234567890123456789
    LCDisplayI2C.SetCursor(0, 0);
    LCDisplayI2C.print(" Esp32LCDisplayI2C  ");
    LCDisplayI2C.SetCursor(1, 0);
    LCDisplayI2C.print(" 02V01              ");
    LCDisplayI2C.SetCursor(2, 0);
    LCDisplayI2C.print(" 2207151916         ");
    LCDisplayI2C.SetCursor(3, 0);
    LCDisplayI2C.print(" OMdevelop          ");
    delay(6000);
  }

  void loop() 
  {
    LCDisplayI2C.Clear();
    delay(2000);
    LCDisplayI2C.SetCursor(0, 0);
    LCDisplayI2C.print("Hello World!");
    LCDisplayI2C.SetCursor(1, 1);
    LCDisplayI2C.print("Hello World!");
    LCDisplayI2C.SetCursor(2, 2);
    LCDisplayI2C.print("Hello World!");
    LCDisplayI2C.SetCursor(3, 3);
    LCDisplayI2C.print("Hello World!");
    delay(2000);
  }  
        

Download des VSCode-Projekts: 2207152010_Esp32LCDisplayI2C_02V02.zip

Import & Execute "Esp32LCDisplayI2C" :

  •  download: 2207152010_Esp32LCDisplayI2C_02V02.zip
  •  entpacken / umbenennen des Hauptverzeichnisses: "Esp32LCDisplayI2C"
  •  Start / Öffnen von VisualStudioCode und
  •  Integration des Projekt-Hauptverzeichnisses "Esp32LCDisplayI2C"
  •  nach dem erfolgreichen Compile & Upload startet die Programm-Ausführung
  •  im Display erscheinen "Welcome"- und "Hello World"-Ausgaben.

Programm-Display-Ausgabe: 2207152010_Esp32LCDisplayI2C_02V02


WebSites    Module    Elektronik