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
- Verbinde zuerst den Raspberry Pi Pico mit dem USB vom Host-Computer.
- Verbinde dann das Display mit VCC (Pin 40) und GND (z. B. (Pin 38) vom Raspberry Pi Pico.
- Wenn das Display mit VCC und GND verbunden ist, sollte es angehen. Angezeigt wird aber noch nichts.
- 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:
- Das Display ist mit Strom versorgt. Das ist dann der Fall, wenn das Display leuchtet.
- Das Display ist mit dem Raspberry Pi Pico korrekt verdrahtet. Die Leitungen für SDA und SDL des I2C werden gerne vertauscht.
- 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.
- Raspberry Pi Pico: Digitales Thermometer mit Display
- Raspberry Pi Pico: Anwesenheitserkennung für ein Display mit PIR Motion Detector (HC-SR501)
- Raspberry Pi Pico: Anwesenheitserkennung für ein Display mit Ultraschallsensor (HC-SR04P)
- Raspberry Pi Pico: Abstandsmessung mit Ultraschallsensor (HC-SR04P) auf einem Display anzeigen (LCD-1602 mit I2C)
Weitere verwandte Themen:
- Raspberry Pi Pico: Temperatur-Messung und Temperatur anzeigen
- Raspberry Pi Pico: Temperaturregler / Temperaturregelung
- Elektronik mit dem Raspberry Pi Pico
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)
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 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 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.