Wie man I²C-Adressen einstellt und einen I²C-Scanner für LCD1602 und LCD2004 verwendet
In dieser Anleitung werden wir untersuchen, wie man I²C-Adressen festlegt und einen I²C-Scanner für die LCD1602- und LCD2004-Displays einsetzt. Das Verständnis der I²C-Kommunikation ist entscheidend, um diese LCD-Module in Ihre Arduino-Projekte zu integrieren, da es eine effiziente Datenübertragung und Steuerung ermöglicht. Am Ende dieser Anleitung werden Sie in der Lage sein, die I²C-Adressen Ihrer LCDs effektiv zu identifizieren und sicherzustellen, dass sie korrekt funktionieren.


Wir werden den BMP-180-Sensor im Rahmen dieses Projekts verwenden, der über I²C kommuniziert. Der Sensor liefert Temperatur- und Druckmesswerte, die entweder auf dem LCD1602 oder LCD2004 angezeigt werden können. Dieses Tutorial enthält Verdrahtungsanleitungen, Codebeispiele und eine Demonstration der erwarteten Ergebnisse. Für ein besseres visuelles Verständnis sehen Sie sich unbedingt das zugehörige Video an (im Video bei 00:00).
Hardware erklärt
Die Hauptkomponenten dieses Projekts sind der BMP-180-Sensor, ein LCD1602- oder LCD2004-Display und ein Arduino-Board. Der BMP-180 ist ein digitaler Drucksensor, der über das I²C-Protokoll kommuniziert und nur zwei Datenleitungen benötigt: SDA (Datenleitung) und SCL (Taktleitung). Die LCD-Displays sind ebenfalls I²C-kompatibel und lassen sich leicht mit demselben Kommunikationsprotokoll steuern, was eine saubere und effiziente Einrichtung ermöglicht.
Der BMP-180 arbeitet mit einer Versorgungsspannung zwischen 1,8 V und 3,6 V, was bedeutet, dass er über einen Spannungsregler versorgt werden kann, wenn Sie eine höhere Spannungsquelle verwenden. Die LCD-Anzeigen hingegen arbeiten typischerweise mit 5 V, was die Anbindung an ein Arduino-Board ohne zusätzliche Komponenten erleichtert.
Datenblatt-Details
| Hersteller | Bosch |
|---|---|
| Teilenummer | BMP-180 |
| Logik-/I/O-Spannung | 1.8 - 3.6 V |
| Versorgungsspannung | 1.8 - 3.6 V |
| Ausgangsstrom (pro Kanal) | 3.6 µA |
| Spitzenstrom (je Kanal) | 1 mA |
| Leitfaden zur PWM-Frequenz | Nicht zutreffend |
| Eingangslogik-Schwellenwerte | nicht zutreffend |
| Spannungsabfall / RDS(an)/ Sättigung | Nicht zutreffend |
| Thermische Grenzwerte | -40 bis +85 °C |
| Paket | 3,6 × 3,8 mm |
| Notizen / Varianten | Temperatur- und Drucksensor |
- Stellen Sie eine ordnungsgemäße Spannungsversorgung sicher: 1.8V bis 3.6V für BMP-180.
- Verwenden Sie Pull-up-Widerstände an den SDA- und SCL-Leitungen für eine stabile I²C-Kommunikation.
- Halten Sie die Leitungen kurz, um eine Signalverschlechterung zu vermeiden.
- Überprüfen Sie die korrekte I²C-Adresse während des Scanvorgangs.
- Monitor-Temperaturbereich: -40 bis +85 °C für BMP-180.
Verdrahtungsanleitung

Um den BMP-180-Sensor und das LCD-Display an dein Arduino anzuschließen, befolge die folgenden Schritte:

Zuerst verbinden Sie das BMP-180'sVnVerbinden Sie den Pin mit dem 5V-Ausgang am Arduino. Als Nächstes verbinden Sie dieGNDPin des BMP-180 an die Masse des Arduino. DerSDADer Pin des BMP-180 sollte mit dem Pin des Arduinos verbunden werden.A4Pin, während dieSCLPin verbindet sich mitA5.
Für das LCD1602 oder das LCD2004 verbinden SieVCCPin an die 5V am Arduino und dieGNDDen Pin ebenfalls an Masse anschließen. DerSDADer Pin des LCDs sollte auch mit ... verbunden werdenA4(gemeinsam mit BMP-180), und derSCLDer Pin sollte an ... angeschlossen werdenA5.
Diese Konfiguration ermöglicht beiden Geräten, über denselben I²C-Bus zu kommunizieren und sorgt so für einen sauberen und effizienten Aufbau.
Codebeispiele & Schritt-für-Schritt-Anleitung
Um nach I²C-Adressen zu scannen, verwenden wir einen einfachen Codeausschnitt. Der folgende Auszug initialisiert die I²C-Kommunikation und bereitet den seriellen Monitor vor:
#include
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
Dieser Code initialisiert die Wire-Bibliothek für I²C-Kommunikation und richtet den seriellen Monitor für die Ausgabe ein. Er ist wichtig für das Debugging und dafür, dass die I²C-Geräte erkannt werden.
Die loop-Funktion durchsucht den I²C-Bus nach Geräten und gibt deren Adressen aus:
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0) Serial.println("No I2C devices found\n");
delay(5000); // wait 5 seconds for next scan
}
Diese Schleife prüft jede Adresse von 1 bis 127 und versucht, mit vorhandenen Geräten zu kommunizieren. Wenn ein Gerät die Kommunikation bestätigt, wird seine Adresse im seriellen Monitor angezeigt. Dies ist ein entscheidender Schritt, um die I²C-Adresse Ihres LCDs oder anderer angeschlossener Geräte zu identifizieren.
Demonstration / Was Sie erwartet
Wenn der I²C-Scanner ausgeführt wird, sollten Sie Meldungen im seriellen Monitor sehen, die anzeigen, ob I²C-Geräte gefunden wurden. Im Erfolgsfall zeigt die Ausgabe die Adressen der angeschlossenen Geräte an, formatiert als hexadezimale Werte (z. B. I²C-Gerät gefunden an Adresse 0x27). Wenn keine Geräte gefunden werden, erscheint eine entsprechende Meldung.
Es ist wichtig, sicherzustellen, dass alle Verbindungen fest sitzen und die richtigen Spannungspegel anliegen, um Probleme bei der Geräteerkennung zu vermeiden (im Video bei 05:30).
Dinge, die Sie vielleicht brauchen
-
AmazonLCD1602-I2C bei Amazon kaufenamzn.to
-
AliExpressKaufe LCD1602-I2C bei AliExpresss.click.aliexpress.com
-
AliExpressKaufen Sie 10 Stück LCD1602-I2C von AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Arduino-Bibliotheken (zip)
-
LCD1602 LCD Arduino-Bibliothek von Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Fritzing-Datei
-
LCD2004-I2C
LCD2004-I2C.fzpz0.02 MB