Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauche tiefer in die Welt von Raspberry Pi, Arduino und ESP32 mit Gleichgesinnten ein.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitig Zugang zu neuen Produktankündigungen und Sneak Peeks.

  • Exklusive Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu erschaffen? Klicken Sie auf [hier] und treten Sie noch heute bei!

17. Erkundung des I2C LCD1602 Displays

Willkommen zu unserem praktischen Leitfaden zur Nutzung des I2C LCD1602! In dieser Lektion entdecken wir die Grundlagen der Arbeit mit diesem vielseitigen Display-Modul. Du wirst lernen, wie du das I2C LCD1602 mit deinem Arduino einrichtest, seine eindeutige I2C-Adresse findest und die notwendigen Bibliotheken installierst, um es zum Laufen zu bringen. Am Ende wirst du wissen, wie man Befehle sendet und Text anzeigt, sodass deine Codezeilen in klare, lesbare Informationen auf dem Bildschirm umgewandelt werden.

Nach Abschluss dieses Kurses wirst du in der Lage sein:

  • Die grundlegenden Funktionen des I2C LCD1602 Moduls zu verstehen.

  • Zu lernen, wie du die I2C-Adresse von Geräten innerhalb der Arduino-Umgebung herausfindest.

  • Die Installation und Nutzung von Bibliotheken in der Arduino IDE zu beherrschen.

  • Eigene Nachrichten und Daten auf dem I2C LCD1602 anzuzeigen.

Baue die Schaltung auf

Benötigte Komponenten

1 * Arduino Uno R3

1 * I2C LCD1602

1 * Breadboard

1 * USB-Kabel

list_uno_r3

list_i2c_lcd1602

list_breadboard

list_usb_cable

Jumper-Kabel

list_wire

Aufbauschritte

Folge dem Schaltplan oder den folgenden Schritten, um deine Schaltung aufzubauen.

_images/17_lcd_connect.png
  1. Finde das I2C LCD1602 Modul.

_images/17_lcd_i2c_lcd1602.png
  • GND: Masse

  • VCC: Spannungsversorgung, 5V.

  • SDA: Serielle Datenleitung. Verbinde sie über einen Pullup-Widerstand mit VCC.

  • SCL: Serielle Taktleitung. Verbinde sie über einen Pullup-Widerstand mit VCC.

Wie wir alle wissen, bereichern LCDs und einige andere Anzeigen die Mensch-Maschine-Interaktion erheblich, sie haben jedoch einen gemeinsamen Nachteil. Wenn sie mit einem Controller verbunden sind, werden mehrere IO-Pins des Controllers belegt, der nicht so viele externe Ports hat. Dies schränkt auch andere Funktionen des Controllers ein.

Daher wurde das LCD1602 mit einem I2C-Modul entwickelt, um dieses Problem zu lösen. Das I2C-Modul enthält einen integrierten PCF8574 I2C-Chip, der serielle I2C-Daten in parallele Daten für die LCD-Anzeige umwandelt.

Hintergrundbeleuchtung/Kontrast

Die Hintergrundbeleuchtung kann durch eine Kurzschlusskappe aktiviert werden, indem du die Kappe entfernst, wird die Hintergrundbeleuchtung deaktiviert. Das blaue Potentiometer auf der Rückseite wird verwendet, um den Kontrast (das Verhältnis zwischen dem hellsten Weiß und dem dunkelsten Schwarz) einzustellen.

_images/17_lcd_back.jpg
  • Kurzschlusskappe: Die Hintergrundbeleuchtung kann durch diese Kappe aktiviert werden, entferne die Kappe, um die Hintergrundbeleuchtung zu deaktivieren.

  • Potentiometer: Wird zur Einstellung des Kontrasts verwendet (die Klarheit des angezeigten Textes), der im Uhrzeigersinn erhöht und gegen den Uhrzeigersinn verringert wird.

  1. Das Uno R3 Board verfügt über zwei Sätze von I2C-Pins. Du kannst das I2C LCD1602 mit beiden Pin-Sets verbinden.

_images/17_lcd_uno_i2c.jpg
  1. Nun verbinden wir das I2C LCD1602 mit dem Arduino Uno R3 Board.

_images/17_lcd_connect.png

Code-Erstellung - Abrufen der I2C-Adresse

Bevor du ein I2C-Gerät verwenden kannst, musst du normalerweise seine Adresse herausfinden. Schauen wir uns an, wie das geht.

  1. Öffne die Arduino IDE und starte ein neues Projekt, indem du im Menü „Datei“ „Neuer Sketch“ auswählst.

  2. Speichere deinen Sketch unter dem Namen Lesson17_I2C_Scanner mit Strg + S oder durch Klicken auf „Speichern“.

  3. Kopiere den folgenden Code in deinen neuen Sketch und speichere ihn.

