Raspberry Pi Pico: LCD-1602-Display mit I2C-Modul programmieren

So ein Mikrocontroller wie der Raspberry Pi Pico verfügt über keine typischen Ausgabe-Schnittstelle, wie man es von einem Computer kennt. Im einfachsten Fall ist die Ausgabe auf das Leuchten einer oder mehrerer LEDs beschränkt. Wenn man Zeichen und Zahlen ausgeben will, dann eignen sich dafür ein- oder mehrstellige 7-Segment-Anzeigen. Allerdings ist man damit in den Darstellungsmöglichkeiten beschränkt.

Wenn es darum geht, Text und andere Zeichen darzustellen, dann ist ein HD44780-kompatibles LCD das Mittel der Wahl. Besonders beliebt sind LCD-1602-Displays mit einem Modul für die I2C-Schnittstelle. Das ist ein zweizeiliges LCD mit je 16 Zeichen. Durch das I2C-Modul zur Kommunikation mit dem Raspberry Pi Pico ist die Verdrahtung (4 Adern) und Ansteuerung (über eine Bibliothek) spielend leicht.

Im folgenden Aufbau geht es nur darum, das Display am Raspberry Pi Pico in Betrieb zu nehmen und ein kleines Programm auszuprobieren, das folgende Funktionen ausführt.

  • Zweizeiligen Text ausgeben
  • Bildschirm-Inhalt löschen
  • Punkte darstellen
  • Hintergrundbeleuchtung ausschalten
  • Hintergrundbeleuchtung einschalten
  • Display ausschalten
  • Display einschalten

Aufbau und Bauteile

Raspberry Pi Pico mit LCD 1602 Display mit I2C-Modul

  1. Verbinde zuerst den Raspberry Pi Pico mit dem USB vom Host-Computer.
  2. Verbinde dann das Display mit VCC (Pin 40) und GND (z. B. (Pin 38) vom Raspberry Pi Pico.
  3. Wenn das Display mit VCC und GND verbunden ist, sollte es angehen. Angezeigt wird aber noch nichts.
  4. Wenn das Display mit Strom versorgt ist, dann verbinde das Display mit I2C0 SDA (GPIO20, Pin 26) und I2C0 SDL (GPIO21, Pin 27) vom Raspberry Pi Pico.

Hinweis: Warum wählen wir gerade Pin 26 und 27? Diese Pins haben nur den I2C als Doppelbelegung. Man kommt nicht mit SPI, ADC oder UART in Konflikt.

Programmcode und Konfiguration

Dreh- und Angelpunkt der softwareseitigen Ansteuerung des 1602-Displays mit der I2C-Schnittstelle sind zwei Python-Bibliotheken. Eine für den I2C und das andere für das Display selber. Hierfür eignet sich die Lösungen vom User dhylands auf Github.

Es empfiehlt sich folgende Vorgehensweise:

1. Die Datei lcd_api.py herunterladen und auf dem Raspberry Pi Pico speichern.
2. Die Datei machine_i2c_lcd.py herunterladen und auf dem Raspberry Pi Pico speichern.

Damit hast Du die softwareseitigen Voraussetzungen zur Ansteuerungen des Displays erfüllt.
Der folgende Programmcode ist dann denkbar einfach. Zuerst werden die Bibliotheken eingebunden, die für die Ansteuerung wichtig sind. Anschließend werden die GPIO-Pins für I2C und dann das Display initialisiert. Und dann wird ein Text auf dem Display ausgegeben.

Anschließend werden noch ein paar Kommandos zur Steuerung des Displays ausgeführt. Was gerade aktiv oder deaktiv ist, wird in der Kommandozeile ausgegeben.

# Bibliotheken laden
from time import sleep_ms
from machine import I2C, Pin
from machine_i2c_lcd import I2cLcd

# Initialisierung I2C
i2c = I2C(0, sda=Pin(20), scl=Pin(21), freq=100000)

# Initialisierung LCD über I2C
lcd = I2cLcd(i2c, 0x27, 2, 16)

# Text in Zeilen
zeile_oben  = 'Hello World';
zeile_unten = 'Hurra ich lebe'

# Display-Zeilen ausgeben
lcd.putstr(zeile_oben + "\n" + zeile_unten)
sleep_ms(3000)

# Display-Inhalt löschen
lcd.clear()
sleep_ms(1000)

# Position im Display
for zeile in range (0,2):
    for spalte in range (0,16):
        lcd.move_to(spalte, zeile)
        lcd.putstr('.')
        sleep_ms(300)

print("Hintergrundlicht aus")
lcd.backlight_off()
sleep_ms(3000)

print("Hintergrundlicht an")
lcd.backlight_on()
sleep_ms(3000)

print("Display aus")
lcd.display_off()
sleep_ms(3000)

print("Display an")
lcd.display_on()
sleep_ms(3000)

Troubleshooting

Eigentlich ist die Ansteuerung eines LCD-1602-Displays mit I2C-Modul ziemlich idiotensicher. Trotzdem kann man dabei Fehler machen.
Wenn etwas nicht funktioniert, dann stelle bitte folgende Punkte sicher:

  1. Das Display ist mit Strom versorgt. Das ist dann der Fall, wenn das Display leuchtet.
  2. Das Display ist mit dem Raspberry Pi Pico korrekt verdrahtet. Die Leitungen für SDA und SDL des I2C werden gerne vertauscht.
  3. Auch die GPIO-Nummern (nicht die Pin-Nummern) müssen im Programmcode richtig eingetragen sein. Auch die können vertauscht sein.

Fehlermeldung „ValueError: bad SCL pin“

Das bedeutet, dass die Verbindung zum Display nicht stimmt. Der Pico findet an den konfigurierten Pins kein I2C-Gegenstelle.
Überprüfe die Verdrahtung und die GPIO-Nummern im Programmcode für SDA und SDL.

Das Display leuchtet, aber es wird kein Text oder kaum sichtbar angezeigt

Voraussetzung ist, Du hast ein Programm gestartet, dass auch tatsächlich einen Text ausgibt. Eine weitere Voraussetzung ist, dass Programm läuft ohne Fehler (auf der Kommandozeile).

Dann könnte folgendes Problem sein: Die Leuchtpunkte im Display sind zu schwach oder zu stark eingestellt.

Lösen lässt sich das dadurch, dass Du auf der Rückseite des Displays, auf dem sich das I2C-Modul befindet, das blaue Potentiometer mit einem feinen Kreuzschlitz-Schraubendrehter so einstellst, dass die Schrift im Display gut lesbar angezeigt wird.

Darf es etwas mehr sein?

Was könnte man mit dem Display alles anstellen? Grundsätzlich könnte alles ausgegeben werden, wofür die Kommandozeile verwendet wird. Allerdings ist ein Display für konkrete Projekte und Anwendungen viel spannender.

Weitere verwandte Themen:

Teilen:

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!