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. Die beiden folgenden Dateien müssen heruntergeladen und auf dem Pico gespeichert werden:

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:

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk

 

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython

Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Pico WLAN Edition
Elektronik-Set Pico WLAN Edition

Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT

Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Sensor Edition
Elektronik-Set Sensor Edition

Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition

Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.

Elektronik-Set jetzt bestellen