#include <Wire.h>

void setup() {
    Wire.begin();
    Serial.begin(9600);
    while (!Serial); // Warten auf die serielle Verbindung
    Serial.println("\nI2C 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.println(address, HEX);

            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\n");
    }else {
        Serial.println("done\n");
    }
    delay(5000); // 5 Sekunden warten, bevor erneut gescannt wird
}
  1. Klicke auf den Upload-Button. Wenn dein I2C LCD1602 korrekt angeschlossen ist, wirst du Informationen sehen. Die Standardadresse ist im Allgemeinen 0x27, in einigen Fällen kann sie 0x3F sein.

Scanning...
I2C device found at address 0x27
done

Code-Erstellung - Nachrichten anzeigen

Schauen wir uns nun an, wie man gewünschte Nachrichten auf dem I2C LCD1602 anzeigt.

  1. Öffne die Arduino IDE und starte ein neues Projekt, indem du im Menü „Datei“ „Neuer Sketch“ auswählst.

  2. Speichere deinen Sketch unter dem Namen Lesson17_I2C_Show mit Ctrl + S oder durch Klicken auf „Speichern“.

  3. Um das I2C LCD1602-Modul zu verwenden, musst du die entsprechende Bibliothek einbinden. Anders als die Servo-Bibliothek, die wir zuvor verwendet haben, ist die benötigte Bibliothek für das I2C LCD1602 nicht standardmäßig in der Arduino IDE enthalten. Du musst sie im Bibliotheks-Manager suchen und installieren.

Suche im Bibliotheks-Manager nach LiquidCrystal I2C und klicke auf INSTALLIEREN.

_images/17_lcd_install_lib.png
  1. Nach Abschluss der Installation erhältst du eine Benachrichtigung. Normalerweise enthält die Bibliothek einige Beispielcodes, um dir das Lernen der Funktionen zu erleichtern. Du findest diese Beispiele, indem du auf Datei -> Beispiele -> LiquidCrystal I2C klickst. Es gibt drei Beispielcodes; du kannst einen davon öffnen, auf dein Arduino-Board hochladen und sehen, was passiert.

  2. Beginnen wir nun mit dem Programmieren. Vor der Nutzung jeder Bibliothek ist es wichtig, sie in deinem Sketch einzubinden.

  • Wire.h ist entscheidend für die I2C-Kommunikation und ermöglicht die Schnittstelle mit dem LCD.

  • LiquidCrystal_I2C.h ist speziell dafür ausgelegt, LCD-Displays zu steuern, die über den I2C-Bus verbunden sind.

#include <Wire.h>               // Bindet die I2C-Kommunikationsbibliothek ein.
#include <LiquidCrystal_I2C.h>  // Bindet die Bibliothek zur Steuerung des I2C LCD ein.


void setup() {
    // Code, der einmalig ausgeführt wird:

}
  1. Erstelle nun eine Instanz der LiquidCrystal_I2C-Klasse namens lcd. Die Parameter (0x27, 16, 2) geben die I2C-Adresse des LCDs (0x27) sowie an, dass das Display 16 Zeichen pro Zeile und 2 Zeilen hat.

#include <Wire.h>               // Bindet die I2C-Kommunikationsbibliothek ein.
#include <LiquidCrystal_I2C.h>  // Bindet die Bibliothek zur Steuerung des I2C LCD ein.

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Initialisiert das LCD an Adresse 0x27 für ein 16x2 Display.

void setup() {
    // Code, der einmalig ausgeführt wird:

}
  1. Im void setup()-Block wird das LCD-Display mit lcd.init() initialisiert und die Hintergrundbeleuchtung mit lcd.backlight() eingeschaltet. Dadurch wird die Anzeige sichtbar.

#include <Wire.h>               // Bindet die I2C-Kommunikationsbibliothek ein.
#include <LiquidCrystal_I2C.h>  // Bindet die Bibliothek zur Steuerung des I2C LCD ein.

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Initialisiert das LCD an Adresse 0x27 für ein 16x2 Display.

void setup() {
    // Code, der einmalig ausgeführt wird:
    lcd.init();       // Initialisiert das LCD
    lcd.backlight();  // Schaltet die Hintergrundbeleuchtung ein.
}
  1. Beginne damit, „Let’s count!“ in Zeile 0, Spalte 0 des I2C LCD1602 anzuzeigen (das ist eigentlich die erste Zeile und die erste Spalte). Verwende die Funktion lcd.setCursor(), um den Cursor auf Zeile 0, Spalte 0 zu positionieren, und verwende anschließend lcd.print(), um die gewünschten Zeichen auszugeben. Denke daran, den Text in doppelte Anführungszeichen („“) zu setzen.

