Arduino UNO R4 – LCD I²C

Dieses Tutorial erklärt dir, wie man eine 16x2 LCD-I2C-Schnittstelle mit einem Arduino UNO R4 verwendet. Im Detail werden wir lernen:

Arduino UNO R4 und 16x2 LCD I2C

Über LCD I2C 16x2

Das 16x2-LCD ist ein Display mit 16 Spalten und 2 Zeilen. Es verfügt über eine I2C-Schnittstelle und enthält ein Potentiometer zur Kontrastanpassung.

Pinbelegung

Das LCD I2C verbindet sich über eine I2C-Schnittstelle und hat vier Pins.

  • GND-Pin: mit GND verbinden (0 Volt).
  • VCC-Pin: mit VCC zur Stromversorgung verbinden (5 Volt).
  • SDA-Pin: trägt I2C-Datensignal.
  • SCL-Pin: trägt I2C-Taktsignal.
LCD I2C-Pinbelegung

LCD-Koordinate

Das LCD I2C 16x2 hat 16 Spalten und 2 Zeilen. Sowohl die Spalten als auch die Zeilen beginnen bei 0.

Arduino UNO R4 LCD I2C Koordinate

Verdrahtungsdiagramm

Arduino UNO R4 LCD I2C Verdrahtungsdiagramm

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

Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.

LCD I2C Arduino UNO R4, Nano Arduino Mega
Vin 5V 5V
GND GND GND
SDA A4 20
SCL A5 21

So programmiert man für LCD I2C

Die Verwendung der LiquidCrystal_I2C-Bibliothek erleichtert die Bedienung des LCD-Displays erheblich.

  • Bibliothek einbinden:
#include <LiquidCrystal_I2C.h>
  • Erstellen Sie ein LiquidCrystal_I2C-Objekt, indem Sie seine I2C-Adresse, die Anzahl der Spalten und die Anzahl der Zeilen angeben.
LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialisieren des LCD mit der I2C-Adresse 0x27 für ein 16×2-Display
  • Richten Sie den LCD-Bildschirm ein.
lcd.init(); // Initialisiere das LCD-Display lcd.backlight(); // Schalte die Hintergrundbeleuchtung des LCD ein
  • Positionieren Sie den Cursor an der ausgewählten Stelle (Spaltenindex, Zeilenindex).
lcd.setCursor(column_index, row_index);
  • Eine Nachricht auf dem LCD-Bildschirm anzeigen.
lcd.print("Hello World!");

Wir können mit einem LCD noch viel mehr tun (siehe Abschnitt 'Do More with LCD').

※ Notiz:

Die I2C‑Adresse des LCD kann je nach Hersteller unterschiedlich sein. In unserem Code haben wir die Adresse 0x27 verwendet, wie vom Hersteller DIYables angegeben.

Arduino UNO R4-Code

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-lcd-i2c */ #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 lcd.backlight(); lcd.setCursor(3, 0); // Cursor zu (3, 0) verschieben lcd.print("DIYables"); // Nachricht an der Position (3, 0) ausgeben lcd.setCursor(0, 1); // Cursor zu (0, 1) verschieben lcd.print("www.diyables.io"); // Nachricht an der Position (0, 1) ausgeben } void loop() { }

Schnelle Schritte

Befolgen Sie diese Anweisungen Schritt für Schritt:

  • Wenn Sie zum ersten Mal den Arduino Uno R4 WiFi/Minima verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE Einrichten der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE.
  • Schließen Sie das LCD-I2C-Display gemäß dem bereitgestellten Diagramm an den Arduino UNO R4 an.
  • Verbinden Sie das Arduino UNO R4-Board mit Ihrem Computer über ein USB-Kabel.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das passende Arduino UNO R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
  • Gehen Sie zum Libraries-Symbol auf der linken Seite der Arduino IDE.
  • Geben Sie "LiquidCrystal I2C" in das Suchfeld ein und suchen Sie nach der LiquidCrystal_I2C-Bibliothek von Frank de Brabander.
  • Klicken Sie auf die Schaltfläche Install, um die LiquidCrystal_I2C-Bibliothek zu installieren.
Arduino UNO R4 LiquidCrystal I2C-Bibliothek
  • Kopiere den Code und öffne ihn in der Arduino IDE
  • Klicke auf die Schaltfläche Upload in der Arduino IDE, um den Code auf den Arduino UNO R4 hochzuladen
  • Schau dir das Ergebnis auf dem LCD-Bildschirm an
Arduino UNO R4 LCD I2C-Display
  • Versuche, den Text und seinen Ort zu ändern.

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.

Mach mehr mit LCD

Benutzerdefinierter Charakter

Um Sonderzeichen oder Symbole wie ein Herz oder einen wütenden Vogel auf einem LCD anzuzeigen, müssen Sie den Zeichengenerator verwenden, weil die Funktion lcd.print() nur ASCII-Zeichen darstellen kann.

Das LCD 16x2 kann 32 Zeichen über zwei Zeilen anzeigen, wobei jede Zeile 16 Zeichen umfasst. Jedes Zeichen verwendet 40 winzige Quadrate, angeordnet in 8 Zeilen und 5 Spalten.

Arduino UNO R4 LCD 16×2 Pixel

