1,3 Zoll OLED in Betrieb nehmen

Hallo und willkommen zu unserem heutigen Blog-Beitrag.

 

Unsere Support-Abteilung bekommt immer wieder Anfragen von Kunden bei denen das 1,3 Zoll OLED nicht funktioniert.

Falls Sie den Anweisungen in unserem eBook zum OLED Display folgen, und den Code auf den Arduino hochladen, erwartet Sie folgender Anblick:

Fehlerhaftes OLED Display?

 

Ich würde an dieser Stelle auch Vermuten dass mein Display defekt ist. Dabei fehlt dem OLED nichts.

 

Ursache für die fehlerhafte Anzeige ist, dass dieses Display nicht mit dem SSD1306, sondern mit dem SH1106 Controller-Chip ausgestattet ist. Die im eBook verwendete Adafuit_SSD1306 Bibliothek unterstützt diesen Chip jedoch nicht.

Deswegen nutzen ich im heutigen Beispiel die weit verbreitete U8g2 Bibliothek von Oliver Kraus. Sie können diese ganz einfach über den Arduino Bibliotheksverwalter nachinstallieren, oder bei GitHub herunterladen.

u8g2 Lib

Nachdem die Bibliothek installiert wurde, öffnen wir das Beispiel "Datei" -> "Beispiele" -> "u8g2" -> "full_buffer" -> "GraphicsTest".

Wie bereits aus dem Bildschirmfoto oben zu erahnen, unterstützt die u8g2 Bibliothek eine Vielzahl an Displays und Controllern. 

Ab Zeile 55 kommt eine sehr lange Liste mit Beispielkonfigurationen.

Tipp: Sie können die Zeilennummern anzeigen lassen inden Sie bei "Datei" -> "Voreinstellungen" den Haken bei "Zeilennummern anzeigen" setzen. 

Unser Display hat 128x64 Pixel, ist über I²C Bus angeschlossen, und nutzt den SH1106 Chip. 

Wir suchen uns also den passenden Eintrag, beginnend mit "U8G2_SH1106_128X64_NONAME_F_HW_I2C" welchen wir auf Zeile 75 finden, und kommentieren die Zeile aus, indem  wir die beiden Schrägstricke am Anfang der Zeile (//) auskommentieren.

 

Nach dieser kurzen Änderung können wir den Code auf unseren Mikrocontroller hochladen, und siehe da: das Display funktioniert.

Oled 1,3" am Nano

 

Falls das Hochladen nicht gelingen sollte, weil der Speicher des Arduinos nicht ausreichen sollte, können Sie alternativ die Beispieldatei unter "Datei" -> "Beispiele" -> "U8g2" -> "page_buffer" -> "GraphicsTest" verwenden. Nur muss dann Zeile 76 auskommentiert werden.

 

Hoffentlich konnten wir mit dem heutigen Blog-Beitrag vielen Kunden bei der Inbetriebnahme unseres tollen OLED Displays helfen.

Ich wünsche einen guten Start in die Woche, und verabschiede mich bis zum nächsten Blog-Beitrag.

Ihr Markus Neumann

14 Kommentare

Dirk

Dirk

Hallo Andreas,
ist schon alles gelöst.
Die angebotene Bibliothek auf der Produktseite ist falsch.
Dieses wurde schon mit dem Support besprochen….
Trotzdem Danke

Grüße
Dirk

Andreas Wolter

Andreas Wolter

@Dirk: So wie ich das sehe, möchtest du das OLED an einen Raspi anschließen. In diesem kostenlosen ebook: https://www.az-delivery.de/products/1-3-zoll-display-kostenfreies-e-book
sollte die Installation für den Raspi mit der Library von rm-hull beschrieben sein. Die wurde allerdings umbenannt von ssd1306 in luma.oled
hier der link: https://github.com/rm-hull/luma.oled
Nach der Installation müssten dann Beispiele ausführbar sein. Dieses Display nutzt den SH1106, nicht den SSD1306. Das ist wichtig!

Probiere es mal damit.

Grüße,
Andreas

Dirk

Dirk

Bei mir kommt folgender Fehler, wenn ich ein Beispiel starten will. disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST) File “/usr/local/lib/python3.7/dist-packages/Adafruit_SSD1306-1.6.1-py3.7.egg/Adafruit_SSD1306/SSD1306.py”, line 288, in init File “/usr/local/lib/python3.7/dist-packages/Adafruit_SSD1306-1.6.1-py3.7.egg/Adafruit_SSD1306/SSD1306.py”, line 89, in init File “/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO-1.0.4-py3.7.egg/Adafruit_GPIO/GPIO.py”, line 278, in setup

