Hallo zusammen,
aufgrund der Nachfrage einiger Kunden möchte ich heute kurz unser LCD-Display mit I2C-Adapter an einem ESP32-Dev-Board zeigen.
Die im E-Book zum Produkt gezeigt Library "Liquid_Crystal_i2c" liegt mittlerweile in Version 1.5.1 vor, diese lässt sich mit den aktuellen Boarddefinitionen von Espressif genau wie bei einem Arduino nutzen.
Im Gegensatz zu den meisten Arduinos hat das ESP32-Dev-Kit-C nicht nur die Möglichkeit einen einzelnen I2C-Bus zu betreiben, in unserem Beispiel nutzen wir heute die Pins G21 und G22.
Das Verdrahten ist bei aufgesteckten FC-113 Adapter am LCD mit nur 4 Verbindungen sehr simpel umzusetzen. Eine Stift- und Buchsenleiste zwischen dem LCD und dem I2C-Adapter hat sich schön öfter als sehr praktisch erwiesen.
Die Verdrahtung:
FC113 | ESP32-Dev-Kit-C |
GND | GND |
VCC | 5V |
SDA | G21 |
SCL | G22 |
Die notwendigen Arbeitsschritte kurz zusammengefasst:
- ArduinoIDE installieren mit Boarddefinitionen von Espressif
- Download der Library über oben genannten Link
- Sketch -> Bibliothek einbinden -> .zip Bibliothek hinzufügen und Library auswählen
- IDE neu starten
- Datei -> Beispiele -> aus eigenen Bibliotheken -> NewLiquidCrystal_lib -> Hello World i2c auswählen, wir sehen:
Diesen Part ersetzten wir durch:
#include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN 13 LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE); // Set the LCD I2C address //LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE); // Set the LCD I2C address
Und können im Anschluss das LCD am ESP32 nutzen ohne bereits vorhandenen Arduino Quellcode umschreiben zu müssen.
Viel Spass beim nachbasteln und experimentieren,
bis zum nächsten Beitrag:)
7 comments
Andreas Wolter
@Michael Eichberger: Der ESP32 bietet die Möglichkeit, auf andere Pins zu wechseln. Normalerweise ist nur die Angabe der Pins in der begin()-Funktion notwendig:
Wire.begin(I2C_SDA, I2C_SCL);
Es kann aber sein, dass die Bibliotheken der Sensoren den Aufruf überschreiben und dann wieder die Default Pins verwenden. Ich habe hier ein Beispiel mit dem BME280 Sensor gefunden: https://randomnerdtutorials.com/esp32-i2c-communication-arduino-ide/
Ich hoffe, das hilft.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Michael Eichberger
Gibt es eine möglichkeit auf andere pins als 21 und 22 auszuweichen? und wenn ja welche wäre das? pin 21 und 22 sind bei mir durch einen rfid reader belegt!
danke für antworten ☺️
Bernd Albrecht
@Michel Weynants: That happens to an almost 2 years old blog, which will not be updated.
You may simply google the name of the library. This led me to the following page.
https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c
By the way: most libraries can be downloaded from github.com
Michel Weynants
Hi,
The link for the library does not work anymore – this bitbucket repositery is totally empty.
Is there anoter location where I could find this library for ESP32?
Thank you
Kurt
Hi,
ich habe da zwei Fragen:
ich betreibe ein 4 Zeilen, 20 Zeichen LCD mit einem Arduino Mega. Die LiquidCrystal_I2C-Bibliothek basiert auf der Arbeit von DFRobot . Das LCD wird einfach mit: LiquidCrystal_I2C lcd(add_lcd, 20, 4) eingebunden und nicht mit den Haufen Parameter im obigen Beispiel. Als I2C-Adapter ist jedoch ein PCF8574T im Einsatz.
Aber mein Hauptproblem ist, das der ESP32 mit 3.3V arbeitet und folglich die Pegel an den Pins G21 und G22 auch im High-Zustand nicht mehr als die besagten 3.3 V haben. Lt. Datenblatt benötigt der FC113 als “high” mindestens 4 V!!!
Wo liegt hier der berühmte Trick?
Daniel
Toller Beitrag. Davor habe ich selber probiert und viel Zeit verbrannten. Mit Hilfe des Beitrags ein Kinderspiel. Vielen Dank. Top!
Sven Clemens
Ein toller Artikel. Noch schöner wäre es wenn der MC auch verfügbar wäre ;)