Der Charaktergenerator erstellt einen Charakter (40 Pixel). Du musst nur diese Schritte befolgen:

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <LiquidCrystal_I2C.h> // Initialisiere das LCD, das über I2C verbunden ist, bei der Adresse 0x27 mit 16 Spalten und 2 Zeilen LiquidCrystal_I2C lcd(0x27, 16, 2); // Definiere Byte-Array zum Erstellen einer benutzerdefinierten Zeichenform byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // LCD-Bildschirm initialisieren lcd.backlight(); // Hintergrundbeleuchtung einschalten lcd.createChar(0, customChar); // Registriere das benutzerdefinierte Zeichen auf dem LCD mit der ID 0 lcd.setCursor(2, 0); // Setze den Cursor auf Spalte 2, Zeile 0 lcd.write((byte)0); // Zeige das benutzerdefinierte Zeichen an der aktuellen Cursor-Position } void loop(){ }

Auf dem Bildschirm angezeigtes Ergebnis:

benutzerdefiniertes LCD-Zeichen

Mehrere benutzerdefinierte Zeichen

Wir können bis zu acht Sonderzeichen erstellen (von 0 bis 7 nummeriert). Das folgende Beispiel zeigt, wie man drei Zeichen erstellt und anzeigt.

#include <LiquidCrystal_I2C.h> // Erstelle ein LCD-Objekt, unter Verwendung der I2C-Adresse 0x27 mit 16 Spalten und 2 Zeilen LiquidCrystal_I2C lcd(0x27, 16, 2); // Definiere benutzerdefiniertes Zeichen 0 (Herzform) byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; // Definiere benutzerdefiniertes Zeichen 1 (Pfeil nach oben) byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; // Definiere benutzerdefiniertes Zeichen 2 (Pfeil nach unten) byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialisiere das LCD-Display lcd.backlight(); // Schalte die Hintergrundbeleuchtung des LCDs ein // Registriere das benutzerdefinierte Zeichen 0 mit dem Index 0 am LCD lcd.createChar(0, customChar0); // Registriere das benutzerdefinierte Zeichen 1 mit dem Index 1 am LCD lcd.createChar(1, customChar1); // Registriere das benutzerdefinierte Zeichen 2 mit dem Index 2 am LCD lcd.createChar(2, customChar2); // Setze den Cursor auf Spalte 2, Zeile 0 lcd.setCursor(2, 0); // Gib das benutzerdefinierte Zeichen 0 an der aktuellen Cursor-Position aus lcd.write((byte)0); // Setze den Cursor auf Spalte 4, Zeile 0 lcd.setCursor(4, 0); // Gib das benutzerdefinierte Zeichen 1 an der aktuellen Cursor-Position aus lcd.write((byte)1); // Setze den Cursor auf Spalte 6, Zeile 0 lcd.setCursor(6, 0); // Gib das benutzerdefinierte Zeichen 2 an der aktuellen Cursor-Position aus lcd.write((byte)2); } void loop() { }

Ergebnis auf der Flüssigkristallanzeige (LCD):

LCD: mehrere benutzerdefinierte Zeichen

Zusammenfassung: wie man ein benutzerdefiniertes Zeichen auf dem LCD verwendet

  • Verwenden Sie den Zeichengenerator oben, um Binärcode für Ihr Sonderzeichen zu erstellen.
  • Schreiben Sie den Binärcode Ihres Sonderzeichens auf (kopieren Sie ihn aus dem vorherigen Schritt).
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Erstelle eine personalisierte Figur und platziere sie bei einer Zahl zwischen 0 und 7 in der setup()-Funktion.
lcd.createChar(index, customChar);
  • Zeigen Sie jederzeit ein Sonderzeichen auf dem LCD an, entweder in der setup()- oder loop()-Funktion.
lcd.setCursor(column, row); // Setze den Cursor auf die angegebene Spalte und Zeile lcd.write((byte)index); // Zeige das an der Position 'index' gespeicherte benutzerdefinierte Zeichen an.

Weitere Funktionen

Fügen Sie die folgenden Funktionen nacheinander in die loop()-Funktion ein und fügen Sie nach jeder Funktion eine delay(5000) hinzu.

  • Leicht ablesbares LCD-Display
lcd.clear();
  • Bewege den Mauszeiger in die obere linke Ecke des Bildschirms.
lcd.home();
  • Positionieren Sie den Cursor an einer bestimmten Stelle (Spalte, Zeile).
lcd.setCursor(column, row);
  • Zeige den Cursor des LCD-Bildschirms.
lcd.cursor();
  • Schaltet den Cursor des LCD-Bildschirms aus.
lcd.noCursor();
  • Zeige den blinkenden LCD-Cursor.
lcd.blink()
  • Stoppt den blinkenden LCD-Cursor.
lcd.noBlink()

Fehlerbehebung bei LCD I2C

Wenn der Text nicht auf dem I²C-LCD erscheint, prüfen Sie bitte folgende Punkte:

  • Stelle die Helligkeit des LCD-Bildschirms ein, indem du das Potentiometer auf der Rückseite drehst.
  • Die I2C-Adresse des LCDs kann je nach Hersteller variieren. Sie ist normalerweise 0x27 oder 0x3F. Teste diese Adressen einzeln. Wenn keines der beiden funktioniert, verwende den folgenden Code, um die richtige I2C-Adresse zu ermitteln.
// I2C Adressen-Scanner-Programm #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); // Warte 5 Sekunden bis zum nächsten Scan }

Das Ergebnis, das im Serial Monitor angezeigt wird:

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!