_images/17_lcd_row_column.png
void loop() {
    lcd.setCursor(0, 0);       // Positioniert den Cursor in die obere linke Ecke.
    lcd.print("Let's count");  // Zeigt "Let's count" an.
}
  1. Als Nächstes zeige „Count“ gefolgt vom Zählwert in Zeile 1, Spalte 0 an (das ist eigentlich die zweite Zeile und die erste Spalte). Beachte, dass bei der Ausgabe von Zeichen und Strings diese in doppelte Anführungszeichen („“) gesetzt werden müssen, während für Variablen nur der Variablenname in den Klammern stehen muss.

void loop() {
    lcd.setCursor(0, 0);       // Positioniert den Cursor in die obere linke Ecke.
    lcd.print("Let's count");  // Zeigt "Let's count" an.
    lcd.setCursor(0, 1);       // Verschiebt den Cursor in die zweite Zeile.
    lcd.print("Count: ");      // Zeigt "Count" an.
    lcd.print(count);          // Gibt den aktuellen Zählwert neben "Count" aus.
}
  1. Lass die Variable count jede Sekunde um eins erhöhen, indem du count++ verwendest, was der Variable selbst 1 hinzufügt.

void loop() {
    lcd.setCursor(0, 0);       // Positioniert den Cursor in die obere linke Ecke.
    lcd.print("Let's count");  // Zeigt "Let's count" an.
    lcd.setCursor(0, 1);       // Verschiebt den Cursor in die zweite Zeile.
    lcd.print("Count: ");      // Zeigt "Count" an.
    lcd.print(count);          // Gibt den aktuellen Zählwert neben "Count" aus.
    delay(1000);               // Wartet eine Sekunde.
    count++;                   // Erhöht den Zähler um 1.
}
  1. Leere abschließend das Display mit lcd.clear(), um es für die nächste Zahl vorzubereiten.

#include <Wire.h>               // Inkludiert die I2C-Kommunikationsbibliothek.
#include <LiquidCrystal_I2C.h>  // Inkludiert die Bibliothek zur Steuerung des I2C LCD.

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Initialisiert das LCD an Adresse 0x27 für ein 16x2 Display.

int count = 0;  // Zählervariable für die Erhöhung.

void setup() {
    lcd.init();       // Initialisiert das LCD-Display.
    lcd.backlight();  // Schaltet die Hintergrundbeleuchtung des LCDs ein.
}

void loop() {
    lcd.setCursor(0, 0);       // Positioniert den Cursor in die obere linke Ecke.
    lcd.print("Let's count");  // Zeigt "Let's count" an.
    lcd.setCursor(0, 1);       // Verschiebt den Cursor in die zweite Zeile.
    lcd.print("Count: ");      // Zeigt "Count" an.
    lcd.print(count);          // Gibt den aktuellen Zählwert neben "Count" aus.
    delay(1000);               // Wartet eine Sekunde.
    count++;                   // Erhöht den Zähler um 1.
    lcd.clear();               // Leert das Display für die nächste Iteration.
}
  1. Sobald du den Code fertiggestellt hast, kannst du auf Upload klicken, um die Ergebnisse zu sehen. Du wirst sehen, dass die erste Zeile des I2C LCD1602 „Let’s count!“ anzeigt und die zweite Zeile „Count: „ gefolgt vom Zählwert.

Bemerkung

Wenn deine Verdrahtung korrekt ist, aber keine Zeichen auf dem LCD angezeigt werden, kannst du es umdrehen und mit einem Schraubenzieher den blauen Potentiometer einstellen. Drehe ihn, bis die Zeichen klar sichtbar sind und der Hintergrund relativ gedimmt ist, was auf eine erfolgreiche Einstellung hinweist.

_images/17_lcd_back.jpg
  1. Denke schließlich daran, deinen Code zu speichern und deinen Arbeitsplatz aufzuräumen.

Frage

Wie sollte der Code geändert werden, wenn du „Let’s count“ in der zweiten Spalte der ersten Zeile des I2C LCD1602 anzeigen möchtest?

Zusammenfassung

In dieser Lektion haben wir gelernt, wie man mit dem Arduino Uno R3-Board unter Verwendung des I2C LCD1602-Moduls interagiert. Du hast gelernt, wie du die I2C-Adresse abrufst und die erforderlichen Bibliotheken in der Arduino IDE installierst, um das LCD-Modul zu steuern. Durch das Schreiben und Hochladen von Code hast du erfolgreich Zeichen und Zähldaten auf dem LCD angezeigt. Diese Schritte haben nicht nur unser Verständnis des I2C-Kommunikationsprotokolls vertieft, sondern auch unsere Fähigkeit verbessert, mit Anzeigegeräten umzugehen.