OLED 128x64 Display für den Arduino

Das Monochrome 0.96" 128x64 OLED graphic display ist eine feine Sache, um schnell und unkompliziert Ausgaben des Arduino darzustellen.

Das Original von Adafruit ist mir dann doch etwas zu teuer und ich habe mich für die Variante aus China entschieden.
Gekauft habe ich das Display in der verlinkten eBay Auktion (ist nicht das absolut Billigste, aber im Allgemeinen ist die Lieferung von diesem Händler recht flott (2 bis 4 Wochen)

Um mit dem Arduino zu kommunizieren, benötigt man eine Bibliothek für die Arduino IDE.
Entschieden habe ich mich für die Library: OLED_I2C

Leider kann man in dieser Bibliothek die benutzte I2C Adresse nicht einstellen.
Ich habe diese Bibliothek etwas an meine Belange angepasst, zB auch die mitgelieferten Zeichensätze MediumNumbers und BigNumbers um ein Leerzeichen ergänzt. Dies benötige ich für die Anzeige des digitalen Meßschiebers (wenn das Projekt funktionsfähig ist, gibt es dazu eine Beschreibung)

 

Display testen

Das erste Versuchsprojekt war eine analoge Uhr, die zwar auch in den Beispielen vorhanden war, aber überhaupt nicht funktionieren wollte.

Zusätzlich benötigt man dazu noch die Library: DS3231, die ich ebenfalls etwas erweitert habe (um deutsche Monatsnamen und Wochentage)

Zur Beschaltung gibt es nicht viel zu sagen: Die beiden Module (Display und Uhr DS3231) werden am Arduino an den I2C Bus angeschlossen.

Am Arduino NANO sind dies die Anschlüsse:

A4 - SDA
A5 - SCL

Um das Beispiel wie auf den Fotos zu probieren, beide Bibliotheken von hier herunterladen und in die Arduino IDE einbinden
Sketch -> Bibliothek einbinden -> .ZIP - Bibliothek hinzufügen -> hier nacheinander die beiden *.zip Files auswählen

Wenn alles geklappt hat, sollten auch die Beispiele vorhanden sein
Datei -> Beispiele -> OLED_I2C_FW -> Arduino ->  (passendes Display auswählen)

Das Beispiel analog Uhr findet sich nur unter 128x64

in den Beispielen muss die passende I2C Adresse ausgewählt werden (0x3C oder 0x3D)

Auf dem Display kann man diese Adresse durch umlöten eines SMD Widerstandes ändern, aufgedruckt sind 0x78 und 0x7A
Es ist tatsächlich richtig! die Unterschiede kann man ergooglen, liegen in einer falschen Interpretation der I2C Adresse, es wird ein Bit falsch ausgewertet.

Um die Adresse, bzw. die Funktion des jeweiligen I2C Moduls zu testen empfiehlt sich ein toller Sketch: i2c_scanner

 

Gehäuse

Das auf den Bildern dargestellte Display Gehäuse ist hier 0.96" 128x64 OLED Snapfit case zu finden

 

Download

Display Bibliothek: OLED_I2C_FW.zip

RTC DS321 Bibliothek: DS3231_FW.zip

 

Totalausfall / Fehlersuche

Die diversen Versuch liefen recht erfolgreich, doch dann die plötzliche Ernüchterung:

Von einem Moment zum Anderen gab eins von zwei Displays keinen Piep mehr von sich.
Die Suche im Netz verlief auch nicht sehr erfolgreich.

Hier die Lösung zu meinem Fehler:
Nachdem ich erst einmal mit dem 2. Display gecheckt habe, dass sonst nichts Anderes defekt ist, die Fehlersuche am Display

Ist eventuell der Spannungsregler (U2) defekt? - Nein, die Messung ergibt, Alles iO

Dann der Check mit dem I2C Scanner: Gerät antwortet nicht ...
Da ich sonst nicht mehr viel tun konnte, habe ich sämtliche Lötstellen auf der Platine nachgelötet.

Siehe da, der nächste I2C Scan war erfolgreich!

Ich vermute, es war eine kalte Lötstelle am Display Kabel, die Lötstellen sahen eher verklebt als verlötet aus.

Dies war bis jetzt der erste "richtige" Ausfall von China Bauteilen, der aber bis jetzt noch beherrschbar blieb.