TypeError: argument 1 must be str, not int

Die suche im Netz bringt, das was geändert wurde.
Könnt Ihr Bitte die Bibliothek neu anpassen.
Ich möchte 2 Displays jeweils in einen Raspberry pi4 verbauen.
Sonst fliegen hier drei Displays unnütz rum….

Grüße
Dirk

Gerald

Gerald

Hallo Tobias, möglicherweise liegt das Problem am I2C Takt. Display Treiber nutzen meist eine sehr hohe Taktfrequenz und möglicherweise kommt damit das RTC Modul nicht zurecht und blockiert den Bus. Versuche mal die Funktion
Wire.setClock(100000);
am Ende der Setup Funktion aufzurufen. Damit wird die Taktfrequenz wieder auf 100kHz zurückgesetzt, auch dann, wenn der Display Treiber bei der Initialisierung eine höhere Frequenz gesetzt hat.

Tobias

Tobias

Hallo,

ich habe ein 1.3 I2C OLED Display SH1106 an einen Arduino Uno angeschlossen. Zusätzlich hängt eine RTC DS3231 daran. Die beiden Module teilen sich jeweils die PINS A4 und A5. So weit, so gut.
Wenn ich jetzt irgendeinen Beispiel Sketch aus der Lib U8X8 oder U8g2 verwende, hängt sich der komplette Arduino nach ein paar Sekunden komplett auf und das Bild auf dem OLED Display bleibt stehen.

Sobald ich die RTC abstecke, funktioniert alles wunderbar.. Ich will aber gerne die Uhrzeit auf dem Display anzeigen…
Ist das Problem bekannt?

Grüße,
Tobias

Noa_Berlin

Noa_Berlin

Super… Markus Neumann, Vielen Dank für diesen Blog, Display funktioniert, hätte ohne diesen Beitrag den Fehler niemals finden können.
Herzlichen Dank !!! Wie schön wenn der Schmerz und Frust nachlässt ;-)

Faby

Faby

Hallo AZ-Delivery-Team,

bekomme das Display nicht zum laufen. Nutze einen ESP32 mit Arduino-Umgebung.
Finde das Display auf dem I2C Bus. Aber es zeigt nichts an, Habe schon mehrere Bibliotheken getestet.
Das komplette Display bleibt einfach komplett dunkel :-(

Viele Grüße

Moritz

Moritz

Die Libary für den Raspberry ist auf der Produkteseite in unserem Shop verlinkt.

Mario Koch

Mario Koch

Soweit so gut, aber was mache ich, wenn ich einen RaspberryPi zum Ansteuern verwende?
Für gewöhnlich benötige ich eine Bibliothek für Python od. JavaScript.

Jens Borrmann

Jens Borrmann

Super Beitrag. Dank an Oliver Kraus und Markus Neumann.

Peter Kraeft

Peter Kraeft

Hallo Oliver,
perfekt.
Gruß und vielen Dank
Peter

Peter Kraeft

Peter Kraeft

Hallo Oliver,
perfekt.
Gruß und vielen Dank
Peter

Oliver

Oliver

Hallo Peter

Sämtliche Zeichensätze der u8g2 sind hier verlinkt: https://github.com/olikraus/u8g2/wiki/fntlistall

Das Reference Manual zur U8g2 befindet sich hier: https://github.com/olikraus/u8g2/wiki/u8g2reference

Grüße,
Oliver

Peter Kraeft

Peter Kraeft

Hallo, liebes Team.
Ich habe das 1.3 OLED mit der U8G zum laufen gebracht. Mit einem DHT11 kann ich Temp und Humi anzeigen. Gibt es eine Dokumentation der der Befehle und Zeichensätze?
Viele Grüße Peter

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert