Raspberry Pi Pico: OLED-Display zum Anzeigen der Kommandozeile
Ein mehrzeiliges OLED-Display kann vergleichsweise einfach als Ersatz für die Anzeige der Kommandozeile in der Thonny Python IDE verwendet werden. Ein OLED-Display mit 128 x 64 Pixeln hat 6 ganze Zeilen mit jeweils 16 Zeichen.
So ein OLED-Display ist dann praktisch, wenn man den Raspberry Pi Pico ohne Host-Computer betreibt, aber trotzdem aussagekräftige Text-Informationen bekommen möchte, die man eigentlich auf der Kommandozeile der Thonny Python IDE per „print“ ausgeben würde.
Wenn Du noch keine Erfahrung mit einem OLED-Display hast, dann empfiehlt es sich zuerst mit der Ansteuerung über den I2C-Schnittstelle und die Programmierung vertraut zu machen. Außerdem wird eine externe Bibliothek benötigt.
- Mehr Informationen zum OLED-Display mit SSD1306 oder SH1106
- Raspberry Pi Pico: OLED-Display mit I2C programmieren (SSD1306)
Aufbau und Bauteile
Hinweis: In diesem Beispiel wird ein 0,96 Zoll großes OLED-Display mit 128 x 64 Pixeln verwendet.
Raspberry Pi Pico | Display | |
---|---|---|
Pin 38 | GND | GND |
Pin 36 | VCC +3,3V | VCC |
Pin 22 | GPIO 17 | SCL/SCK |
Pin 21 | GPIO 16 | SDA |
MicroPython-Bibliotheken für I2C und das Display
Um das Display über die I2C-Schnittstelle softwareseitig ansteuern zu können, ist eine externe MicroPython-Bibliothek erforderlich. Der Download und die Installation kann bequem über den Paketmanager der Thonny Python IDE erfolgen.
Programmcode
In diesem Programmcode sind zwei Besonderheiten:
- Es gibt eine Funktion mit dem Namen „print_oled“, die das selbe macht, wie „print“ auf der Kommandozeile in der Thonny Python IDE. In der Regel kann man „print“ durch „print_oled“ ersetzen.
- Über Ausnahmebehandlungen ist sichergestellt, dass der Programmcode auch dann noch funktioniert, wenn kein Display oder wenn es fehlerhaft angeschlossen sein sollte. In dem Fall wird alles per „print“ auf der Kommandozeile ausgegeben.
# Bibliotheken laden from machine import Pin import time # Zeilen für die Shell shell = [] # I2C und OLED-Display Initialisieren try: from machine import I2C import ssd1306 i2c = I2C(0, scl=Pin(17), sda=Pin(16)) display = ssd1306.SSD1306_I2C(128, 64, i2c) display.fill(0) display.show() except: print('Kein Display verfügbar') # Funktion: OLED-Display als Shell def print_oled(*args): try: display.fill(0) text = '' for x in (args): text += str(x) + ' ' shell.append(text) next_row = len(shell) - 1 for row in range (50, 0, -10): display.text(shell[next_row], 0, row) if next_row == 0: break next_row = next_row - 1 display.show() except: print(*args) print('Schleife starten!') for Nummer in range(1, 10): print_oled('Nummer:', Nummer) time.sleep(0.5) print('Schleife beendet!')
Hinweis: Natürlich ersetzt die benutzerdefinierte Funktion die originale Funktion nicht. Es unterstützt nicht den vollständigen Funktionsumfang von „print“. Es kann aber ausreichen, wenn man den Raspberry Pi Pico ohne Host-Computer betreibt und trotzdem aussagekräftige Textinformationen ausgeben will.
Weitere verwandte Themen:
- Raspberry Pi Pico: LCD-1602-Display mit I2C-Modul programmieren
- Raspberry Pi Pico: 4-fach 7-Segment-Anzeige programmieren (TM1637)
Frag Elektronik-Kompendium.de
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: 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.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.